Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'core/org.eclipse.stem.core/src/org')
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/file/File.java29
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/file/FileAdapter.java41
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/file/FileAdapterFactory.java24
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/file/IdentifiableFileAdapter.java46
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/file/IdentifiableFileAdapterFactory.java37
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/history/HistoryExtendedListener.java21
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/history/HistoryProvider.java65
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/history/HistoryProviderAdapter.java111
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/history/HistoryProviderAdapterFactory.java72
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/time/TimeProvider.java26
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/time/TimeProviderAdapter.java31
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/time/TimeProviderAdapterFactory.java72
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/Constants.java250
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/CorePlugin.java157
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/STEMBinaryResourceFactoryImpl.java45
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/STEMURI.java205
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/STEMXMIResourceFactoryImpl.java119
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/Utility.java401
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/CommonFactory.java105
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/CommonPackage.java1384
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/DoubleValue.java86
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/DoubleValueList.java76
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/DoubleValueMatrix.java49
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/DublinCore.java841
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/Identifiable.java93
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/IdentifiableFilter.java26
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/SanityChecker.java34
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/StringValue.java59
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/StringValueList.java49
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/CommonFactoryImpl.java229
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/CommonPackageImpl.java800
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/DoubleValueImpl.java243
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/DoubleValueListImpl.java226
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/DoubleValueMatrixImpl.java155
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/DublinCoreImpl.java1617
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/IdentifiableFilterImpl.java168
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/IdentifiableImpl.java419
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/StringValueImpl.java189
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/StringValueListImpl.java156
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/CommonEditPlugin.java97
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/CommonItemProviderAdapterFactory.java351
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/CoreEditPlugin.java97
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/DoubleValueItemProvider.java187
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/DoubleValueListItemProvider.java206
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/DoubleValueMatrixItemProvider.java174
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/DublinCoreItemProvider.java664
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/IdentifiableFilterItemProvider.java125
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/IdentifiableItemProvider.java267
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/StringValueItemProvider.java162
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/StringValueListItemProvider.java174
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/util/CommonAdapterFactory.java316
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/util/CommonSwitch.java346
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/Experiment.java99
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/ExperimentFactory.java51
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/ExperimentPackage.java242
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/impl/ExperimentFactoryImpl.java119
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/impl/ExperimentImpl.java331
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/impl/ExperimentPackageImpl.java273
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/provider/ExperimentItemProvider.java348
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/provider/ExperimentItemProviderAdapterFactory.java207
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/util/ExperimentAdapterFactory.java183
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/util/ExperimentSwitch.java185
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/Displayable.java16
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/DynamicEdgeLabel.java23
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/DynamicLabel.java115
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/DynamicNodeLabel.java23
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/Edge.java171
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/EdgeLabel.java40
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/Exchange.java115
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/ExchangeType.java244
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/Graph.java314
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/GraphFactory.java96
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/GraphPackage.java3399
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/GraphPartitioner.java86
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/IntegrationLabel.java163
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/IntegrationLabelValue.java155
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/Label.java98
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/LabelValue.java41
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/Node.java66
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/NodeLabel.java40
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/ResettableAdapter.java25
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/SimpleGraphPartitioner.java24
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/StaticEdgeLabel.java33
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/StaticLabel.java27
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/StaticNodeLabel.java34
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/UnresolvedIdentifiable.java138
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/DynamicEdgeLabelImpl.java254
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/DynamicLabelImpl.java403
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/DynamicNodeLabelImpl.java284
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/EdgeImpl.java727
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/EdgeLabelImpl.java212
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/ExchangeImpl.java305
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/GraphFactoryImpl.java316
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/GraphImpl.java969
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/GraphPackageImpl.java1514
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/GraphPartitionerImpl.java206
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/IntegrationLabelImpl.java403
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/IntegrationLabelValueImpl.java250
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/LabelImpl.java299
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/LabelValueImpl.java72
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/NodeImpl.java241
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/NodeLabelImpl.java237
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/SimpleGraphPartitionerImpl.java150
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/StaticEdgeLabelImpl.java70
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/StaticLabelImpl.java47
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/StaticNodeLabelImpl.java87
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/URIToEdgeMapEntryImpl.java331
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/URIToIdentifiableMapEntryImpl.java332
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/URIToLabelMapEntryImpl.java331
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/URIToNodeLabelMapEntryImpl.java331
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/URIToNodeMapEntryImpl.java331
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/UnresolvedIdentifiableImpl.java436
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/DynamicEdgeLabelItemProvider.java132
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/DynamicLabelItemProvider.java169
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/DynamicNodeLabelItemProvider.java132
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/EdgeItemProvider.java318
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/EdgeLabelItemProvider.java168
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/ExchangeItemProvider.java208
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/GraphEditPlugin.java99
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/GraphItemProvider.java1047
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/GraphItemProviderAdapterFactory.java310
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/GraphPartitionerItemProvider.java151
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/GraphTimeProviderAdapterFactory.java150
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/IntegrationLabelItemProvider.java231
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/IntegrationLabelValueItemProvider.java147
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/LabelItemProvider.java201
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/LabelValueItemProvider.java115
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/NodeItemProvider.java189
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/NodeLabelItemProvider.java143
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/SimpleGraphPartitionerItemProvider.java113
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/StaticEdgeLabelItemProvider.java121
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/StaticLabelItemProvider.java128
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/StaticNodeLabelItemProvider.java122
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/util/GraphAdapterFactory.java637
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/util/GraphSwitch.java769
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/Logger.java22
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/LoggerFactory.java37
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/LoggerPackage.java152
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/impl/LoggerFactoryImpl.java86
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/impl/LoggerImpl.java43
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/impl/LoggerPackageImpl.java227
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/provider/LoggerItemProvider.java128
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/provider/LoggerItemProviderAdapterFactory.java177
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/util/LoggerAdapterFactory.java178
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/util/LoggerSwitch.java180
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/math/BinomialDistributionUtil.java80
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/Decorator.java217
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/DisplayableCanonical.java14
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/EdgeDecorator.java31
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/GraphDecorator.java30
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/IntegrationDecorator.java60
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/Model.java154
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/ModelFactory.java96
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/ModelPackage.java1055
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/NodeDecorator.java30
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/STEMTime.java88
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/DecoratorImpl.java488
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/EdgeDecoratorImpl.java55
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/GraphDecoratorImpl.java54
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/IntegrationDecoratorImpl.java93
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/ModelFactoryImpl.java183
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/ModelImpl.java661
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/ModelPackageImpl.java559
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/NodeDecoratorImpl.java54
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/STEMTimeImpl.java209
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/DecoratorItemProvider.java183
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/EdgeDecoratorItemProvider.java107
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/GraphDecoratorItemProvider.java107
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/IntegrationDecoratorItemProvider.java116
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/ModelEditPlugin.java102
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/ModelItemProvider.java366
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/ModelItemProviderAdapterFactory.java327
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/NodeDecoratorItemProvider.java101
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/STEMTimeItemProvider.java159
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/util/ModelAdapterFactory.java315
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/util/ModelSwitch.java353
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/DoubleModifier.java86
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/DoubleNOPModifier.java24
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/DoubleRangeModifier.java100
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/DoubleSequenceModifier.java30
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/FeatureModifier.java128
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/IntegerModifier.java86
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/IntegerNOPModifier.java24
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/IntegerRangeModifier.java99
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/IntegerSequenceModifier.java28
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/LongModifier.java86
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/LongNOPModifier.java24
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/LongRangeModifier.java98
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/LongSequenceModifier.java28
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/Modifiable.java54
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/Modifier.java119
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/ModifierFactory.java222
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/ModifierPackage.java3795
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/NOPModifier.java24
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/RangeModifier.java29
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/STEMTimeModifier.java87
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/STEMTimeNOPModifier.java24
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/STEMTimeRangeModifier.java98
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/STEMTimeSequenceModifier.java29
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/SequenceModifier.java76
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/SingleValueModifier.java21
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/StringNOPModifier.java24
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/StringSequenceModifier.java28
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/DoubleModifierImpl.java258
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/DoubleNOPModifierImpl.java47
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/DoubleRangeModifierImpl.java426
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/DoubleSequenceModifierImpl.java195
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/FeatureModifierImpl.java440
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/IntegerModifierImpl.java257
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/IntegerNOPModifierImpl.java47
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/IntegerRangeModifierImpl.java442
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/IntegerSequenceModifierImpl.java194
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/LongModifierImpl.java259
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/LongNOPModifierImpl.java47
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/LongRangeModifierImpl.java444
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/LongSequenceModifierImpl.java194
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/ModifierFactoryImpl.java351
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/ModifierImpl.java513
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/ModifierPackageImpl.java1279
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/NOPModifierImpl.java69
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/RangeModifierImpl.java73
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/STEMTimeModifierImpl.java254
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/STEMTimeNOPModifierImpl.java47
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/STEMTimeRangeModifierImpl.java445
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/STEMTimeSequenceModifierImpl.java179
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/SequenceModifierImpl.java309
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/SingleValueModifierImpl.java47
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/StringNOPModifierImpl.java47
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/StringSequenceModifierImpl.java194
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/DoubleModifierItemProvider.java188
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/DoubleNOPModifierItemProvider.java106
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/DoubleRangeModifierItemProvider.java208
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/DoubleSequenceModifierItemProvider.java139
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/FeatureModifierItemProvider.java178
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/IntegerModifierItemProvider.java188
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/IntegerNOPModifierItemProvider.java106
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/IntegerRangeModifierItemProvider.java226
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/IntegerSequenceModifierItemProvider.java139
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/LongModifierItemProvider.java188
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/LongNOPModifierItemProvider.java106
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/LongRangeModifierItemProvider.java226
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/LongSequenceModifierItemProvider.java139
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/ModifierItemProvider.java229
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/ModifierItemProviderAdapterFactory.java663
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/NOPModifierItemProvider.java117
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/RangeModifierItemProvider.java116
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/STEMTimeModifierItemProvider.java165
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/STEMTimeNOPModifierItemProvider.java106
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/STEMTimeRangeModifierItemProvider.java245
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/STEMTimeSequenceModifierItemProvider.java131
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/SequenceModifierItemProvider.java221
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/SingleValueModifierItemProvider.java106
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/StringNOPModifierItemProvider.java106
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/StringSequenceModifierItemProvider.java138
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/util/ModifierAdapterFactory.java658
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/util/ModifierSwitch.java770
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/And.java26
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/BooleanExpression.java25
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/BooleanOperator.java25
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/ElapsedTimeTest.java83
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/False.java23
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/IdentifiablePredicate.java31
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/IdentifiablePredicateExpression.java24
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/IdentifiableTest.java22
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/NaryBooleanOperator.java31
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/Not.java26
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/Or.java25
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/Predicate.java59
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/PredicateExpression.java39
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/PredicateFactory.java122
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/PredicatePackage.java1141
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/PredicateReference.java38
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/Test.java26
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/TimeTest.java26
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/True.java23
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/UnaryBooleanOperator.java39
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/AndImpl.java66
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/BooleanExpressionImpl.java47
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/BooleanOperatorImpl.java47
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/ElapsedTimeTestImpl.java374
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/FalseImpl.java57
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/IdentifiablePredicateExpressionImpl.java270
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/IdentifiablePredicateImpl.java75
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/IdentifiableTestImpl.java47
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/NaryBooleanOperatorImpl.java155
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/NotImpl.java58
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/OrImpl.java68
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicateExpressionImpl.java196
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicateFactoryImpl.java199
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicateImpl.java70
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicatePackageImpl.java708
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicateReferenceImpl.java175
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/TestImpl.java47
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/TimeTestImpl.java48
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/TrueImpl.java57
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/UnaryBooleanOperatorImpl.java181
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/AndItemProvider.java123
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/BooleanExpressionItemProvider.java102
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/BooleanOperatorItemProvider.java102
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/ElapsedTimeTestItemProvider.java159
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/FalseItemProvider.java124
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/IdentifiablePredicateExpressionItemProvider.java283
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/IdentifiablePredicateItemProvider.java115
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/IdentifiableTestItemProvider.java107
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/NaryBooleanOperatorItemProvider.java246
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/NotItemProvider.java123
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/OrItemProvider.java124
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/PredicateExpressionItemProvider.java279
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/PredicateItemProvider.java145
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/PredicateItemProviderAdapterFactory.java441
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/PredicateReferenceItemProvider.java153
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/TestItemProvider.java113
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/TimeTestItemProvider.java101
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/TrueItemProvider.java124
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/UnaryBooleanOperatorItemProvider.java245
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/util/PredicateAdapterFactory.java506
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/util/PredicateSwitch.java606
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/Scenario.java264
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/ScenarioFactory.java51
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/ScenarioPackage.java355
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/impl/ScenarioFactoryImpl.java103
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/impl/ScenarioImpl.java790
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/impl/ScenarioPackageImpl.java328
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/provider/ScenarioEditPlugin.java104
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/provider/ScenarioItemProvider.java402
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/provider/ScenarioItemProviderAdapterFactory.java207
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/util/ScenarioAdapterFactory.java178
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/util/ScenarioSwitch.java176
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/RealTimeSequencer.java24
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/Sequencer.java207
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/SequencerFactory.java60
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/SequencerPackage.java788
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/SequentialSequencer.java41
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/impl/RealTimeSequencerImpl.java151
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/impl/SequencerFactoryImpl.java115
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/impl/SequencerImpl.java607
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/impl/SequencerPackageImpl.java402
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/impl/SequentialSequencerImpl.java295
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/provider/RealTimeSequencerItemProvider.java129
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/provider/SequencerItemProvider.java392
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/provider/SequencerItemProviderAdapterFactory.java231
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/provider/SequentialSequencerItemProvider.java163
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/util/SequencerAdapterFactory.java221
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/util/SequencerSwitch.java238
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/Solver.java138
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/SolverFactory.java51
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/SolverPackage.java243
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/impl/SolverFactoryImpl.java103
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/impl/SolverImpl.java335
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/impl/SolverPackageImpl.java282
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/provider/SolverItemProvider.java204
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/provider/SolverItemProviderAdapterFactory.java207
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/util/SolverAdapterFactory.java183
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/util/SolverSwitch.java185
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/Trigger.java89
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/TriggerFactory.java51
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/TriggerPackage.java259
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/impl/TriggerFactoryImpl.java103
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/impl/TriggerImpl.java331
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/impl/TriggerPackageImpl.java256
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/provider/TriggerItemProvider.java297
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/provider/TriggerItemProviderAdapterFactory.java207
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/util/TriggerAdapterFactory.java202
-rw-r--r--core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/util/TriggerSwitch.java202
364 files changed, 80567 insertions, 0 deletions
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/file/File.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/file/File.java
new file mode 100644
index 000000000..2f936ea9e
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/file/File.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2009,2010 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.stem.adapters.file;
+
+import java.io.IOException;
+
+import org.eclipse.emf.ecore.xmi.XMIResource;
+import org.eclipse.stem.core.common.Identifiable;
+
+
+public interface File {
+
+ public XMIResource getResource();
+
+ public Identifiable getIdentifiable();
+
+ public void delete() throws IOException;
+
+ public void rename(String newname) throws IOException;
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/file/FileAdapter.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/file/FileAdapter.java
new file mode 100644
index 000000000..f75e6ab9d
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/file/FileAdapter.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2009,2010 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.stem.adapters.file;
+
+import java.io.IOException;
+
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.emf.ecore.xmi.XMIResource;
+import org.eclipse.stem.core.common.Identifiable;
+
+
+
+public class FileAdapter extends AdapterImpl implements File {
+
+ public XMIResource getResource() {
+ // Override
+ return null;
+ }
+
+ public void delete() throws IOException {
+ // override
+ }
+
+ public void rename(String newname) throws IOException {
+ // override
+ }
+
+ public Identifiable getIdentifiable() {
+ // override
+ return null;
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/file/FileAdapterFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/file/FileAdapterFactory.java
new file mode 100644
index 000000000..47c35e5a9
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/file/FileAdapterFactory.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2009,2010 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.stem.adapters.file;
+
+import org.eclipse.core.runtime.IAdapterFactory;
+
+
+abstract public class FileAdapterFactory implements IAdapterFactory {
+ /**
+ * @see org.eclipse.core.runtime.IAdapterFactory#getAdapterList()
+ */
+ @SuppressWarnings("unchecked")
+ public Class[] getAdapterList() {
+ return new Class[] { File.class };
+ }
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/file/IdentifiableFileAdapter.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/file/IdentifiableFileAdapter.java
new file mode 100644
index 000000000..5465939cc
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/file/IdentifiableFileAdapter.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2009,2010 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.stem.adapters.file;
+
+import java.io.IOException;
+
+import org.eclipse.emf.ecore.xmi.XMIResource;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl;
+import org.eclipse.stem.core.common.Identifiable;
+
+public class IdentifiableFileAdapter extends FileAdapter {
+
+ @Override
+ public XMIResource getResource() {
+ Identifiable target = (Identifiable)this.getTarget();
+
+ XMIResourceImpl xmi = (XMIResourceImpl)target.eResource();
+
+ return xmi;
+ }
+
+ @Override
+ public void delete() throws IOException {
+ XMIResource r = this.getResource();
+ r.delete(null);
+
+ }
+
+ @Override
+ public void rename(String newname) throws IOException {
+ // override
+ }
+
+ @Override
+ public Identifiable getIdentifiable() {
+ return (Identifiable)getTarget();
+ }
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/file/IdentifiableFileAdapterFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/file/IdentifiableFileAdapterFactory.java
new file mode 100644
index 000000000..65a4d7331
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/file/IdentifiableFileAdapterFactory.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2009,2010 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.stem.adapters.file;
+
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.stem.core.common.Identifiable;
+
+public class IdentifiableFileAdapterFactory extends FileAdapterFactory {
+
+ /**
+ * @see org.eclipse.core.runtime.IAdapterFactory#getAdapter(java.lang.Object,
+ * java.lang.Class)
+ */
+ @SuppressWarnings("unchecked")
+ public Object getAdapter(final Object adaptableObject,
+ final Class adapterType) {
+ File retValue = null;
+ // An identifiable
+ if (adaptableObject instanceof Identifiable
+ && adapterType.equals(File.class)) {
+ // Yes
+
+ IdentifiableFileAdapter ifa = new IdentifiableFileAdapter();
+ ifa.setTarget((Notifier)adaptableObject);
+ retValue = ifa;
+ } // if
+ return retValue;
+ } // getAdapter
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/history/HistoryExtendedListener.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/history/HistoryExtendedListener.java
new file mode 100644
index 000000000..6bee18c74
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/history/HistoryExtendedListener.java
@@ -0,0 +1,21 @@
+// HistoryExtendedListener.java
+package org.eclipse.stem.adapters.history;
+
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+
+/**
+ * This interface is implemented by classes that want to be notified when a
+ * {@link HistoryProvider} can provide additional history values.
+ */
+public interface HistoryExtendedListener {
+ void historyExtended(final HistoryProviderAdapter historyProviderAdapter);
+} // HistoryExtendedListener
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/history/HistoryProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/history/HistoryProvider.java
new file mode 100644
index 000000000..ee5fda114
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/history/HistoryProvider.java
@@ -0,0 +1,65 @@
+// HistoryProvider.java
+package org.eclipse.stem.adapters.history;
+
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.model.STEMTime;
+
+/**
+ * This interface is implemented by classes that provide instances of
+ * {@link Identifiables} as they existed in previous (historic) cycles of a
+ * {@link Simulation}.
+ */
+public interface HistoryProvider {
+
+ /**
+ * @param time
+ * the time in a {@link Simulation} that specifies the instance
+ * of the {@ Identifiable} to return
+ * @return the {@link Identifiable} instance that was current in the state
+ * of the {@link org.eclipse.stem.core.graph.Graph} at the <code>time</code>.
+ */
+ Identifiable getInstance(STEMTime time);
+
+ /**
+ * @return all of the historic instances of the {@link Identifiable}. The
+ * value at index 0 is the earliest.
+ */
+ Identifiable[] getAllHistoricInstances();
+
+
+ /**
+ * @return The historic instances that match the time values in
+ * the array timeRange {@link Identifiable}.
+ */
+ Identifiable[] getHistoricInstances(STEMTime[] timeRange);
+
+
+ /**
+ * @return all of the time values that correspond to the historic values.
+ * The first value of the collection is the time value for the first
+ * value of the collection returned by
+ */
+ STEMTime[] getAllHistoricTimeValues();
+
+ /**
+ * @return the earliest time value associated with a relative value.
+ */
+ STEMTime getEarliestTimeValue();
+
+ /**
+ * @return the earliest (lowest) cycle number
+ */
+ int getEarliestCycleNumber();
+
+} // HistoryProvider
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/history/HistoryProviderAdapter.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/history/HistoryProviderAdapter.java
new file mode 100644
index 000000000..c6ddf87bc
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/history/HistoryProviderAdapter.java
@@ -0,0 +1,111 @@
+// HistoryProviderAdapter.java
+package org.eclipse.stem.adapters.history;
+
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+
+import java.util.Date;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.graph.ResettableAdapter;
+import org.eclipse.stem.core.model.ModelFactory;
+import org.eclipse.stem.core.model.STEMTime;
+
+/**
+ * This class is a {@link HistoryProvider}.
+ */
+public class HistoryProviderAdapter extends AdapterImpl implements
+ HistoryProvider, ResettableAdapter {
+
+ private List<HistoryExtendedListener> extensionListeners = new CopyOnWriteArrayList<HistoryExtendedListener>();
+
+ private int earliestCycleNumber = 0;
+
+ /**
+ * @see org.eclipse.stem.adapters.history.HistoryProvider#getInstance(org.eclipse.stem.core.model.STEMTime)
+ */
+ public Identifiable getInstance(STEMTime time) {
+ return (Identifiable) getTarget();
+ }
+
+ /**
+ * @see org.eclipse.stem.definitions.adapters.history.HistoryProvider#getAllHistoricInstances()
+ */
+ public Identifiable[] getAllHistoricInstances() {
+ return new Identifiable[] {};
+ }
+
+
+
+ /**
+ * @see org.eclipse.stem.definitions.adapters.history.HistoryProvider#getHistoricInstances()
+ */
+ public Identifiable[] getHistoricInstances(STEMTime[] timeRange) {
+ return new Identifiable[timeRange.length];
+ }
+
+ /**
+ * @see org.eclipse.stem.definitions.adapters.history.HistoryProvider#getAllHistoricTimeValues()
+ */
+ public STEMTime[] getAllHistoricTimeValues() {
+ return new STEMTime[] {};
+ }
+
+ /**
+ * @see org.eclipse.stem.definitions.adapters.history.HistoryProvider#getEarliestCycleNumber()
+ */
+ public int getEarliestCycleNumber() {
+ return earliestCycleNumber;
+ }
+
+
+ /**
+ * @see org.eclipse.stem.core.graph.ResettableAdapter#reset()
+ */
+ public void reset() {
+ fireHistoryExtended();
+ } // reset
+
+ /**
+ * @see org.eclipse.stem.definitions.adapters.history.HistoryProvider#getEarliestTimeValue()
+ */
+ public STEMTime getEarliestTimeValue() {
+ final STEMTime retValue = ModelFactory.eINSTANCE.createSTEMTime();
+ retValue.setTime(new Date());
+ return retValue;
+ }
+
+ /**
+ * @see org.eclipse.emf.common.notify.impl.AdapterImpl#isAdapterForType(java.lang.Object)
+ */
+ @Override
+ public boolean isAdapterForType(Object type) {
+ return type == HistoryProvider.class;
+ }
+
+ public void addExtensionListener(HistoryExtendedListener listener) {
+ extensionListeners.add(listener);
+ }
+
+ public void removeExtensionListener(HistoryExtendedListener listener) {
+ extensionListeners.remove(listener);
+ }
+
+ protected void fireHistoryExtended() {
+ for (HistoryExtendedListener listener : extensionListeners) {
+ listener.historyExtended(this);
+ } // for each HistoryExtendedListener
+ }
+
+} // HistoryProviderAdapter
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/history/HistoryProviderAdapterFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/history/HistoryProviderAdapterFactory.java
new file mode 100644
index 000000000..9a99224e5
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/history/HistoryProviderAdapterFactory.java
@@ -0,0 +1,72 @@
+// HistoryProviderAdapterFactory.java
+package org.eclipse.stem.adapters.history;
+
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+
+/**
+ * This interface is implemented by classes that create adapters that adapt
+ * {@link org.eclipse.emf.ecore.EObject}s to {@link HistoryProvider}s.
+ */
+
+public interface HistoryProviderAdapterFactory extends
+ ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+
+ /**
+ * This is the singleton instance of the factory that creates
+ * {@link HistoryProvider} instances.
+ * <p>
+ * This instance is a {@link ComposedAdapterFactory} which means that it
+ * collects together other {@link ComposeableAdapterFactory} adapter
+ * factories. Each class that implements
+ * {@link RelativeValueProviderAdapterFactory} needs to add itself to this
+ * instance with a call to
+ * {@link ComposedAdapterFactory#addAdapterFactory(org.eclipse.emf.common.notify.AdapterFactory)}.
+ * This will then allow adapters created by that factory to be found when
+ * adapting class instances handled by the new factory.
+ * <p>
+ * Basically, if you create an EMF model and define a
+ * {@link HistoryProviderAdapterFactory} for it so that the classes in that
+ * model can be adapted, you need to hook that factory into this one so that
+ * later when an attempt is made to adapt a class from that model is made
+ * the associated factory will be found. You can do that by adding the line:
+ * <code>
+ * HistoryProviderAdapterFactory.INSTANCE.addAdapterFactory(this);
+ * </code>
+ * to the default constructor of the new factory after the super call.
+ * You're not done however, you also have to "force" an instance of the
+ * class to be created so that the constructor is run. This is typically
+ * achieved by allocating an instance in the <code>start</code> method of
+ * the <code>Activator</code> of the plug-in that defines the factory.
+ */
+ HistoryProviderAdapterFactoryImpl INSTANCE = new HistoryProviderAdapterFactoryImpl();
+
+ /**
+ * This class is extended by classes that provide historic values of
+ * {@link Identifiables}.
+ */
+ public class HistoryProviderAdapterFactoryImpl extends
+ ComposedAdapterFactory implements HistoryProviderAdapterFactory {
+ /**
+ * @see org.eclipse.emf.edit.provider.ComposedAdapterFactory#isFactoryForType(java.lang.Object)
+ */
+ @Override
+ public boolean isFactoryForType(Object type) {
+ return type == HistoryProvider.class;
+ } // isFactoryForType
+ } // RelativeValueHistoryProviderAdapterFactoryImpl
+
+} // HistoryProviderAdapterFactory
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/time/TimeProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/time/TimeProvider.java
new file mode 100644
index 000000000..5936707b8
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/time/TimeProvider.java
@@ -0,0 +1,26 @@
+// TimeProvider.java
+package org.eclipse.stem.adapters.time;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.stem.core.model.STEMTime;
+
+/**
+ * This interface is implemented by classes that provide instances of {@link
+ * STEMTime}.
+ */
+public interface TimeProvider {
+ /**
+ * @return the time value associated with the instance.
+ */
+ STEMTime getTime();
+} // TimeProvider \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/time/TimeProviderAdapter.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/time/TimeProviderAdapter.java
new file mode 100644
index 000000000..670ed4861
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/time/TimeProviderAdapter.java
@@ -0,0 +1,31 @@
+// TimeProviderAdapter.java
+package org.eclipse.stem.adapters.time;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.stem.core.model.ModelFactory;
+import org.eclipse.stem.core.model.STEMTime;
+
+/**
+ * This class is a {@link TimeProvider}.
+ */
+public class TimeProviderAdapter extends AdapterImpl implements TimeProvider {
+
+ /**
+ * @see org.eclipse.stem.adapters.time.TimeProvider#getTime()
+ */
+ public STEMTime getTime() {
+ return ModelFactory.eINSTANCE.createSTEMTime();
+ }
+
+} // TimeProviderAdapter \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/time/TimeProviderAdapterFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/time/TimeProviderAdapterFactory.java
new file mode 100644
index 000000000..66f8f1b3e
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/adapters/time/TimeProviderAdapterFactory.java
@@ -0,0 +1,72 @@
+// TimeProviderAdapterFactory.java
+package org.eclipse.stem.adapters.time;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+
+/**
+ * This interface is implemented by classes that create adapters that adapt
+ * {@link org.eclipse.emf.ecore.EObject}s to {@link TimeProvider}s.
+ */
+public interface TimeProviderAdapterFactory extends ComposeableAdapterFactory,
+ IChangeNotifier, IDisposable {
+
+ /**
+ * This is the singleton instance of the factory that creates {@link
+ * TimeProvider} instances.
+ * <p>
+ * This instance is a {@link ComposedAdapterFactory} which means that it
+ * collects together other {@link ComposeableAdapterFactory} adapter
+ * factories. Each class that implements {@link
+ * RelativeValueProviderAdapterFactory} needs to add itself to this instance
+ * with a call to {@link
+ * ComposedAdapterFactory#addAdapterFactory(org.eclipse
+ * .emf.common.notify.AdapterFactory)}. This will then allow adapters
+ * created by that factory to be found when adapting class instances handled
+ * by the new factory.
+ * <p>
+ * Basically, if you create an EMF model and define a {@link
+ * TimeProviderAdapterFactory} for it so that the classes in that model can
+ * be adapted, you need to hook that factory into this one so that later
+ * when an attempt is made to adapt a class from that model is made the
+ * associated factory will be found. You can do that by adding the line:
+ * <code>
+ * TimeProviderAdapterFactory.INSTANCE.addAdapterFactory(this);
+ * </code> to the default constructor of the new factory after the
+ * super call. You're not done however, you also have to "force" an instance
+ * of the class to be created so that the constructor is run. This is
+ * typically achieved by allocating an instance in the <code>start</code>
+ * method of the <code>Activator</code> of the plug-in that defines the
+ * factory.
+ */
+ TimeProviderAdapterFactoryImpl INSTANCE = new TimeProviderAdapterFactoryImpl();
+
+ /**
+ * This class is extended by classes that provide time values of {@link
+ * Identifiables}.
+ */
+ public class TimeProviderAdapterFactoryImpl extends ComposedAdapterFactory
+ implements TimeProviderAdapterFactory {
+ /**
+ * @see org.eclipse.emf.edit.provider.ComposedAdapterFactory#
+ * isFactoryForType(java.lang.Object)
+ */
+ @Override
+ public boolean isFactoryForType(Object type) {
+ return type == TimeProvider.class;
+ } // isFactoryForType
+ } // TimeProviderAdapterFactoryImpl
+} // TimeProviderAdapterFactory \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/Constants.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/Constants.java
new file mode 100644
index 000000000..d8f4a8f74
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/Constants.java
@@ -0,0 +1,250 @@
+// Constants.java
+package org.eclipse.stem.core;
+
+/*******************************************************************************
+ * Copyright (c) 2006, 2008 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
+ *******************************************************************************/
+
+import org.eclipse.stem.core.common.DublinCore;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.experiment.Experiment;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.model.Decorator;
+import org.eclipse.stem.core.model.Model;
+import org.eclipse.stem.core.scenario.Scenario;
+import org.eclipse.stem.core.sequencer.Sequencer;
+import org.eclipse.stem.core.solver.Solver;
+import org.eclipse.stem.core.trigger.Trigger;
+
+/**
+ * This interface contains a number of significant constants used by the STEM
+ * implementation.
+ */
+public interface Constants {
+
+ /**
+ * This is the string that is the root of all packages and plugin id's
+ */
+ String ID_ROOT = "org.eclipse.stem";
+
+ /**
+ * This is the id for the STEM project nature.
+ */
+ String ID_STEM_PROJECT_NATURE = ID_ROOT + ".stemnature";
+
+ /**
+ * This is the scheme used for STEM URI's that uniquely identify a
+ * component.
+ */
+ String STEM_SCHEME = "stem";
+
+ /**
+ * This is the scheme used for STEM URI's that uniquely identify a STEM
+ * "type".
+ */
+ String STEM_TYPE_SCHEME = "stemtype";
+
+ /**
+ * This is the "authority" of a URI that refers to STEM resources.
+ */
+ String STEM_URI_AUTHORITY = ID_ROOT;
+
+ /**
+ * This is the extension point id for the "graph" extension point. {@value}
+ *
+ * @see Graph
+ */
+ String ID_GRAPH_EXTENSION_POINT = ID_ROOT + ".core.graph";
+
+ /**
+ * This is the extension point id for the "model" extension point. {@value}
+ *
+ * @see Model
+ */
+ String ID_MODEL_EXTENSION_POINT = ID_ROOT + ".core.model";
+
+ /**
+ * This is the extension point id for the "scenario" extension point. * *
+ * {@value}
+ *
+ * @see Scenario
+ */
+ String ID_SCENARIO_EXTENSION_POINT = ID_ROOT + ".core.scenario";
+
+ /**
+ * This is the extension point id for the "experiment" extension point. * *
+ * {@value}
+ *
+ * @see Experiment
+ */
+ String ID_EXPERIMENT_EXTENSION_POINT = ID_ROOT + ".core.experiment";
+
+ /**
+ * This is the extension point id of the "Sequencers" extension point. * *
+ * {@value}
+ *
+ * @see Sequencer
+ */
+ String ID_SEQUENCER_EXTENSION_POINT = ID_ROOT + ".core.sequencer";
+
+ /**
+ * This is the extension point id of the "Decorators" extension point * *
+ * {@value}
+ *
+ * @see Decorator
+ */
+ String ID_DECORATOR_EXTENSION_POINT = ID_ROOT + ".core.decorator";
+
+ /**
+ * This is the extension point id of the "Triggers" extension point * *
+ * {@value}
+ *
+ * @see Trigger
+ */
+ String ID_TRIGGER_EXTENSION_POINT = ID_ROOT + ".core.trigger";
+
+ /**
+ * This is the extension point id of the "Predicate" extension point * *
+ * {@value}
+ *
+ * @see Predicate
+ */
+ String ID_PREDICATE_EXTENSION_POINT = ID_ROOT + ".core.predicate";
+
+ /**
+ * This is the extension point id for the "solver" extension point. A
+ * {@link Solver} defines the underlying computational model.
+ * {@value}
+ */
+ String ID_SOLVER_EXTENSION_POINT = org.eclipse.stem.core.Constants.ID_ROOT
+ + ".core.solver";
+
+
+ /**
+ * This is the identifier of the element in a
+ * <code>ConfigurationElement</code> that specifies the name and
+ * implementing class for STEM "solver".
+ *
+ * @see org.eclipse.stem.core.Constants#EXECUTABLE_NAME_ATTRIBUTE
+ */
+ String SOLVER_ELEMENT = "classdef";
+
+
+ /**
+ * This is the extension point id for the "logger" extension point. A
+ * {@link Logger} defines the underlying computational model.
+ * {@value}
+ */
+ String ID_LOGGER_EXTENSION_POINT = org.eclipse.stem.core.Constants.ID_ROOT
+ + ".core.logger";
+
+
+ /**
+ * This is the identifier of the element in a
+ * <code>ConfigurationElement</code> that specifies the name and
+ * implementing class for STEM "logger".
+ *
+ * @see org.eclipse.stem.core.Constants#EXECUTABLE_NAME_ATTRIBUTE
+ */
+ String LOGGER_ELEMENT = "classdef";
+
+
+
+
+ /**
+ * This is the identifier of the XML element that specifies the name of a
+ * "category" for extension points that are extended by extensions that plug
+ * in {@link Identifiable}s. {@value}
+ *
+ * @see #CATEGORY_NAME_ATTRIBUTE
+ * @see #PARENT_ID_ATTRIBUTE
+ */
+ String CATEGORY_ELEMENT = "stem_category";
+
+ /**
+ * This is the identifier of the XML attribute in a CATEGORY element that
+ * specifies the name of the category. {@value}
+ *
+ * @see #CATEGORY_ELEMENT
+ * @see #PARENT_ID_ATTRIBUTE
+ */
+ String CATEGORY_NAME_ATTRIBUTE = "name";
+
+ /**
+ * This is the identifier of the XML attribute in a Category element that
+ * specifies the unique identifier of the category. {@value}
+ *
+ * @see #CATEGORY_NAME_ATTRIBUTE
+ * @see #PARENT_ID_ATTRIBUTE
+ */
+ String CATEGORY_ID_ATTRIBUTE = "id";
+
+ /**
+ * This is the identifier of the XML attribute in a CATEGORY element that
+ * specifies the unique identifier of the parent category of a child
+ * category. {@value}
+ *
+ * @see #CATEGORY_ELEMENT
+ * @see #CATEGORY_NAME_ATTRIBUTE
+ */
+ String PARENT_ID_ATTRIBUTE = "parent_id";
+
+ /**
+ * This is the identifier of the XML element that specifies the Dublin Core
+ * values for extension points that are extended by extensions that plug in
+ * {@link Identifiable}s. {@value}
+ *
+ * @see #CATEGORY_ELEMENT
+ * @see DublinCore
+ */
+ String DUBLIN_CORE_ELEMENT = "dublin_core";
+
+ /**
+ * This is the identifier of the XML element that specifies the name and
+ * implementing class for STEM "sequencers".
+ *
+ * @see #EXECUTABLE_NAME_ATTRIBUTE
+ */
+ String SEQUENCER_ELEMENT = "sequencer";
+
+ /**
+ * This is the identifier of the XML element that specifies the name and
+ * implementing class for STEM "decorators"
+ *
+ * @see #EXECUTABLE_NAME_ATTRIBUTE
+ */
+ String DECORATOR_ELEMENT = "decorator";
+
+ /**
+ * This is the identifier of the XML attribute in an Observer element that
+ * specifies the name of a STEM "executable".
+ *
+ * @see #SEQUENCER_ELEMENT
+ * @see #DECORATOR_ELEMENT
+ */
+ String EXECUTABLE_NAME_ATTRIBUTE = "name";
+
+ /**
+ * The name of the root category for all IdentifiablePluginViews.
+ *
+ * @see #IDENTIFIABLE_ROOT_CATEGORY_ID
+ */
+ String IDENTIFIABLE_ROOT_CATEGORY_NAME = "/";
+
+ /**
+ * This is the unique identifier of the root category. {@value}
+ *
+ * @see #IDENTIFIABLE_ROOT_CATEGORY_NAME
+ */
+ String IDENTIFIABLE_ROOT_CATEGORY_ID = IDENTIFIABLE_ROOT_CATEGORY_NAME;
+
+
+
+} // Constants
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/CorePlugin.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/CorePlugin.java
new file mode 100644
index 000000000..aeb51c328
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/CorePlugin.java
@@ -0,0 +1,157 @@
+// CorePlugin.java
+package org.eclipse.stem.core;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Plugin;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.stem.adapters.file.IdentifiableFileAdapterFactory;
+import org.eclipse.stem.core.graph.provider.GraphTimeProviderAdapterFactory;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The core STEM plugin.
+ */
+public class CorePlugin extends Plugin {
+
+ /**
+ * The plug-in ID
+ */
+ public static final String PLUGIN_ID = "org.eclipse.stem.cSore";
+
+ // The shared instance.
+ private static CorePlugin plugin;
+
+ /**
+ * The constructor.
+ */
+ public CorePlugin() {
+ plugin = this;
+ } // CorePlugin
+
+ /**
+ * This method is called upon plug-in activation
+ *
+ * @param context
+ * @throws Exception
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ new GraphTimeProviderAdapterFactory();
+ new IdentifiableFileAdapterFactory();
+ // The constructor will populate the plug-in specified resources
+ // stem = new STEM();
+ } // start
+
+
+ /**
+ * This method is called when the plug-in is stopped
+ *
+ * @param context
+ * @throws Exception
+ */
+ public void stop(BundleContext context) throws Exception {
+ super.stop(context);
+ plugin = null;
+ } // stop
+
+ /**
+ * Returns the shared instance.
+ *
+ * @return the singleton instance of the plug-in class.
+ */
+ public static CorePlugin getDefault() {
+ return plugin;
+ } // CorePlugin
+
+ /**
+ * Log an error to the ILog for this plugin
+ *
+ * @param message
+ * the localized error message text
+ * @param exception
+ * the associated exception, or null
+ */
+ public static void logError(String message, Throwable exception) {
+ // Do we have a plugin?
+ if (plugin != null) {
+ // Yes
+ plugin.getLog().log(
+ new Status(IStatus.ERROR, plugin.getBundle().getSymbolicName(),
+ 0, message, exception));
+ }
+ else {
+ // No
+ System.out.println(message);
+ // Exception?
+ if (exception != null) {
+ // Yes
+ System.out.println(exception.getMessage());
+ } // if
+ }
+ } // logError
+
+ /**
+ * Log information to the ILog for this plugin
+ *
+ * @param message
+ * the localized information message text
+ * @param exception
+ * the associated exception, or null
+ */
+ public static void logInformation(String message, Throwable exception) {
+ // Do we have a plugin?
+ if (plugin != null) {
+ // Yes
+ plugin.getLog().log(
+ new Status(IStatus.INFO, plugin.getBundle().getSymbolicName(),
+ 0, message, exception));
+ }
+ else {
+ // No
+ System.out.println(message);
+ // Exception?
+ if (exception != null) {
+ // Yes
+ System.out.println(exception.getMessage());
+ } // if
+ }
+ } // logInformation
+
+
+ /**
+ * Log information to the ILog for this plugin
+ * The method is overloaded to allow for logInformation without an error
+ * method sets the error to null. This should be used instead of System.out.println
+ * throughout the code.
+ * @param message
+ * the localized information message text
+ *
+ */
+ public static void logInformation(String message) {
+ // Do we have a plugin?
+ if (plugin != null) {
+ // Yes
+ plugin.getLog().log(
+ new Status(IStatus.INFO, plugin.getBundle().getSymbolicName(),
+ 0, message, null));
+ }
+ else {
+ // No
+ System.out.println(message);
+ }
+ } // logInformation
+
+
+
+} // CorePlugin
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/STEMBinaryResourceFactoryImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/STEMBinaryResourceFactoryImpl.java
new file mode 100644
index 000000000..5207c1ec3
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/STEMBinaryResourceFactoryImpl.java
@@ -0,0 +1,45 @@
+package org.eclipse.stem.core;
+
+/*******************************************************************************
+ * Copyright (c) 2011 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.impl.BinaryResourceImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+
+/**
+ * A binary resource factor used to create compact resources suitable for sending
+ * across networks etc.
+ */
+
+public class STEMBinaryResourceFactoryImpl extends XMIResourceFactoryImpl {
+
+ public static STEMBinaryResourceFactoryImpl INSTANCE = new STEMBinaryResourceFactoryImpl();
+
+
+ /**
+ * private so only a singleton instance is created
+ *
+ * @see #INSTANCE
+ */
+ private STEMBinaryResourceFactoryImpl() {
+ super();
+ }
+
+ @Override
+ public Resource createResource(URI uri) {
+ Resource newRes = new BinaryResourceImpl(uri);
+ return newRes;
+ } // createResource
+
+
+} // STEMBinaryResourceFactoryImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/STEMURI.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/STEMURI.java
new file mode 100644
index 000000000..6a6e1dafc
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/STEMURI.java
@@ -0,0 +1,205 @@
+// STEMURI.java
+package org.eclipse.stem.core;
+
+/*******************************************************************************
+ * Copyright (c) 2006, 2008 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
+ *******************************************************************************/
+
+import java.util.Random;
+
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.stem.core.experiment.Experiment;
+import org.eclipse.stem.core.graph.Edge;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.graph.Node;
+import org.eclipse.stem.core.model.Model;
+import org.eclipse.stem.core.scenario.Scenario;
+import org.eclipse.stem.core.sequencer.Sequencer;
+
+/**
+ * This class contains standard {@link URI} constants for STEM.
+ */
+public class STEMURI {
+
+ private static Random rand = new Random(System.currentTimeMillis());
+
+ /**
+ * The type {@link URI} of a STEM {@link Scenario}. {@value}
+ */
+ public static final URI SCENARIO_TYPE_URI = createTypeURI("Scenario");
+
+ /**
+ * The type {@link URI} of a STEM {@link Model}. {@value}
+ */
+ public static final URI MODEL_TYPE_URI = createTypeURI("Model");
+
+ /**
+ * The type {@link URI} of a STEM {@link Graph}. {@value}
+ */
+ public static final URI GRAPH_TYPE_URI = createTypeURI("Graph");
+
+ /**
+ * The type {@link URI} of a STEM {@link Node}. {@value}
+ */
+ public static final URI NODE_TYPE_URI = createTypeURI("Node");
+
+ /**
+ * The type {@link URI} of a STEM {@link Edge}. {@value}
+ */
+ public static final URI EDGE_TYPE_URI = createTypeURI("Edge");
+
+ /**
+ * The type {@link URI} of a STEM {@link Sequencer}. {@value}
+ */
+ public static final URI SEQUENCER_TYPE_URI = createTypeURI("Sequencer");
+
+ /**
+ * The type {@link URI} of a STEM {@link Experiment}. {@value}
+ */
+ public static final URI EXPERIMENT_TYPE_URI = createTypeURI("Experiment");
+
+ /**
+ * The type {@link URI} of a STEM
+ * {@link org.eclipse.stem.core.modifier.Modifier}. {@value}
+ */
+ public static final URI MODIFIER_TYPE_URI = createTypeURI("Modifier");
+
+ /**
+ * The type {@link URI} of a STEM
+ * {@link org.eclipse.stem.core.trigger.Trigger}. {@value}
+ */
+ public static final URI TRIGGER_TYPE_URI = createTypeURI("Trigger");
+
+ /**
+ * The type {@link URI} of a STEM
+ * {@link org.eclipse.stem.core.trigger.Predicate}. {@value}
+ */
+ public static final URI PREDICATE_TYPE_URI = createTypeURI("Predicate");
+
+ /**
+ * The type {@link URI} of a STEM
+ * {@link org.eclipse.stem.core.solver.Solver}. {@value}
+ */
+ public static final URI SOLVER_TYPE_URI = createTypeURI("Solver");
+
+
+ /**
+ * The type {@link URI} of a STEM {@link Logger}. {@value}
+ */
+ public static final URI LOGGER_TYPE_URI = createTypeURI("Logger");
+
+ /**
+ * The type {@link URI} of a STEM
+ * {@link org.eclipse.stem.core.common.Identifiable}. {@value}
+ */
+ public static final URI IDENTIFIABLE_TYPE_URI = createTypeURI("Identifiable");
+
+ /**
+ * Create a "Stem type" {@link URI}
+ *
+ * @param segments
+ * the segments of the {@link URI}
+ * @return a STEM "type" {@link URI}
+ */
+ public static URI createTypeURI(final String segments) {
+ return create(Constants.STEM_TYPE_SCHEME, segments);
+ } // createTypeURI
+
+ /**
+ * @param segments
+ * the segments of the {@link URI}
+ * @return a STEM {@link URI}
+ */
+ public static URI createURI(final String segments) {
+ return create(Constants.STEM_SCHEME, segments);
+ }
+
+ /**
+ * @param scheme
+ * the scheme of the {@link URI}
+ * @param segments
+ * the segments of the URI
+ * @see Constants#STEM_URI_AUTHORITY
+ * @return a STEM {@link URI} with the built-in "STEM" Authority
+ */
+ public static URI create(final String scheme, final String segments) {
+ return create(scheme, Constants.STEM_URI_AUTHORITY, segments);
+ } // create
+
+ /**
+ * Create a STEM {@link URI}
+ *
+ * @param scheme
+ * the scheme of the {@link URI}
+ * @param authority
+ * the "authority" of the {@link URI}
+ * @param segments
+ * the segments of the {@link URI}
+ * @see Constants#STEM_URI_AUTHORITY
+ * @return a STEM {@link URI}
+ */
+ public static URI create(final String scheme, final String authority,
+ final String segments) {
+
+ final StringBuilder sb = new StringBuilder();
+ if(segments.indexOf(scheme)!=0) {
+ sb.append(scheme);
+ sb.append("://");
+ }
+ if(segments.indexOf(authority)==-1) {
+ sb.append(authority);
+ sb.append("/");
+ }
+
+ sb.append(segments);
+
+ return URI.createURI(sb.toString());
+ } // create
+
+ /**
+ * generateUniquePart. Used to add a unique segment to any URI
+ * @return String Random 64 bit upper case HEX
+ */
+ public static String generateUniquePart() {
+ long l = rand.nextLong();
+ long now = System.currentTimeMillis();
+ long r= l+now;
+ return Long.toHexString(r).toUpperCase();
+ }
+
+ /**
+ * Converts URI's of the form "file://..." to "platform://..."
+ * @param in URI to convert
+ * @return Converted URI, or the same as input if the URI is already normalized
+ */
+
+ public static URI normalize(URI in) {
+ if(in.scheme().equals("platform")) return in;
+ if(in.scheme().equals("file")) {
+ // Check if we can find the workspace path in the file URI.
+ IWorkspace workspace = ResourcesPlugin.getWorkspace();
+ IWorkspaceRoot root = workspace.getRoot();
+ IPath location = root.getLocation();
+
+ int ind = in.toString().indexOf(location.toString());
+ if(ind >-1) {
+ String rest = in.toString().substring(ind+location.toOSString().length());
+ URI result = URI.createPlatformResourceURI(rest, false);
+ return result;
+ }
+ }
+ // Unable to convert file URI, this could be a URI to a STEM library object. We don't convert those
+ return in;
+ }
+} // STEMURI
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/STEMXMIResourceFactoryImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/STEMXMIResourceFactoryImpl.java
new file mode 100644
index 000000000..fe5932c69
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/STEMXMIResourceFactoryImpl.java
@@ -0,0 +1,119 @@
+package org.eclipse.stem.core;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Map;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.impl.BasicEObjectImpl;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.xmi.XMLHelper;
+import org.eclipse.emf.ecore.xmi.impl.XMIHelperImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl;
+import org.eclipse.stem.core.common.Identifiable;
+
+/**
+ * This class is the {@link XMIResourceFactoryImpl} for the STEM project. It's
+ * purpose is to provide an implementation of {@link XMIResourceImpl} whose
+ * {@link XMLHelper} has a customized implementation of
+ * {@link XMLHelper#getHREF(EObject)} that filters serialized {@link URI}'s such
+ * that they remain platform relative (i.e.,
+ * "platform:/projectname/foo/bar..."), or if absolute, are deresolved against
+ * the {@link Resource}'s {@link URI} so they remain internally relative to the
+ * containing file.
+ * <p>
+ * This is important as the serialized {@link Identifiable}s need to be able to
+ * be copied, moved and exported. If their references to other serialized
+ * {@link Identifiable}s were relative to file location rather than to the
+ * platform, such operations would break the links. Thus, all serialization
+ * operations the involve {@link Identifiable}s must employ this class. Look for
+ * references to {@link #INSTANCE} so see how this is accomplished.
+ */
+public class STEMXMIResourceFactoryImpl extends XMIResourceFactoryImpl {
+
+ public static STEMXMIResourceFactoryImpl INSTANCE = new STEMXMIResourceFactoryImpl();
+
+
+ private ArrayList<Adapter> modificationAdapters = new ArrayList<Adapter>();
+
+ /**
+ * private so only a singleton instance is created
+ *
+ * @see #INSTANCE
+ */
+ private STEMXMIResourceFactoryImpl() {
+ super();
+ }
+
+ @Override
+ public Resource createResource(URI uri) {
+
+ Resource newRes = new XMIResourceImpl(uri) {
+ @Override
+ protected XMLHelper createXMLHelper() {
+ return new XMIHelperImpl() {
+ @Override
+ public String getHREF(EObject obj) {
+ if (obj instanceof Identifiable) {
+ // Yes
+ final Identifiable identifiable = (Identifiable) obj;
+ final URI uri = identifiable.getURI();
+ if(uri == null) return null;
+
+ // Is it a platform URI?
+ if (uri.isPlatform()) {
+ // Yes
+ return uri.toString() + "#/";
+ } // if platform URI?
+
+ // Is it an unresolved proxy?
+ else if (identifiable.eIsProxy()) {
+ // Yes
+ return ((BasicEObjectImpl) identifiable)
+ .eProxyURI().toString();
+ } // if unresolved proxy
+
+ else {
+ // No
+ // Resolve it against the URI of the
+ // identifiable's resource
+ deresolve = true;
+ resourceURI = identifiable.eResource().getURI();
+ return super.getHREF(obj);
+ } // else
+
+ } // if Identifiable
+ else
+ return super.getHREF(obj);
+ } // getHREF
+
+ };
+ } // createXMLHelper
+
+ @Override
+ public void load(Map<?, ?> options) throws IOException {
+ super.load(options);
+ }
+ };
+ return newRes;
+ } // createResource
+
+
+ public void addModificationChangeAdapter(Adapter modificationAdapter) {
+ modificationAdapters.add(modificationAdapter);
+ }
+} // STEMXMIResourceFactoryImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/Utility.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/Utility.java
new file mode 100644
index 000000000..2ba35330f
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/Utility.java
@@ -0,0 +1,401 @@
+// Utility.java
+package org.eclipse.stem.core;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.XMLResource;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * This class contains common utility methods used in STEM.
+ */
+public class Utility {
+
+ /**
+ * EMF Save Options, for properly serializing to UTF-8
+ */
+ private static final Map<String,String> EMF_SAVE_OPTIONS
+ = new HashMap<String,String>();
+ static {
+ EMF_SAVE_OPTIONS.put(XMLResource.OPTION_ENCODING, "UTF-8");
+ }
+
+ public final static String NESTING_WARNING = "Warning, possible scenario initialization problem detected. Check the nesting of your models";
+ public final static String URI_WARNING = "Warning, URI does not exist in Graph. Check the infector/innoculator URIs your models. ";
+
+
+ /**
+ * Cached resource set
+ */
+
+ public static ResourceSet resourceSet;
+
+ static {
+ resourceSet = new ResourceSetImpl();
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("*", STEMXMIResourceFactoryImpl.INSTANCE);
+ resourceSet.getResourceFactoryRegistry().getProtocolToFactoryMap().put("platform", STEMXMIResourceFactoryImpl.INSTANCE);
+ }
+
+ /**
+ * @param identifableURI
+ * the {@link URI} of file with a serialized {@link Identifiable}
+ * @return the {@link Identifiable} de-serialized from the file, or
+ * <code>null</code> if an error occurred.
+ */
+ public static Identifiable getIdentifiable(final URI identifableURI) {
+ Identifiable retValue = null;
+
+ try {
+ URI normalized = STEMURI.normalize(identifableURI);
+ Resource resource = null;
+ synchronized(resourceSet) { // Resource set is not thread safe
+ resource = resourceSet.getResource(normalized,
+ true);
+
+ if(resource.isModified()) {
+ resource.unload();
+ resource.load(null);
+ if(resource.getErrors().size() > 0) {
+ for(Resource.Diagnostic d: resource.getErrors())
+ CorePlugin.logError(d.getMessage(), new Exception());
+ }
+ }
+ } // Synchronized
+ EList<EObject>cont = resource.getContents();
+ if(cont.size() == 0) {
+ int maxretry = 10;
+ while(cont.size() == 0 && --maxretry > 0)
+ Thread.yield(); // allow other thread to load resource
+ if(cont.size() == 0) {
+ CorePlugin.logError("Unable to load content for resource "+normalized, new Exception());
+ return null;
+ }
+ }
+ retValue = (Identifiable) cont.get(0);
+ } catch (final Exception e) {
+ CorePlugin.logError(
+ "The serialized instance of an Identifiable at \""
+ + identifableURI.toString()
+ + "\" was not found or was of the wrong format", e);
+ retValue = null;
+ }
+ return retValue;
+ } // getIdentifiable
+
+ /**
+ * @param identifableURI
+ * the {@link URI} of file with a serialized {@link Identifiable}
+ * @return the {@link Identifiable} de-serialized from the file, or
+ * <code>null</code> if an error occurred.
+ */
+ public static Identifiable getIdentifiableFromStream(final URI identifableURI, InputStream is, Map<String, Object>options, boolean binary) {
+ Identifiable retValue = null;
+
+ try {
+ URI normalized = STEMURI.normalize(identifableURI);
+ Resource resource = null;
+ ResourceSet rs = new ResourceSetImpl();
+
+ if(binary) {
+ rs.getResourceFactoryRegistry().getExtensionToFactoryMap().put("*", STEMBinaryResourceFactoryImpl.INSTANCE);
+ rs.getResourceFactoryRegistry().getProtocolToFactoryMap().put("platform", STEMBinaryResourceFactoryImpl.INSTANCE);
+ } else {
+ rs.getResourceFactoryRegistry().getExtensionToFactoryMap().put("*", STEMXMIResourceFactoryImpl.INSTANCE);
+ rs.getResourceFactoryRegistry().getProtocolToFactoryMap().put("platform", STEMXMIResourceFactoryImpl.INSTANCE);
+ }
+
+ resource = rs.createResource(normalized, null);
+ resource.unload();
+ resource.load(is, options);
+ if(resource.getErrors().size() > 0) {
+ for(Resource.Diagnostic d: resource.getErrors())
+ CorePlugin.logError(d.getMessage(), new Exception());
+ }
+ EList<EObject>cont = resource.getContents();
+ if(cont.size() == 0) {
+ int maxretry = 10;
+ while(cont.size() == 0 && --maxretry > 0)
+ Thread.yield(); // allow other thread to load resource
+ if(cont.size() == 0) {
+ CorePlugin.logError("Unable to load content for resource "+normalized, new Exception());
+ return null;
+ }
+ }
+ retValue = (Identifiable) cont.get(0);
+ } catch (final Exception e) {
+ CorePlugin.logError(
+ "The serialized instance of an Identifiable at \""
+ + identifableURI.toString()
+ + "\" was not found or was of the wrong format", e);
+ retValue = null;
+ }
+ return retValue;
+ } // getIdentifiable
+
+ /**
+ *
+ */
+ public static Resource getResource(final URI identifableURI) {
+
+ try {
+ URI normalized = STEMURI.normalize(identifableURI);
+ Resource resource = null;
+ synchronized(resourceSet) { // Resource set is not thread safe
+ resource = resourceSet.getResource(normalized,
+ true);
+
+ if(resource.isModified()) {
+ resource.unload();
+ resource.load(null);
+ if(resource.getErrors().size() > 0) {
+ for(Resource.Diagnostic d: resource.getErrors())
+ CorePlugin.logError(d.getMessage(), new Exception());
+ }
+ }
+ } // Synchronized
+ return resource;
+ } catch (final Exception e) {
+ CorePlugin.logError(
+ "The serialized instance of an Identifiable at \""
+ + identifableURI.toString()
+ + "\" was not found or was of the wrong format", e);
+ }
+ return null;
+ } // getIdentifiable
+
+
+ /**
+ * @param identifableURI
+ * the {@link URI} of file with a serialized {@link Identifiable}
+ * @return the {@link Identifiable} de-serialized from the file, or
+ * <code>null</code> if an error occurred.
+ */
+ public static Identifiable getIdentifiableIgnoreException(final URI identifableURI) {
+ Identifiable retValue = null;
+
+ try {
+ URI normalized = STEMURI.normalize(identifableURI);
+ Resource resource = null;
+ ResourceSet rs = new ResourceSetImpl(); // This method uses it's own resource set
+ resource = rs.getResource(normalized, true);
+
+ EList<EObject>cont = resource.getContents();
+ if(cont.size() == 0) {
+ int maxretry = 10;
+ while(cont.size() == 0 && --maxretry > 0)
+ Thread.yield(); // allow other thread to load resource
+ if(cont.size() == 0) {
+ return null;
+ }
+ }
+ retValue = (Identifiable) cont.get(0);
+ } catch (final Exception e) {
+ retValue = null;
+ }
+ return retValue;
+ } // getIdentifiable
+
+ /**
+ * Serialize an {@link Identifiable}
+ * <p>
+ * Note this code is copied from
+ * org.eclipse.stem.internal.data.records.Record. That method should be
+ * removed and this one used instead.
+ *
+ * @param identifiable
+ * the {@link Identifiable} to be serialized.
+ * @param serializationURI
+ * the {@link URI} that specifies where the {@link Identifiable}
+ * is to be serialized.
+ * @throws IOException
+ * if there is a problem serializing the {@link Identifiable}
+ */
+ public static void serializeIdentifiable(final Identifiable identifiable,
+ final URI serializationURI) throws IOException {
+ final List<Identifiable> set = new ArrayList<Identifiable>();
+ set.add(identifiable);
+ serializeIdentifiables(set, serializationURI);
+ } // serializeIdentifiable
+
+ /**
+ * Serialize an {@link Identifiable}
+ *
+ * @param identifiable
+ * the {@link Identifiable} to be serialized.
+ * @param serializationURI
+ * the {@link URI} that specifies where the {@link Identifiable}
+ * is to be serialized.
+ * @throws IOException
+ * if there is a problem serializing the {@link Identifiable}
+ */
+ public static void serializeIdentifiables(final List<Identifiable> identifiables,
+ final URI serializationURI) throws IOException {
+
+ // This code could be running "stand alone" (i.e., not within eclipse),
+ // thus the default factories for the extensions are not registered as
+ // they would from their extension of
+ // "org.eclipse.emf.ecore.extension_parser". So we need to register them
+ // here.
+
+ Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("*",
+ STEMXMIResourceFactoryImpl.INSTANCE);
+ Resource.Factory.Registry.INSTANCE.getProtocolToFactoryMap().put(
+ "platform", STEMXMIResourceFactoryImpl.INSTANCE);
+
+ final ResourceSet rs = new ResourceSetImpl();
+
+ rs.getResourceFactoryRegistry().getExtensionToFactoryMap()
+ .put("*", STEMXMIResourceFactoryImpl.INSTANCE);
+
+ rs.getResourceFactoryRegistry().getProtocolToFactoryMap().put(
+ "platform", STEMXMIResourceFactoryImpl.INSTANCE);
+
+ final Resource resource = rs.createResource(serializationURI);
+
+ for (Identifiable id : identifiables) {
+ resource.getContents().add(id);
+ }
+
+ resource.save(EMF_SAVE_OPTIONS);
+ } // serializeIdentifiable
+
+ /**
+ * Serialize an {@link Identifiable}
+ *
+ * @param identifiable
+ * the {@link Identifiable} to be serialized.
+ * @param serializationURI
+ * the {@link URI} that specifies where the {@link Identifiable}
+ * is to be serialized.
+ * @param stream the stream to serialize to
+ * @throws IOException
+ * if there is a problem serializing the {@link Identifiable}
+ */
+ public static void serializeIdentifiableToStream(Identifiable identifiable,
+ final URI serializationURI, OutputStream stream, Map<String,Object>options, boolean binary) throws IOException {
+
+ // This code could be running "stand alone" (i.e., not within eclipse),
+ // thus the default factories for the extensions are not registered as
+ // they would from their extension of
+ // "org.eclipse.emf.ecore.extension_parser". So we need to register them
+ // here.
+
+
+ final ResourceSet resourceSet = new ResourceSetImpl();
+
+ if(binary) {
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap()
+ .put("*", STEMBinaryResourceFactoryImpl.INSTANCE);
+
+ resourceSet.getResourceFactoryRegistry().getProtocolToFactoryMap().put(
+ "platform", STEMBinaryResourceFactoryImpl.INSTANCE);
+ } else {
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap()
+ .put("*", STEMXMIResourceFactoryImpl.INSTANCE);
+
+ resourceSet.getResourceFactoryRegistry().getProtocolToFactoryMap().put(
+ "platform", STEMXMIResourceFactoryImpl.INSTANCE);
+ }
+
+ final Resource resource = resourceSet.createResource(serializationURI);
+
+ resource.getContents().add(identifiable);
+
+ resource.save(stream, options);
+ } // serializeIdentifiable
+
+ /**
+ * Common method for determining the geographic level of a geographic key (last segment of a URI)
+ * @param key
+ * @return the level of the key
+ */
+ public static int keyLevel(final String key) {
+ // null means unspecified and truly global for population models.
+ if(key == null || key.trim().equals("")) return -2;
+ // ZZZ is special, it means the world
+ if(key.equalsIgnoreCase("ZZZ")) return -1;
+
+ int level = 0;
+ int start = 0;
+ for (int temp = key.indexOf("-"); temp > 0;) { //$NON-NLS-1$
+ level++;
+ start += temp + 1;
+ temp = key.substring(start).indexOf("-"); //$NON-NLS-1$
+ } // for
+ return level;
+ } // keyLevel
+
+ /**
+ * Displays a warning that the scenario composition may be invalid.
+ * For example the graph nesting within a simulation may be invalid
+ * An infector or inoculator may point to a node that does not exist.
+ * @param message
+ */
+ public static void displayScenarioCompositionWarning(final String message) {
+ try {
+ if(Display.getDefault() != null)
+ Display.getDefault().syncExec(new Runnable() {
+ public void run() {
+ try {
+ final IWorkbenchWindow window = PlatformUI
+ .getWorkbench().getActiveWorkbenchWindow();
+// final IStatus warning = new Status(IStatus.WARNING,
+// CorePlugin.PLUGIN_ID, 1, message, null);
+// ErrorDialog.openError(window.getShell(), null, null,
+// warning);
+ String [] labels = new String[2];
+ labels[1] = "Help";
+ labels[0] = "Okay";
+ MessageDialog dialog = new MessageDialog(window.getShell(), "Warning", null, message,
+ MessageDialog.WARNING, labels, 0) {
+ @Override
+ protected void buttonPressed(int buttonId) {
+ if(buttonId == 1)
+ PlatformUI.getWorkbench().getHelpSystem().displayHelp("org.eclipse.stem.doc.invalidnesting_contextid");
+ else
+ super.buttonPressed(buttonId);
+ }
+ };
+ dialog.open();
+ } catch(Exception e) {
+ // If we get this exception, it is because we're not running in
+ // eclipse.
+ }
+ } // run
+ });
+
+ else CorePlugin.logError(message, null);
+
+ } catch (final Error ncdfe) {
+ // Empty
+ } // catch
+ }
+
+} // Utility \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/CommonFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/CommonFactory.java
new file mode 100644
index 000000000..be98df4b7
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/CommonFactory.java
@@ -0,0 +1,105 @@
+package org.eclipse.stem.core.common;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.common.CommonPackage
+ * @generated
+ */
+public interface CommonFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ CommonFactory eINSTANCE = org.eclipse.stem.core.common.impl.CommonFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Dublin Core</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Dublin Core</em>'.
+ * @generated
+ */
+ DublinCore createDublinCore();
+
+ /**
+ * Returns a new object of class '<em>Identifiable Filter</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Identifiable Filter</em>'.
+ * @generated
+ */
+ IdentifiableFilter createIdentifiableFilter();
+
+ /**
+ * Returns a new object of class '<em>Double Value List</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Double Value List</em>'.
+ * @generated
+ */
+ DoubleValueList createDoubleValueList();
+
+ /**
+ * Returns a new object of class '<em>Double Value Matrix</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Double Value Matrix</em>'.
+ * @generated
+ */
+ DoubleValueMatrix createDoubleValueMatrix();
+
+ /**
+ * Returns a new object of class '<em>Double Value</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Double Value</em>'.
+ * @generated
+ */
+ DoubleValue createDoubleValue();
+
+ /**
+ * Returns a new object of class '<em>String Value List</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>String Value List</em>'.
+ * @generated
+ */
+ StringValueList createStringValueList();
+
+ /**
+ * Returns a new object of class '<em>String Value</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>String Value</em>'.
+ * @generated
+ */
+ StringValue createStringValue();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ CommonPackage getCommonPackage();
+
+} //CommonFactory
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/CommonPackage.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/CommonPackage.java
new file mode 100644
index 000000000..b18de6b93
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/CommonPackage.java
@@ -0,0 +1,1384 @@
+package org.eclipse.stem.core.common;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.common.CommonFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface CommonPackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "common";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http:///org/eclipse/stem/core/common.ecore";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "org.eclipse.stem.core.common";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ CommonPackage eINSTANCE = org.eclipse.stem.core.common.impl.CommonPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.common.impl.DublinCoreImpl <em>Dublin Core</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.common.impl.DublinCoreImpl
+ * @see org.eclipse.stem.core.common.impl.CommonPackageImpl#getDublinCore()
+ * @generated
+ */
+ int DUBLIN_CORE = 0;
+
+ /**
+ * The feature id for the '<em><b>Title</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DUBLIN_CORE__TITLE = 0;
+
+ /**
+ * The feature id for the '<em><b>Identifier</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DUBLIN_CORE__IDENTIFIER = 1;
+
+ /**
+ * The feature id for the '<em><b>Description</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DUBLIN_CORE__DESCRIPTION = 2;
+
+ /**
+ * The feature id for the '<em><b>Creator</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DUBLIN_CORE__CREATOR = 3;
+
+ /**
+ * The feature id for the '<em><b>Date</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DUBLIN_CORE__DATE = 4;
+
+ /**
+ * The feature id for the '<em><b>Format</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DUBLIN_CORE__FORMAT = 5;
+
+ /**
+ * The feature id for the '<em><b>Publisher</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DUBLIN_CORE__PUBLISHER = 6;
+
+ /**
+ * The feature id for the '<em><b>Coverage</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DUBLIN_CORE__COVERAGE = 7;
+
+ /**
+ * The feature id for the '<em><b>Contributor</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DUBLIN_CORE__CONTRIBUTOR = 8;
+
+ /**
+ * The feature id for the '<em><b>Relation</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DUBLIN_CORE__RELATION = 9;
+
+ /**
+ * The feature id for the '<em><b>Rights</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DUBLIN_CORE__RIGHTS = 10;
+
+ /**
+ * The feature id for the '<em><b>Source</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DUBLIN_CORE__SOURCE = 11;
+
+ /**
+ * The feature id for the '<em><b>Subject</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DUBLIN_CORE__SUBJECT = 12;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DUBLIN_CORE__TYPE = 13;
+
+ /**
+ * The feature id for the '<em><b>Language</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DUBLIN_CORE__LANGUAGE = 14;
+
+ /**
+ * The feature id for the '<em><b>Bibliographic Citation</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DUBLIN_CORE__BIBLIOGRAPHIC_CITATION = 15;
+
+ /**
+ * The feature id for the '<em><b>Created</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DUBLIN_CORE__CREATED = 16;
+
+ /**
+ * The feature id for the '<em><b>License</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DUBLIN_CORE__LICENSE = 17;
+
+ /**
+ * The feature id for the '<em><b>Required</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DUBLIN_CORE__REQUIRED = 18;
+
+ /**
+ * The feature id for the '<em><b>Spatial</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DUBLIN_CORE__SPATIAL = 19;
+
+ /**
+ * The feature id for the '<em><b>Valid</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DUBLIN_CORE__VALID = 20;
+
+ /**
+ * The number of structural features of the '<em>Dublin Core</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DUBLIN_CORE_FEATURE_COUNT = 21;
+
+ /**
+ * The meta object id for the '{@link java.lang.Comparable <em>Comparable</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Comparable
+ * @see org.eclipse.stem.core.common.impl.CommonPackageImpl#getComparable()
+ * @generated
+ */
+ int COMPARABLE = 2;
+
+ /**
+ * The number of structural features of the '<em>Comparable</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPARABLE_FEATURE_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.common.impl.IdentifiableImpl <em>Identifiable</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.common.impl.IdentifiableImpl
+ * @see org.eclipse.stem.core.common.impl.CommonPackageImpl#getIdentifiable()
+ * @generated
+ */
+ int IDENTIFIABLE = 1;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIABLE__URI = COMPARABLE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Type URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIABLE__TYPE_URI = COMPARABLE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIABLE__DUBLIN_CORE = COMPARABLE_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Identifiable</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIABLE_FEATURE_COUNT = COMPARABLE_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.common.impl.IdentifiableFilterImpl <em>Identifiable Filter</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.common.impl.IdentifiableFilterImpl
+ * @see org.eclipse.stem.core.common.impl.CommonPackageImpl#getIdentifiableFilter()
+ * @generated
+ */
+ int IDENTIFIABLE_FILTER = 3;
+
+ /**
+ * The number of structural features of the '<em>Identifiable Filter</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIABLE_FILTER_FEATURE_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.common.impl.DoubleValueListImpl <em>Double Value List</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.common.impl.DoubleValueListImpl
+ * @see org.eclipse.stem.core.common.impl.CommonPackageImpl#getDoubleValueList()
+ * @generated
+ */
+ int DOUBLE_VALUE_LIST = 4;
+
+ /**
+ * The feature id for the '<em><b>Values</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_VALUE_LIST__VALUES = 0;
+
+ /**
+ * The feature id for the '<em><b>Identifier</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_VALUE_LIST__IDENTIFIER = 1;
+
+ /**
+ * The number of structural features of the '<em>Double Value List</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_VALUE_LIST_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.common.impl.DoubleValueMatrixImpl <em>Double Value Matrix</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.common.impl.DoubleValueMatrixImpl
+ * @see org.eclipse.stem.core.common.impl.CommonPackageImpl#getDoubleValueMatrix()
+ * @generated
+ */
+ int DOUBLE_VALUE_MATRIX = 5;
+
+ /**
+ * The feature id for the '<em><b>Value Lists</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_VALUE_MATRIX__VALUE_LISTS = 0;
+
+ /**
+ * The number of structural features of the '<em>Double Value Matrix</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_VALUE_MATRIX_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.common.impl.DoubleValueImpl <em>Double Value</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.common.impl.DoubleValueImpl
+ * @see org.eclipse.stem.core.common.impl.CommonPackageImpl#getDoubleValue()
+ * @generated
+ */
+ int DOUBLE_VALUE = 6;
+
+ /**
+ * The feature id for the '<em><b>Identifier</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_VALUE__IDENTIFIER = ModifierPackage.MODIFIABLE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_VALUE__VALUE = ModifierPackage.MODIFIABLE_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Double Value</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_VALUE_FEATURE_COUNT = ModifierPackage.MODIFIABLE_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.common.impl.StringValueListImpl <em>String Value List</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.common.impl.StringValueListImpl
+ * @see org.eclipse.stem.core.common.impl.CommonPackageImpl#getStringValueList()
+ * @generated
+ */
+ int STRING_VALUE_LIST = 7;
+
+ /**
+ * The feature id for the '<em><b>Values</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_VALUE_LIST__VALUES = 0;
+
+ /**
+ * The number of structural features of the '<em>String Value List</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_VALUE_LIST_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.common.impl.StringValueImpl <em>String Value</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.common.impl.StringValueImpl
+ * @see org.eclipse.stem.core.common.impl.CommonPackageImpl#getStringValue()
+ * @generated
+ */
+ int STRING_VALUE = 8;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_VALUE__VALUE = ModifierPackage.MODIFIABLE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>String Value</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_VALUE_FEATURE_COUNT = ModifierPackage.MODIFIABLE_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.common.SanityChecker <em>Sanity Checker</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.common.SanityChecker
+ * @see org.eclipse.stem.core.common.impl.CommonPackageImpl#getSanityChecker()
+ * @generated
+ */
+ int SANITY_CHECKER = 9;
+
+ /**
+ * The number of structural features of the '<em>Sanity Checker</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SANITY_CHECKER_FEATURE_COUNT = 0;
+
+ /**
+ * The meta object id for the '<em>URI</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.common.util.URI
+ * @see org.eclipse.stem.core.common.impl.CommonPackageImpl#getURI()
+ * @generated
+ */
+ int URI = 10;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.common.DublinCore <em>Dublin Core</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Dublin Core</em>'.
+ * @see org.eclipse.stem.core.common.DublinCore
+ * @generated
+ */
+ EClass getDublinCore();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.common.DublinCore#getTitle <em>Title</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Title</em>'.
+ * @see org.eclipse.stem.core.common.DublinCore#getTitle()
+ * @see #getDublinCore()
+ * @generated
+ */
+ EAttribute getDublinCore_Title();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.common.DublinCore#getIdentifier <em>Identifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Identifier</em>'.
+ * @see org.eclipse.stem.core.common.DublinCore#getIdentifier()
+ * @see #getDublinCore()
+ * @generated
+ */
+ EAttribute getDublinCore_Identifier();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.common.DublinCore#getDescription <em>Description</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Description</em>'.
+ * @see org.eclipse.stem.core.common.DublinCore#getDescription()
+ * @see #getDublinCore()
+ * @generated
+ */
+ EAttribute getDublinCore_Description();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.common.DublinCore#getCreator <em>Creator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Creator</em>'.
+ * @see org.eclipse.stem.core.common.DublinCore#getCreator()
+ * @see #getDublinCore()
+ * @generated
+ */
+ EAttribute getDublinCore_Creator();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.common.DublinCore#getDate <em>Date</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Date</em>'.
+ * @see org.eclipse.stem.core.common.DublinCore#getDate()
+ * @see #getDublinCore()
+ * @generated
+ */
+ EAttribute getDublinCore_Date();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.common.DublinCore#getFormat <em>Format</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Format</em>'.
+ * @see org.eclipse.stem.core.common.DublinCore#getFormat()
+ * @see #getDublinCore()
+ * @generated
+ */
+ EAttribute getDublinCore_Format();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.common.DublinCore#getPublisher <em>Publisher</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Publisher</em>'.
+ * @see org.eclipse.stem.core.common.DublinCore#getPublisher()
+ * @see #getDublinCore()
+ * @generated
+ */
+ EAttribute getDublinCore_Publisher();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.common.DublinCore#getCoverage <em>Coverage</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Coverage</em>'.
+ * @see org.eclipse.stem.core.common.DublinCore#getCoverage()
+ * @see #getDublinCore()
+ * @generated
+ */
+ EAttribute getDublinCore_Coverage();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.common.DublinCore#getContributor <em>Contributor</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Contributor</em>'.
+ * @see org.eclipse.stem.core.common.DublinCore#getContributor()
+ * @see #getDublinCore()
+ * @generated
+ */
+ EAttribute getDublinCore_Contributor();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.common.DublinCore#getRelation <em>Relation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Relation</em>'.
+ * @see org.eclipse.stem.core.common.DublinCore#getRelation()
+ * @see #getDublinCore()
+ * @generated
+ */
+ EAttribute getDublinCore_Relation();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.common.DublinCore#getRights <em>Rights</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Rights</em>'.
+ * @see org.eclipse.stem.core.common.DublinCore#getRights()
+ * @see #getDublinCore()
+ * @generated
+ */
+ EAttribute getDublinCore_Rights();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.common.DublinCore#getSource <em>Source</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Source</em>'.
+ * @see org.eclipse.stem.core.common.DublinCore#getSource()
+ * @see #getDublinCore()
+ * @generated
+ */
+ EAttribute getDublinCore_Source();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.common.DublinCore#getSubject <em>Subject</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Subject</em>'.
+ * @see org.eclipse.stem.core.common.DublinCore#getSubject()
+ * @see #getDublinCore()
+ * @generated
+ */
+ EAttribute getDublinCore_Subject();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.common.DublinCore#getType <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Type</em>'.
+ * @see org.eclipse.stem.core.common.DublinCore#getType()
+ * @see #getDublinCore()
+ * @generated
+ */
+ EAttribute getDublinCore_Type();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.common.DublinCore#getLanguage <em>Language</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Language</em>'.
+ * @see org.eclipse.stem.core.common.DublinCore#getLanguage()
+ * @see #getDublinCore()
+ * @generated
+ */
+ EAttribute getDublinCore_Language();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.common.DublinCore#getBibliographicCitation <em>Bibliographic Citation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Bibliographic Citation</em>'.
+ * @see org.eclipse.stem.core.common.DublinCore#getBibliographicCitation()
+ * @see #getDublinCore()
+ * @generated
+ */
+ EAttribute getDublinCore_BibliographicCitation();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.common.DublinCore#getCreated <em>Created</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Created</em>'.
+ * @see org.eclipse.stem.core.common.DublinCore#getCreated()
+ * @see #getDublinCore()
+ * @generated
+ */
+ EAttribute getDublinCore_Created();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.common.DublinCore#getLicense <em>License</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>License</em>'.
+ * @see org.eclipse.stem.core.common.DublinCore#getLicense()
+ * @see #getDublinCore()
+ * @generated
+ */
+ EAttribute getDublinCore_License();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.common.DublinCore#getRequired <em>Required</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Required</em>'.
+ * @see org.eclipse.stem.core.common.DublinCore#getRequired()
+ * @see #getDublinCore()
+ * @generated
+ */
+ EAttribute getDublinCore_Required();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.common.DublinCore#getSpatial <em>Spatial</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Spatial</em>'.
+ * @see org.eclipse.stem.core.common.DublinCore#getSpatial()
+ * @see #getDublinCore()
+ * @generated
+ */
+ EAttribute getDublinCore_Spatial();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.common.DublinCore#getValid <em>Valid</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Valid</em>'.
+ * @see org.eclipse.stem.core.common.DublinCore#getValid()
+ * @see #getDublinCore()
+ * @generated
+ */
+ EAttribute getDublinCore_Valid();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.common.Identifiable <em>Identifiable</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Identifiable</em>'.
+ * @see org.eclipse.stem.core.common.Identifiable
+ * @generated
+ */
+ EClass getIdentifiable();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.common.Identifiable#getURI <em>URI</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>URI</em>'.
+ * @see org.eclipse.stem.core.common.Identifiable#getURI()
+ * @see #getIdentifiable()
+ * @generated
+ */
+ EAttribute getIdentifiable_URI();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.common.Identifiable#getTypeURI <em>Type URI</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Type URI</em>'.
+ * @see org.eclipse.stem.core.common.Identifiable#getTypeURI()
+ * @see #getIdentifiable()
+ * @generated
+ */
+ EAttribute getIdentifiable_TypeURI();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.stem.core.common.Identifiable#getDublinCore <em>Dublin Core</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Dublin Core</em>'.
+ * @see org.eclipse.stem.core.common.Identifiable#getDublinCore()
+ * @see #getIdentifiable()
+ * @generated
+ */
+ EReference getIdentifiable_DublinCore();
+
+ /**
+ * Returns the meta object for class '{@link java.lang.Comparable <em>Comparable</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Comparable</em>'.
+ * @see java.lang.Comparable
+ * @model instanceClass="java.lang.Comparable" typeParameters="T"
+ * @generated
+ */
+ EClass getComparable();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.common.IdentifiableFilter <em>Identifiable Filter</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Identifiable Filter</em>'.
+ * @see org.eclipse.stem.core.common.IdentifiableFilter
+ * @generated
+ */
+ EClass getIdentifiableFilter();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.common.DoubleValueList <em>Double Value List</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Double Value List</em>'.
+ * @see org.eclipse.stem.core.common.DoubleValueList
+ * @generated
+ */
+ EClass getDoubleValueList();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.stem.core.common.DoubleValueList#getValues <em>Values</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Values</em>'.
+ * @see org.eclipse.stem.core.common.DoubleValueList#getValues()
+ * @see #getDoubleValueList()
+ * @generated
+ */
+ EReference getDoubleValueList_Values();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.common.DoubleValueList#getIdentifier <em>Identifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Identifier</em>'.
+ * @see org.eclipse.stem.core.common.DoubleValueList#getIdentifier()
+ * @see #getDoubleValueList()
+ * @generated
+ */
+ EAttribute getDoubleValueList_Identifier();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.common.DoubleValueMatrix <em>Double Value Matrix</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Double Value Matrix</em>'.
+ * @see org.eclipse.stem.core.common.DoubleValueMatrix
+ * @generated
+ */
+ EClass getDoubleValueMatrix();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.stem.core.common.DoubleValueMatrix#getValueLists <em>Value Lists</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Value Lists</em>'.
+ * @see org.eclipse.stem.core.common.DoubleValueMatrix#getValueLists()
+ * @see #getDoubleValueMatrix()
+ * @generated
+ */
+ EReference getDoubleValueMatrix_ValueLists();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.common.DoubleValue <em>Double Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Double Value</em>'.
+ * @see org.eclipse.stem.core.common.DoubleValue
+ * @generated
+ */
+ EClass getDoubleValue();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.common.DoubleValue#getIdentifier <em>Identifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Identifier</em>'.
+ * @see org.eclipse.stem.core.common.DoubleValue#getIdentifier()
+ * @see #getDoubleValue()
+ * @generated
+ */
+ EAttribute getDoubleValue_Identifier();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.common.DoubleValue#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see org.eclipse.stem.core.common.DoubleValue#getValue()
+ * @see #getDoubleValue()
+ * @generated
+ */
+ EAttribute getDoubleValue_Value();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.common.StringValueList <em>String Value List</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>String Value List</em>'.
+ * @see org.eclipse.stem.core.common.StringValueList
+ * @generated
+ */
+ EClass getStringValueList();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.stem.core.common.StringValueList#getValues <em>Values</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Values</em>'.
+ * @see org.eclipse.stem.core.common.StringValueList#getValues()
+ * @see #getStringValueList()
+ * @generated
+ */
+ EReference getStringValueList_Values();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.common.StringValue <em>String Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>String Value</em>'.
+ * @see org.eclipse.stem.core.common.StringValue
+ * @generated
+ */
+ EClass getStringValue();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.common.StringValue#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see org.eclipse.stem.core.common.StringValue#getValue()
+ * @see #getStringValue()
+ * @generated
+ */
+ EAttribute getStringValue_Value();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.common.SanityChecker <em>Sanity Checker</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Sanity Checker</em>'.
+ * @see org.eclipse.stem.core.common.SanityChecker
+ * @generated
+ */
+ EClass getSanityChecker();
+
+ /**
+ * Returns the meta object for data type '{@link org.eclipse.emf.common.util.URI <em>URI</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>URI</em>'.
+ * @see org.eclipse.emf.common.util.URI
+ * @model instanceClass="org.eclipse.emf.common.util.URI"
+ * @generated
+ */
+ EDataType getURI();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ CommonFactory getCommonFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.common.impl.DublinCoreImpl <em>Dublin Core</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.common.impl.DublinCoreImpl
+ * @see org.eclipse.stem.core.common.impl.CommonPackageImpl#getDublinCore()
+ * @generated
+ */
+ EClass DUBLIN_CORE = eINSTANCE.getDublinCore();
+
+ /**
+ * The meta object literal for the '<em><b>Title</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DUBLIN_CORE__TITLE = eINSTANCE.getDublinCore_Title();
+
+ /**
+ * The meta object literal for the '<em><b>Identifier</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DUBLIN_CORE__IDENTIFIER = eINSTANCE.getDublinCore_Identifier();
+
+ /**
+ * The meta object literal for the '<em><b>Description</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DUBLIN_CORE__DESCRIPTION = eINSTANCE.getDublinCore_Description();
+
+ /**
+ * The meta object literal for the '<em><b>Creator</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DUBLIN_CORE__CREATOR = eINSTANCE.getDublinCore_Creator();
+
+ /**
+ * The meta object literal for the '<em><b>Date</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DUBLIN_CORE__DATE = eINSTANCE.getDublinCore_Date();
+
+ /**
+ * The meta object literal for the '<em><b>Format</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DUBLIN_CORE__FORMAT = eINSTANCE.getDublinCore_Format();
+
+ /**
+ * The meta object literal for the '<em><b>Publisher</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DUBLIN_CORE__PUBLISHER = eINSTANCE.getDublinCore_Publisher();
+
+ /**
+ * The meta object literal for the '<em><b>Coverage</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DUBLIN_CORE__COVERAGE = eINSTANCE.getDublinCore_Coverage();
+
+ /**
+ * The meta object literal for the '<em><b>Contributor</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DUBLIN_CORE__CONTRIBUTOR = eINSTANCE.getDublinCore_Contributor();
+
+ /**
+ * The meta object literal for the '<em><b>Relation</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DUBLIN_CORE__RELATION = eINSTANCE.getDublinCore_Relation();
+
+ /**
+ * The meta object literal for the '<em><b>Rights</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DUBLIN_CORE__RIGHTS = eINSTANCE.getDublinCore_Rights();
+
+ /**
+ * The meta object literal for the '<em><b>Source</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DUBLIN_CORE__SOURCE = eINSTANCE.getDublinCore_Source();
+
+ /**
+ * The meta object literal for the '<em><b>Subject</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DUBLIN_CORE__SUBJECT = eINSTANCE.getDublinCore_Subject();
+
+ /**
+ * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DUBLIN_CORE__TYPE = eINSTANCE.getDublinCore_Type();
+
+ /**
+ * The meta object literal for the '<em><b>Language</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DUBLIN_CORE__LANGUAGE = eINSTANCE.getDublinCore_Language();
+
+ /**
+ * The meta object literal for the '<em><b>Bibliographic Citation</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DUBLIN_CORE__BIBLIOGRAPHIC_CITATION = eINSTANCE.getDublinCore_BibliographicCitation();
+
+ /**
+ * The meta object literal for the '<em><b>Created</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DUBLIN_CORE__CREATED = eINSTANCE.getDublinCore_Created();
+
+ /**
+ * The meta object literal for the '<em><b>License</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DUBLIN_CORE__LICENSE = eINSTANCE.getDublinCore_License();
+
+ /**
+ * The meta object literal for the '<em><b>Required</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DUBLIN_CORE__REQUIRED = eINSTANCE.getDublinCore_Required();
+
+ /**
+ * The meta object literal for the '<em><b>Spatial</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DUBLIN_CORE__SPATIAL = eINSTANCE.getDublinCore_Spatial();
+
+ /**
+ * The meta object literal for the '<em><b>Valid</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DUBLIN_CORE__VALID = eINSTANCE.getDublinCore_Valid();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.common.impl.IdentifiableImpl <em>Identifiable</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.common.impl.IdentifiableImpl
+ * @see org.eclipse.stem.core.common.impl.CommonPackageImpl#getIdentifiable()
+ * @generated
+ */
+ EClass IDENTIFIABLE = eINSTANCE.getIdentifiable();
+
+ /**
+ * The meta object literal for the '<em><b>URI</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute IDENTIFIABLE__URI = eINSTANCE.getIdentifiable_URI();
+
+ /**
+ * The meta object literal for the '<em><b>Type URI</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute IDENTIFIABLE__TYPE_URI = eINSTANCE.getIdentifiable_TypeURI();
+
+ /**
+ * The meta object literal for the '<em><b>Dublin Core</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference IDENTIFIABLE__DUBLIN_CORE = eINSTANCE.getIdentifiable_DublinCore();
+
+ /**
+ * The meta object literal for the '{@link java.lang.Comparable <em>Comparable</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Comparable
+ * @see org.eclipse.stem.core.common.impl.CommonPackageImpl#getComparable()
+ * @generated
+ */
+ EClass COMPARABLE = eINSTANCE.getComparable();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.common.impl.IdentifiableFilterImpl <em>Identifiable Filter</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.common.impl.IdentifiableFilterImpl
+ * @see org.eclipse.stem.core.common.impl.CommonPackageImpl#getIdentifiableFilter()
+ * @generated
+ */
+ EClass IDENTIFIABLE_FILTER = eINSTANCE.getIdentifiableFilter();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.common.impl.DoubleValueListImpl <em>Double Value List</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.common.impl.DoubleValueListImpl
+ * @see org.eclipse.stem.core.common.impl.CommonPackageImpl#getDoubleValueList()
+ * @generated
+ */
+ EClass DOUBLE_VALUE_LIST = eINSTANCE.getDoubleValueList();
+
+ /**
+ * The meta object literal for the '<em><b>Values</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DOUBLE_VALUE_LIST__VALUES = eINSTANCE.getDoubleValueList_Values();
+
+ /**
+ * The meta object literal for the '<em><b>Identifier</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DOUBLE_VALUE_LIST__IDENTIFIER = eINSTANCE.getDoubleValueList_Identifier();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.common.impl.DoubleValueMatrixImpl <em>Double Value Matrix</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.common.impl.DoubleValueMatrixImpl
+ * @see org.eclipse.stem.core.common.impl.CommonPackageImpl#getDoubleValueMatrix()
+ * @generated
+ */
+ EClass DOUBLE_VALUE_MATRIX = eINSTANCE.getDoubleValueMatrix();
+
+ /**
+ * The meta object literal for the '<em><b>Value Lists</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DOUBLE_VALUE_MATRIX__VALUE_LISTS = eINSTANCE.getDoubleValueMatrix_ValueLists();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.common.impl.DoubleValueImpl <em>Double Value</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.common.impl.DoubleValueImpl
+ * @see org.eclipse.stem.core.common.impl.CommonPackageImpl#getDoubleValue()
+ * @generated
+ */
+ EClass DOUBLE_VALUE = eINSTANCE.getDoubleValue();
+
+ /**
+ * The meta object literal for the '<em><b>Identifier</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DOUBLE_VALUE__IDENTIFIER = eINSTANCE.getDoubleValue_Identifier();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DOUBLE_VALUE__VALUE = eINSTANCE.getDoubleValue_Value();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.common.impl.StringValueListImpl <em>String Value List</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.common.impl.StringValueListImpl
+ * @see org.eclipse.stem.core.common.impl.CommonPackageImpl#getStringValueList()
+ * @generated
+ */
+ EClass STRING_VALUE_LIST = eINSTANCE.getStringValueList();
+
+ /**
+ * The meta object literal for the '<em><b>Values</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference STRING_VALUE_LIST__VALUES = eINSTANCE.getStringValueList_Values();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.common.impl.StringValueImpl <em>String Value</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.common.impl.StringValueImpl
+ * @see org.eclipse.stem.core.common.impl.CommonPackageImpl#getStringValue()
+ * @generated
+ */
+ EClass STRING_VALUE = eINSTANCE.getStringValue();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute STRING_VALUE__VALUE = eINSTANCE.getStringValue_Value();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.common.SanityChecker <em>Sanity Checker</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.common.SanityChecker
+ * @see org.eclipse.stem.core.common.impl.CommonPackageImpl#getSanityChecker()
+ * @generated
+ */
+ EClass SANITY_CHECKER = eINSTANCE.getSanityChecker();
+
+ /**
+ * The meta object literal for the '<em>URI</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.common.util.URI
+ * @see org.eclipse.stem.core.common.impl.CommonPackageImpl#getURI()
+ * @generated
+ */
+ EDataType URI = eINSTANCE.getURI();
+
+ }
+
+} //CommonPackage
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/DoubleValue.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/DoubleValue.java
new file mode 100644
index 000000000..a75357e01
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/DoubleValue.java
@@ -0,0 +1,86 @@
+package org.eclipse.stem.core.common;
+
+/*******************************************************************************
+ * Copyright (c) 2010 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
+ *******************************************************************************/
+import org.eclipse.stem.core.modifier.Modifiable;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Double Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.common.DoubleValue#getIdentifier <em>Identifier</em>}</li>
+ * <li>{@link org.eclipse.stem.core.common.DoubleValue#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.core.common.CommonPackage#getDoubleValue()
+ * @model
+ * @generated
+ */
+public interface DoubleValue extends Modifiable {
+ /**
+ * Returns the value of the '<em><b>Identifier</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Identifier</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Identifier</em>' attribute.
+ * @see #setIdentifier(String)
+ * @see org.eclipse.stem.core.common.CommonPackage#getDoubleValue_Identifier()
+ * @model
+ * @generated
+ */
+ String getIdentifier();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.common.DoubleValue#getIdentifier <em>Identifier</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Identifier</em>' attribute.
+ * @see #getIdentifier()
+ * @generated
+ */
+ void setIdentifier(String value);
+
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * The default value is <code>"0.0"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Value</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(double)
+ * @see org.eclipse.stem.core.common.CommonPackage#getDoubleValue_Value()
+ * @model default="0.0"
+ * @generated
+ */
+ double getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.common.DoubleValue#getValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(double value);
+
+} // DoubleValue
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/DoubleValueList.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/DoubleValueList.java
new file mode 100644
index 000000000..887200ff9
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/DoubleValueList.java
@@ -0,0 +1,76 @@
+package org.eclipse.stem.core.common;
+
+/*******************************************************************************
+ * Copyright (c) 2010 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
+ *******************************************************************************/
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Double Value List</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.common.DoubleValueList#getValues <em>Values</em>}</li>
+ * <li>{@link org.eclipse.stem.core.common.DoubleValueList#getIdentifier <em>Identifier</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.core.common.CommonPackage#getDoubleValueList()
+ * @model
+ * @generated
+ */
+public interface DoubleValueList extends EObject {
+ /**
+ * Returns the value of the '<em><b>Values</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.stem.core.common.DoubleValue}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Values</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Values</em>' containment reference list.
+ * @see org.eclipse.stem.core.common.CommonPackage#getDoubleValueList_Values()
+ * @model containment="true"
+ * @generated
+ */
+ EList<DoubleValue> getValues();
+
+ /**
+ * Returns the value of the '<em><b>Identifier</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Identifier</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Identifier</em>' attribute.
+ * @see #setIdentifier(String)
+ * @see org.eclipse.stem.core.common.CommonPackage#getDoubleValueList_Identifier()
+ * @model
+ * @generated
+ */
+ String getIdentifier();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.common.DoubleValueList#getIdentifier <em>Identifier</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Identifier</em>' attribute.
+ * @see #getIdentifier()
+ * @generated
+ */
+ void setIdentifier(String value);
+
+} // DoubleValueList
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/DoubleValueMatrix.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/DoubleValueMatrix.java
new file mode 100644
index 000000000..4fdf445fe
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/DoubleValueMatrix.java
@@ -0,0 +1,49 @@
+package org.eclipse.stem.core.common;
+
+/*******************************************************************************
+ * Copyright (c) 2010 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
+ *******************************************************************************/
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Double Value Matrix</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.common.DoubleValueMatrix#getValueLists <em>Value Lists</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.core.common.CommonPackage#getDoubleValueMatrix()
+ * @model
+ * @generated
+ */
+public interface DoubleValueMatrix extends EObject {
+ /**
+ * Returns the value of the '<em><b>Value Lists</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.stem.core.common.DoubleValueList}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Value Lists</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value Lists</em>' containment reference list.
+ * @see org.eclipse.stem.core.common.CommonPackage#getDoubleValueMatrix_ValueLists()
+ * @model containment="true"
+ * @generated
+ */
+ EList<DoubleValueList> getValueLists();
+
+} // DoubleValueMatrix
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/DublinCore.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/DublinCore.java
new file mode 100644
index 000000000..c1a360d30
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/DublinCore.java
@@ -0,0 +1,841 @@
+// DublinCore.java
+package org.eclipse.stem.core.common;
+
+/*******************************************************************************
+ * Copyright (c) 2006, 2009 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
+ *******************************************************************************/
+
+import java.util.Date;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.stem.core.graph.Graph;
+
+/**
+ * A <code>DublinCore</code> instance records a set of attributes that describe
+ * a "resource" as defined in the "Dublin Core" metadata standard <a
+ * href="http://www.dublincore.org/" >http://www.dublincore.org/</a>. These
+ * attributes are used to specify the source and details of the various
+ * components that are combined to create the canonical {@link Graph} that is
+ * used in STEM as the representational framework for simulation state.
+ * <p>
+ * Note that not all of the dublin core attributes are required.
+ * </p>
+ *
+ * @model
+ */
+public interface DublinCore extends EObject {
+
+ /**
+ * The XML attribute name for the "Format" of the resource.
+ *
+ * @see #getFormat()
+ * @see #setFormat(String)
+ */
+ String FORMAT = "format";
+
+ /**
+ * The XML attribute name for the "Identifier" of the resource. In STEM this
+ * is the URI of the resource.
+ *
+ * @see #getIdentifier()
+ * @see #setIdentifier(String)
+ */
+ String IDENTIFIER = "identifier";
+
+ /**
+ * The XML attribute name for the "Title" of the resource.
+ *
+ * @see #getTitle()
+ * @see #setTitle(String)
+ */
+ String TITLE = "title";
+
+ /**
+ * provides the feature by featureName (String) if it exists.
+ * On failure return null
+ * @param featureName
+ * @return feature or null
+ */
+ public abstract EStructuralFeature getFeature(String featureName);
+
+ /**
+ * <h1>Title</h1>
+ * <ul>
+ * <li>Definition:</li>
+ * "A name given to the resource"
+ * <li>Comment:</li>
+ * Usually the formal name of the resource.
+ * <li>Example:</li>
+ * "United States Administration Level 0"
+ * <li>URI:</li>
+ * <a href="http://purl.org/dc/elements/1.1/title">
+ * http://purl.org/dc/elements/1.1/title</a>
+ * </ul>
+ *
+ * @return the title of the resource.
+ * @model required="false"
+ */
+ String getTitle();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.common.DublinCore#getTitle <em>Title</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @param value the new value of the '<em>Title</em>' attribute.
+ * @see #getTitle()
+ * @generated
+ */
+ void setTitle(String value);
+
+ /**
+ * <h1>Identifier</h1>
+ * <ul>
+ * <li>Definition:</li>
+ * "An unambiguous reference to the resource within a given context."
+ * <li>Comment:</li>
+ * The URL of the resource.
+ * <li>Example:</li>
+ * "stem://org.eclipse.stem/stem/foo"
+ * <li>URI:</li>
+ * <a href="http://purl.org/dc/elements/1.1/identifier">
+ * http://purl.org/dc/elements/1.1/identifier</a>
+ * </ul>
+ *
+ * @return the identifier of the resource.
+ * @model required="false"
+ */
+ String getIdentifier();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.common.DublinCore#getIdentifier <em>Identifier</em>}' attribute.
+ * <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ * @param value the new value of the '<em>Identifier</em>' attribute.
+ * @see #getIdentifier()
+ * @generated
+ */
+ void setIdentifier(String value);
+
+ /**
+ * <h1>Description</h1>
+ * <ul>
+ * <li>Definition:</li>
+ * "An account of the content of the resource."
+ * <li>Comment:</li>
+ * Typically a short abstract.
+ * <li>Example:</li>
+ * "All of the cattle farms in the U.K. as of 2006."
+ * <li>URI:</li>
+ * <a href="http://purl.org/dc/elements/1.1/description">
+ * http://purl.org/dc/elements/1.1/description</a>
+ * </ul>
+ *
+ * @return the description of the resource.
+ * @model required="false"
+ */
+ String getDescription();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.common.DublinCore#getDescription <em>Description</em>}' attribute.
+ * <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ * @param value the new value of the '<em>Description</em>' attribute.
+ * @see #getDescription()
+ * @generated
+ */
+ void setDescription(String value);
+
+ /**
+ * <h1>Creator</h1>
+ * <ul>
+ * <li>Definition:</li>
+ * "An entity primarily responsible for making the content of the resource."
+ * <li>Comment:</li>
+ * Typically the name of a person or organization.
+ * <li>Example:</li>
+ * "IBM"
+ * <li>URI:</li>
+ * <a href="http://purl.org/dc/elements/1.1/creator">
+ * http://purl.org/dc/elements/1.1/creator</a>
+ * </ul>
+ *
+ * @return the creator of the resource.
+ * @model required="false"
+ */
+ String getCreator();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.stem.core.common.DublinCore#getCreator
+ * <em>Creator</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @param value
+ * the new value of the '<em>Creator</em>' attribute.
+ * @see #getCreator()
+ * @generated
+ */
+ void setCreator(String value);
+
+ /**
+ * <h1>Date</h1>
+ * <ul>
+ * <li>Definition:</li>
+ * "A date associated with an event in the life cycle of the resource."
+ * <li>Comment:</li>
+ * Typically YYYY-MM-DD. See: <a href="http://www.w3.org/TR/NOTE-datetime">
+ * http://www.w3.org/TR/NOTE-datetime</a>, also ISO&nbsp;8601.
+ * <li>Example:</li>
+ * "2006-03-14"
+ * <li>URI:</li>
+ * <a href="http://purl.org/dc/elements/1.1/date">
+ * http://purl.org/dc/elements/1.1/date</a>
+ * </ul>
+ *
+ * @return the date of the resource.
+ * @model required="false"
+ */
+ String getDate();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.common.DublinCore#getDate <em>Date</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @param value the new value of the '<em>Date</em>' attribute.
+ * @see #getDate()
+ * @generated
+ */
+ void setDate(String value);
+
+ /**
+ * Set the date.
+ *
+ * @param date
+ *
+ * @see #setDate(String)
+ * @see #getDate()
+ * @see #setCreated(Date)
+ */
+ void setDate(final Date date);
+
+ /**
+ * <h1>Format</h1>
+ * <ul>
+ * <li>Definition:</li>
+ * "The physical or digital manifestation of the resource."
+ * <li>Comment:</li>
+ * A MIME type perhaps.
+ * <li>Example:</li> ?
+ * <li>URI:</li>
+ * <a href="http://purl.org/dc/elements/1.1/format">
+ * http://purl.org/dc/elements/1.1/format</a>
+ * </ul>
+ *
+ * @return the format of the resource.
+ * @model required="false"
+ */
+ String getFormat();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.stem.core.common.DublinCore#getFormat
+ * <em>Format</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @param value
+ * the new value of the '<em>Format</em>' attribute.
+ * @see #getFormat()
+ * @generated
+ */
+ void setFormat(String value);
+
+ /**
+ * <h1>Publisher</h1>
+ * <ul>
+ * <li>Definition:</li>
+ * "An entity responsible for making the resource available."
+ * <li>Comment:</li>
+ * Typically the name of a person, organization or service.
+ * <li>Example:</li>
+ * "IBM"
+ * <li>URI:</li>
+ * <a href="http://purl.org/dc/elements/1.1/publisher">
+ * http://purl.org/dc/elements/1.1/publisher</a>
+ * </ul>
+ *
+ * @return the publisher of the resource.
+ * @model required="false"
+ */
+ String getPublisher();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.stem.core.common.DublinCore#getPublisher
+ * <em>Publisher</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @param value
+ * the new value of the '<em>Publisher</em>' attribute.
+ * @see #getPublisher()
+ * @generated
+ */
+ void setPublisher(String value);
+
+ /**
+ * <h1>Coverage</h1>
+ * <ul>
+ * <li>Definition:</li>
+ * "The extent or scope of the content of the resource."
+ * <li>Comment:</li>
+ * Could include spatial location, temporal period (date or date range),
+ * jurisdiction. See, the <a
+ * href="http://www.dublincore.org/documents/dcmi-point/"> DCMI Point </a>,
+ * <a href="http://www.getty.edu/research/tools/vocabulary/tgn/index.html">
+ * Thesaurus of Geographic Names</a>, <a
+ * href="http://www.dublincore.org/documents/dcmi-period/">DCMI Period</a>
+ * <li>Example:</li>
+ * "United States UN Administration level 2, 1900"
+ * <li>URI:</li>
+ * <a href="http://purl.org/dc/elements/1.1/coverage">
+ * http://purl.org/dc/elements/1.1/coverage</a>
+ * </ul>
+ *
+ * @return the coverage of the resource.
+ * @model required="false"
+ */
+ String getCoverage();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.stem.core.common.DublinCore#getCoverage
+ * <em>Coverage</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @param value
+ * the new value of the '<em>Coverage</em>' attribute.
+ * @see #getCoverage()
+ * @generated
+ */
+ void setCoverage(String value);
+
+ /**
+ * <h1>Contributor</h1>
+ * <ul>
+ * <li>Definition:</li>
+ * "An entity responsible for making contributions to the resource"
+ * <li>Comment:</li>
+ * Typically the name of a person, organization or service.
+ * <li>Example:</li>
+ * "IBM"
+ * <li>URI:</li>
+ * <a href="http://purl.org/dc/elements/1.1/contributor">
+ * http://purl.org/dc/elements/1.1/contributor</a>
+ * </ul>
+ *
+ * @return the contributor of the resource.
+ * @model required="false"
+ */
+ String getContributor();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.common.DublinCore#getContributor <em>Contributor</em>}' attribute.
+ * <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ * @param value the new value of the '<em>Contributor</em>' attribute.
+ * @see #getContributor()
+ * @generated
+ */
+ void setContributor(String value);
+
+ /**
+ * <h1>Relation</h1>
+ * <ul>
+ * <li>Definition:</li>
+ * "A reference to a related resource."
+ * <li>Comment:</li>
+ * Perhaps a URL?
+ * <li>Example:</li> ?
+ * <li>URI:</li>
+ * <a href="http://purl.org/dc/elements/1.1/relation">
+ * http://purl.org/dc/elements/1.1/relation</a>
+ * </ul>
+ *
+ * @return the relation of the resource.
+ * @model required="false"
+ */
+ String getRelation();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.stem.core.common.DublinCore#getRelation
+ * <em>Relation</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @param value
+ * the new value of the '<em>Relation</em>' attribute.
+ * @see #getRelation()
+ * @generated
+ */
+ void setRelation(String value);
+
+ /**
+ * <h1>Rights</h1>
+ * <ul>
+ * <li>Definition:</li>
+ * "Information about rights held in and over the resource."
+ * <li>Comment:</li>
+ * Typically, a rights management statement.
+ * <li>Example:</li>
+ * &#169;IBM 2006
+ * <li>URI:</li>
+ * <a href="http://purl.org/dc/elements/1.1/rights">
+ * http://purl.org/dc/elements/1.1/rights</a>
+ * </ul>
+ *
+ * @return the rights of the resource.
+ * @model required="false"
+ */
+ String getRights();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.stem.core.common.DublinCore#getRights
+ * <em>Rights</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @param value
+ * the new value of the '<em>Rights</em>' attribute.
+ * @see #getRights()
+ * @generated
+ */
+ void setRights(String value);
+
+ /**
+ * <h1>Source</h1>
+ * <ul>
+ * <li>Definition:</li>
+ * "A reference to a resource from which the present resource is derived."
+ * <li>Comment:</li>
+ * The original source of the contents of the resource.
+ * <li>Example:</li>
+ * "US Tiger files"
+ * <li>URI:</li>
+ * <a href="http://purl.org/dc/elements/1.1/source">
+ * http://purl.org/dc/elements/1.1/source</a>
+ * </ul>
+ *
+ * @return the source of the resource.
+ * @model required="false"
+ */
+ String getSource();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.stem.core.common.DublinCore#getSource
+ * <em>Source</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @param value
+ * the new value of the '<em>Source</em>' attribute.
+ * @see #getSource()
+ * @generated
+ */
+ void setSource(String value);
+
+ /**
+ * <h1>Subject</h1>
+ * <ul>
+ * <li>Definition:</li>
+ * "The topic of the content of the resource"
+ * <li>Comment:</li>
+ * Typically keywords or classification codes.
+ * <li>Example:</li> ?
+ * <li>URI:</li>
+ * <a href="http://purl.org/dc/elements/1.1/subject">
+ * http://purl.org/dc/elements/1.1/subject</a>
+ * </ul>
+ *
+ * @return the subject of the resource.
+ * @model required="false"
+ */
+ String getSubject();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.stem.core.common.DublinCore#getSubject
+ * <em>Subject</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @param value
+ * the new value of the '<em>Subject</em>' attribute.
+ * @see #getSubject()
+ * @generated
+ */
+ void setSubject(String value);
+
+ /**
+ * <h1>Type</h1>
+ * <ul>
+ * <li>Definition:</li>
+ * "The nature or genre of the resource."
+ * <li>Comment:</li>
+ * See: <a
+ * href="http://dublincore.org/documents/dcmi-type-vocabulary/">http:
+ * //dublincore.org/documents/dcmi-type-vocabulary/</a>
+ * <li>Example:</li> ?
+ * <li>URI:</li>
+ * <a href="http://purl.org/dc/elements/1.1/type">
+ * http://purl.org/dc/elements/1.1/type</a>
+ * </ul>
+ *
+ * @return the type of the resource.
+ * @model required="false"
+ */
+ String getType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.common.DublinCore#getType <em>Type</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @param value the new value of the '<em>Type</em>' attribute.
+ * @see #getType()
+ * @generated
+ */
+ void setType(String value);
+
+ /**
+ * <h1>Language</h1>
+ * <ul>
+ * <li>Definition:</li>
+ * "A language of the intellectual content of the resource."
+ * <li>Comment:</li>
+ * Best practice <a href="http://www.ietf.org/rfc/rfc3066.txt"> RFC 3066</a>
+ * and <a href="http://www.loc.gov/standards/iso639-2/">ISO 639</a>
+ * <li>Example:</li>
+ * "en-GB"
+ * <li>URI:</li>
+ * <a href="http://purl.org/dc/elements/1.1/language">
+ * http://purl.org/dc/elements/1.1/language</a>
+ * </ul>
+ *
+ * @return the language of the resource.
+ * @model required="false"
+ */
+ String getLanguage();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.stem.core.common.DublinCore#getLanguage
+ * <em>Language</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @param value
+ * the new value of the '<em>Language</em>' attribute.
+ * @see #getLanguage()
+ * @generated
+ */
+ void setLanguage(String value);
+
+ /**
+ * h1>Bibliographic Citation</h1>
+ * <ul>
+ * <li>Definition:</li>
+ * "A bibliographic reference for the resource."
+ * <li>Comment:</li>
+ *
+ * <li>Example:</li>
+ * Ford, D.A., "STEM and the art of computer maintenance", Journal of
+ * Foobar, 2006.
+ * <li>URI:</li>
+ * <a href="http://purl.org/dc/terms/1.1/bibliographicCitation">
+ * http://purl.org/dc/terms/1.1/bibliographicCitation</a>
+ * </ul>
+ *
+ * @return a bibliographic citation
+ * @model required="false"
+ */
+ String getBibliographicCitation();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.common.DublinCore#getBibliographicCitation <em>Bibliographic Citation</em>}' attribute.
+ * <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ * @param value the new value of the '<em>Bibliographic Citation</em>' attribute.
+ * @see #getBibliographicCitation()
+ * @generated
+ */
+ void setBibliographicCitation(String value);
+
+ /**
+ * h1>Created</h1>
+ * <ul>
+ * <li>Definition:</li>
+ * "The creation date of the resource."
+ * <li>Comment:</li>
+ * Basically, the format is: YYYY-MM-DD
+ * <li>Example:</li>
+ * 2006-03-29
+ * <li>URI:</li>
+ * <a href="http://purl.org/dc/terms/1.1/created">
+ * http://purl.org/dc/terms/1.1/created</a>
+ * </ul>
+ *
+ * @return the date the resource was created.
+ * @model required="false"
+ */
+ String getCreated();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.stem.core.common.DublinCore#getCreated
+ * <em>Created</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @param value
+ * the new value of the '<em>Created</em>' attribute.
+ * @see #getCreated()
+ * @generated
+ */
+ void setCreated(String value);
+
+ /**
+ * Set the date the resource was created.
+ *
+ * @param date
+ * the creation date of the resource
+ *
+ * @see #setCreated(String)
+ * @see #getCreated()
+ * @see #setDate(Date)
+ * @see
+ */
+ void setCreated(final Date date);
+
+ /**
+ * h1>License</h1>
+ * <ul>
+ * <li>Definition:</li>
+ *"A legal document giving official permission to do something with the
+ * resource."
+ * <li>Comment:</li>
+ * Best practice is to use a URI to the specific license.
+ * <li>Example:</li>
+ * http://creativecommons.org/license/
+ * <li>URI:</li>
+ * <a href="http://purl.org/dc/terms/1.1/license">
+ * http://purl.org/dc/terms/1.1/license</a>
+ * </ul>
+ *
+ * @return the license associated with the resource
+ * @model required="false"
+ */
+ String getLicense();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.stem.core.common.DublinCore#getLicense
+ * <em>License</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @param value
+ * the new value of the '<em>License</em>' attribute.
+ * @see #getLicense()
+ * @generated
+ */
+ void setLicense(String value);
+
+ /**
+ * h1>Requires</h1>
+ * <ul>
+ * <li>Definition:</li>
+ *"The described resource requires the referenced resource to support its
+ * function, delivery, or coherence of content."
+ * <li>Comment:</li>
+ * In STEM this is the URI that is the identifier of the required resource.
+ * <li>Example:</li>
+ * stem:/graphs/sample/sample1.graph
+ * <li>URI:</li>
+ * <a href="http://purl.org/dc/terms/1.1/requires">
+ * http://purl.org/dc/terms/1.1/requires</a>
+ * </ul>
+ *
+ * @return the identifier of a resource required by this resource
+ * @model required="false"
+ */
+ String getRequired();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.stem.core.common.DublinCore#getRequired
+ * <em>Required</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @param value
+ * the new value of the '<em>Required</em>' attribute.
+ * @see #getRequired()
+ * @generated
+ */
+ void setRequired(String value);
+
+ /**
+ * h1>Spatial</h1>
+ * <ul>
+ * <li>Definition:</li>
+ * "Spatial characteristics of the intellectual content of the resource."
+ * <li>Comment:</li>
+ * See <a href="http://www.dublincore.org/documents/dcmi-point/">
+ * http://www.dublincore.org/documents/dcmi-point/</a> However, this should
+ * probably be a URI to a file that contains the actual lat/long data that
+ * describes a polygon that defines the spatial outline of a place.
+ * <li>Example:</li> ?
+ * <li>URI:</li>
+ * <a href="http://purl.org/dc/terms/1.1/spatial">
+ * http://purl.org/dc/terms/1.1/spatial</a>
+ * </ul>
+ *
+ * @return the identifier of a resource providing spatial data
+ * @model required="false"
+ */
+ String getSpatial();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.stem.core.common.DublinCore#getSpatial
+ * <em>Spatial</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @param value
+ * the new value of the '<em>Spatial</em>' attribute.
+ * @see #getSpatial()
+ * @generated
+ */
+ void setSpatial(String value);
+
+ /**
+ * <h1>Valid</h1>
+ * <ul>
+ * <li>Definition:</li>
+ * "Date (often a range) of validity of a resource."
+ * <li>Comment:</li>
+ * See encoded in ISO&nbsp;8601 <a
+ * href="http://www.w3.org/TR/NOTE-datetime">
+ * http://www.w3.org/TR/NOTE-datetime</a>.
+ * <li>Example:</li>
+ * start=2006-03-29; end=2006-03-30; or simply start=2006-03-29; if there is
+ * no end to the validity
+ * <li>URI:</li>
+ * <a href="http://purl.org/dc/terms/1.1/valid">
+ * http://purl.org/dc/terms/1.1/valid</a>
+ * </ul>
+ *
+ * @return the date, or range that the resource is valid.
+ * @model required="false"
+ */
+ String getValid();
+
+ /**
+ * @return the starting {@link Date} of the valid date range, or
+ * <code>null</code> if the valid value is not set or is not
+ * correctly formatted as an ISO&nbsp;8601 date string <a
+ * href="http://www.w3.org/TR/NOTE-datetime">
+ * http://www.w3.org/TR/NOTE-datetime</a>.
+ */
+ Date getValidStartDate();
+
+ /**
+ * @return the ending {@link Date} of the valid date range, or
+ * <code>null</code> if the valid value is not set or the end date
+ * is not specified, or the value is not correctly formatted as an
+ * ISO&nbsp;8601 date string <a
+ * href="http://www.w3.org/TR/NOTE-datetime">
+ * http://www.w3.org/TR/NOTE-datetime</a>.
+ */
+ Date getValidEndDate();
+
+ /**
+ * @param dublinCore
+ * @return <code>true</code> if the start date of the valid date range
+ * attribute is before the start date of the passed
+ * {@link DublinCore} instance's valid date range, or, if the passed
+ * instance is <code>null</code>, <code>false</code> otherwise.
+ * Also, <code>false</code> is returned if either instance does not
+ * specify a valid date range.
+ *
+ * @see DublinCore#getValid()
+ */
+ boolean isValidBefore(DublinCore dublinCore);
+
+ /**
+ * Compute the extent of the overlap of the valid date range of this
+ * instance with that of the passed instance. If only one instance has a
+ * valid data range specified that will be returned.
+ *
+ * @param dublinCore
+ * @return 0-start date of new range, 1-end date of new range, or
+ * <code>null</code> if there is no overlap.
+ */
+ Date[] computeValidDateRangeOverlap(DublinCore dublinCore);
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.common.DublinCore#getValid <em>Valid</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @param value the new value of the '<em>Valid</em>' attribute.
+ * @see #getValid()
+ * @generated
+ */
+ void setValid(String value);
+
+ /**
+ * Set the starting date that the resource is value. No end date will be
+ * set.
+ *
+ * @param startDate
+ * the starting date
+ *
+ * @see #setValid(String)
+ * @see #setValid(Date, Date)
+ * @see #setDate(Date)
+ * @see #setCreated(Date)
+ */
+ void setValid(final Date startDate);
+
+ /**
+ * Set the starting and ending dates that the resource is valid.
+ *
+ * @param startDate
+ * the starting date
+ * @param endDate
+ * the ending date
+ *
+ * @see #setValid(String)
+ * @see #setValid(Date)
+ * @see #setDate(Date)
+ * @see #setCreated(Date)
+ */
+ void setValid(final Date startDate, final Date endDate);
+
+ /**
+ * Initialize some of the Dublin Core terms from information available from
+ * the run-time environment.
+ * <ul>
+ * <li><code>Created</code> is set to the current date (e.g., 2006-06-02)</li>
+ * <li><code>Creator</code> is set to the value returned by
+ * <code>System.getProperty("user.name")</code> (e.g., <code>daford</code>)
+ * </ul>
+ *
+ * @return the instance
+ *
+ * @see #setCreated(String)
+ * @see #setDate(String)
+ * @see #setValid(String)
+ * @see #setCreator(String)
+ *
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ DublinCore populate();
+} // DublinCore
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/Identifiable.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/Identifiable.java
new file mode 100644
index 000000000..6d7297e74
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/Identifiable.java
@@ -0,0 +1,93 @@
+// Identifiable.java
+package org.eclipse.stem.core.common;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import java.lang.Comparable;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.stem.core.graph.Graph;
+
+/**
+ * An <code>Identifiable</code> instance represents an "identifiable"
+ * component in STEM. Such a component is one that is uniquely identified by a
+ * {@link URI}. An <code>Identifiable</code> also has {@link DublinCore}
+ * metadata (<a href="http://www.dublincore.org/" >http://www.dublincore.org/</a>)
+ * associated with it that defines its origin and contents.
+ * <p>
+ * Virtually all components in a STEM simulation are <code>Identifiable</code>.
+ * </p>
+ *
+ * @see Graph
+ * @see org.eclipse.stem.core.model.Model
+ * @see org.eclipse.stem.core.scenario.Scenario
+ *
+ * @model abstract="true"
+ * @implements SanityChecker
+ */
+public interface Identifiable extends Comparable<Identifiable>, SanityChecker {
+
+ /**
+ * @return the URL that uniquely identifies this Identifiable component.
+ *
+ * @model required="true"
+ */
+ URI getURI();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.common.Identifiable#getURI <em>URI</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @param value the new value of the '<em>URI</em>' attribute.
+ * @see #getURI()
+ * @generated
+ */
+ void setURI(URI value);
+
+ /**
+ * @return the URL that uniquely identifies the type of this Identifiable
+ * component.
+ *
+ * @model required="true"
+ */
+ URI getTypeURI();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.common.Identifiable#getTypeURI <em>Type URI</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @param value the new value of the '<em>Type URI</em>' attribute.
+ * @see #getTypeURI()
+ * @generated
+ */
+ void setTypeURI(URI value);
+
+ /**
+ * @return the "Dublin Core" metadata <a
+ * href="http://www.dublincore.org/">http://www.dublincore.org/</a>
+ * associated with this Identifiable component.
+ * @model containment="true" required="true"
+ */
+ DublinCore getDublinCore();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.common.Identifiable#getDublinCore <em>Dublin Core</em>}' containment reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @param value the new value of the '<em>Dublin Core</em>' containment reference.
+ * @see #getDublinCore()
+ * @generated
+ */
+ void setDublinCore(DublinCore value);
+
+ /**
+ * @return true if the instance is "sane", false otherwise.
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ boolean sane();
+} // Identifiable
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/IdentifiableFilter.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/IdentifiableFilter.java
new file mode 100644
index 000000000..eaad0baae
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/IdentifiableFilter.java
@@ -0,0 +1,26 @@
+package org.eclipse.stem.core.common;
+/*******************************************************************************
+ * Copyright (c) 2010 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Identifiable Filter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.stem.core.common.CommonPackage#getIdentifiableFilter()
+ * @model
+ * @generated
+ */
+public interface IdentifiableFilter extends EObject {
+} // IdentifiableFilter
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/SanityChecker.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/SanityChecker.java
new file mode 100644
index 000000000..cd9a7db61
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/SanityChecker.java
@@ -0,0 +1,34 @@
+package org.eclipse.stem.core.common;
+
+/*******************************************************************************
+ * Copyright (c) 2011 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
+ *******************************************************************************/
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Sanity Checker</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.stem.core.common.CommonPackage#getSanityChecker()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface SanityChecker extends EObject {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ boolean sane();
+
+} // SanityChecker
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/StringValue.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/StringValue.java
new file mode 100644
index 000000000..8d74ed444
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/StringValue.java
@@ -0,0 +1,59 @@
+package org.eclipse.stem.core.common;
+
+/*******************************************************************************
+ * Copyright (c) 2010 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
+ *******************************************************************************/
+
+import org.eclipse.stem.core.modifier.Modifiable;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>String Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.common.StringValue#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.core.common.CommonPackage#getStringValue()
+ * @model
+ * @generated
+ */
+public interface StringValue extends Modifiable {
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Value</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(String)
+ * @see org.eclipse.stem.core.common.CommonPackage#getStringValue_Value()
+ * @model
+ * @generated
+ */
+ String getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.common.StringValue#getValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(String value);
+
+} // StringValue
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/StringValueList.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/StringValueList.java
new file mode 100644
index 000000000..f7532a829
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/StringValueList.java
@@ -0,0 +1,49 @@
+package org.eclipse.stem.core.common;
+
+/*******************************************************************************
+ * Copyright (c) 2010 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
+ *******************************************************************************/
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>String Value List</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.common.StringValueList#getValues <em>Values</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.core.common.CommonPackage#getStringValueList()
+ * @model
+ * @generated
+ */
+public interface StringValueList extends EObject {
+ /**
+ * Returns the value of the '<em><b>Values</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.stem.core.common.StringValue}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Values</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Values</em>' containment reference list.
+ * @see org.eclipse.stem.core.common.CommonPackage#getStringValueList_Values()
+ * @model containment="true"
+ * @generated
+ */
+ EList<StringValue> getValues();
+
+} // StringValueList
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/CommonFactoryImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/CommonFactoryImpl.java
new file mode 100644
index 000000000..70f48d8cf
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/CommonFactoryImpl.java
@@ -0,0 +1,229 @@
+package org.eclipse.stem.core.common.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.stem.core.common.CommonFactory;
+import org.eclipse.stem.core.common.CommonPackage;
+import org.eclipse.stem.core.common.DoubleValue;
+import org.eclipse.stem.core.common.DoubleValueList;
+import org.eclipse.stem.core.common.DoubleValueMatrix;
+import org.eclipse.stem.core.common.DublinCore;
+import org.eclipse.stem.core.common.IdentifiableFilter;
+import org.eclipse.stem.core.common.StringValue;
+import org.eclipse.stem.core.common.StringValueList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CommonFactoryImpl extends EFactoryImpl implements CommonFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static CommonFactory init() {
+ try {
+ CommonFactory theCommonFactory = (CommonFactory)EPackage.Registry.INSTANCE.getEFactory("http:///org/eclipse/stem/core/common.ecore"); //$NON-NLS-1$
+ if (theCommonFactory != null) {
+ return theCommonFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new CommonFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CommonFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case CommonPackage.DUBLIN_CORE: return createDublinCore();
+ case CommonPackage.IDENTIFIABLE_FILTER: return createIdentifiableFilter();
+ case CommonPackage.DOUBLE_VALUE_LIST: return createDoubleValueList();
+ case CommonPackage.DOUBLE_VALUE_MATRIX: return createDoubleValueMatrix();
+ case CommonPackage.DOUBLE_VALUE: return createDoubleValue();
+ case CommonPackage.STRING_VALUE_LIST: return createStringValueList();
+ case CommonPackage.STRING_VALUE: return createStringValue();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object createFromString(EDataType eDataType, String initialValue) {
+ switch (eDataType.getClassifierID()) {
+ case CommonPackage.URI:
+ return createURIFromString(eDataType, initialValue);
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String convertToString(EDataType eDataType, Object instanceValue) {
+ switch (eDataType.getClassifierID()) {
+ case CommonPackage.URI:
+ return convertURIToString(eDataType, instanceValue);
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DublinCore createDublinCore() {
+ DublinCoreImpl dublinCore = new DublinCoreImpl();
+ return dublinCore;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IdentifiableFilter createIdentifiableFilter() {
+ IdentifiableFilterImpl identifiableFilter = new IdentifiableFilterImpl();
+ return identifiableFilter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DoubleValueList createDoubleValueList() {
+ DoubleValueListImpl doubleValueList = new DoubleValueListImpl();
+ return doubleValueList;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DoubleValueMatrix createDoubleValueMatrix() {
+ DoubleValueMatrixImpl doubleValueMatrix = new DoubleValueMatrixImpl();
+ return doubleValueMatrix;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DoubleValue createDoubleValue() {
+ DoubleValueImpl doubleValue = new DoubleValueImpl();
+ return doubleValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StringValueList createStringValueList() {
+ StringValueListImpl stringValueList = new StringValueListImpl();
+ return stringValueList;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StringValue createStringValue() {
+ StringValueImpl stringValue = new StringValueImpl();
+ return stringValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param eDataType
+ * @param initialValue
+ * @return the URI
+ * @generated NOT
+ */
+ public URI createURIFromString(EDataType eDataType, String initialValue) {
+ return URI.createURI(initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertURIToString(EDataType eDataType, Object instanceValue) {
+ if(instanceValue == null) return "";
+ return instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CommonPackage getCommonPackage() {
+ return (CommonPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static CommonPackage getPackage() {
+ return CommonPackage.eINSTANCE;
+ }
+
+} //CommonFactoryImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/CommonPackageImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/CommonPackageImpl.java
new file mode 100644
index 000000000..2cfa0b7c8
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/CommonPackageImpl.java
@@ -0,0 +1,800 @@
+package org.eclipse.stem.core.common.impl;
+/*******************************************************************************
+ * Copyright (c) 2006, 2008 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
+ *******************************************************************************/
+
+import java.lang.Comparable;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EGenericType;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.stem.core.common.CommonFactory;
+import org.eclipse.stem.core.common.CommonPackage;
+import org.eclipse.stem.core.common.DoubleValue;
+import org.eclipse.stem.core.common.DoubleValueList;
+import org.eclipse.stem.core.common.DoubleValueMatrix;
+import org.eclipse.stem.core.common.DublinCore;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.IdentifiableFilter;
+import org.eclipse.stem.core.common.SanityChecker;
+import org.eclipse.stem.core.common.StringValue;
+import org.eclipse.stem.core.common.StringValueList;
+import org.eclipse.stem.core.experiment.ExperimentPackage;
+import org.eclipse.stem.core.experiment.impl.ExperimentPackageImpl;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.impl.GraphPackageImpl;
+import org.eclipse.stem.core.logger.LoggerPackage;
+import org.eclipse.stem.core.logger.impl.LoggerPackageImpl;
+import org.eclipse.stem.core.model.ModelPackage;
+import org.eclipse.stem.core.model.impl.ModelPackageImpl;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+import org.eclipse.stem.core.modifier.impl.ModifierPackageImpl;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+import org.eclipse.stem.core.predicate.impl.PredicatePackageImpl;
+import org.eclipse.stem.core.scenario.ScenarioPackage;
+import org.eclipse.stem.core.scenario.impl.ScenarioPackageImpl;
+import org.eclipse.stem.core.sequencer.SequencerPackage;
+import org.eclipse.stem.core.sequencer.impl.SequencerPackageImpl;
+import org.eclipse.stem.core.solver.SolverPackage;
+import org.eclipse.stem.core.solver.impl.SolverPackageImpl;
+import org.eclipse.stem.core.trigger.TriggerPackage;
+import org.eclipse.stem.core.trigger.impl.TriggerPackageImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CommonPackageImpl extends EPackageImpl implements CommonPackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass dublinCoreEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass identifiableEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass comparableEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass identifiableFilterEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass doubleValueListEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass doubleValueMatrixEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass doubleValueEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass stringValueListEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass stringValueEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass sanityCheckerEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType uriEDataType = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.eclipse.stem.core.common.CommonPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private CommonPackageImpl() {
+ super(eNS_URI, CommonFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link CommonPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static CommonPackage init() {
+ if (isInited) return (CommonPackage)EPackage.Registry.INSTANCE.getEPackage(CommonPackage.eNS_URI);
+
+ // Obtain or create and register package
+ CommonPackageImpl theCommonPackage = (CommonPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof CommonPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new CommonPackageImpl());
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ EcorePackage.eINSTANCE.eClass();
+
+ // Obtain or create and register interdependencies
+ ExperimentPackageImpl theExperimentPackage = (ExperimentPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ExperimentPackage.eNS_URI) instanceof ExperimentPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ExperimentPackage.eNS_URI) : ExperimentPackage.eINSTANCE);
+ GraphPackageImpl theGraphPackage = (GraphPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(GraphPackage.eNS_URI) instanceof GraphPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(GraphPackage.eNS_URI) : GraphPackage.eINSTANCE);
+ ModelPackageImpl theModelPackage = (ModelPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ModelPackage.eNS_URI) instanceof ModelPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ModelPackage.eNS_URI) : ModelPackage.eINSTANCE);
+ ModifierPackageImpl theModifierPackage = (ModifierPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ModifierPackage.eNS_URI) instanceof ModifierPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ModifierPackage.eNS_URI) : ModifierPackage.eINSTANCE);
+ PredicatePackageImpl thePredicatePackage = (PredicatePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(PredicatePackage.eNS_URI) instanceof PredicatePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(PredicatePackage.eNS_URI) : PredicatePackage.eINSTANCE);
+ ScenarioPackageImpl theScenarioPackage = (ScenarioPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ScenarioPackage.eNS_URI) instanceof ScenarioPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ScenarioPackage.eNS_URI) : ScenarioPackage.eINSTANCE);
+ SequencerPackageImpl theSequencerPackage = (SequencerPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SequencerPackage.eNS_URI) instanceof SequencerPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SequencerPackage.eNS_URI) : SequencerPackage.eINSTANCE);
+ TriggerPackageImpl theTriggerPackage = (TriggerPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(TriggerPackage.eNS_URI) instanceof TriggerPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(TriggerPackage.eNS_URI) : TriggerPackage.eINSTANCE);
+ SolverPackageImpl theSolverPackage = (SolverPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SolverPackage.eNS_URI) instanceof SolverPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SolverPackage.eNS_URI) : SolverPackage.eINSTANCE);
+ LoggerPackageImpl theLoggerPackage = (LoggerPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(LoggerPackage.eNS_URI) instanceof LoggerPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(LoggerPackage.eNS_URI) : LoggerPackage.eINSTANCE);
+
+ // Create package meta-data objects
+ theCommonPackage.createPackageContents();
+ theExperimentPackage.createPackageContents();
+ theGraphPackage.createPackageContents();
+ theModelPackage.createPackageContents();
+ theModifierPackage.createPackageContents();
+ thePredicatePackage.createPackageContents();
+ theScenarioPackage.createPackageContents();
+ theSequencerPackage.createPackageContents();
+ theTriggerPackage.createPackageContents();
+ theSolverPackage.createPackageContents();
+ theLoggerPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theCommonPackage.initializePackageContents();
+ theExperimentPackage.initializePackageContents();
+ theGraphPackage.initializePackageContents();
+ theModelPackage.initializePackageContents();
+ theModifierPackage.initializePackageContents();
+ thePredicatePackage.initializePackageContents();
+ theScenarioPackage.initializePackageContents();
+ theSequencerPackage.initializePackageContents();
+ theTriggerPackage.initializePackageContents();
+ theSolverPackage.initializePackageContents();
+ theLoggerPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theCommonPackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(CommonPackage.eNS_URI, theCommonPackage);
+ return theCommonPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDublinCore() {
+ return dublinCoreEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDublinCore_Title() {
+ return (EAttribute)dublinCoreEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDublinCore_Identifier() {
+ return (EAttribute)dublinCoreEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDublinCore_Description() {
+ return (EAttribute)dublinCoreEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDublinCore_Creator() {
+ return (EAttribute)dublinCoreEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDublinCore_Date() {
+ return (EAttribute)dublinCoreEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDublinCore_Format() {
+ return (EAttribute)dublinCoreEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDublinCore_Publisher() {
+ return (EAttribute)dublinCoreEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDublinCore_Coverage() {
+ return (EAttribute)dublinCoreEClass.getEStructuralFeatures().get(7);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDublinCore_Contributor() {
+ return (EAttribute)dublinCoreEClass.getEStructuralFeatures().get(8);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDublinCore_Relation() {
+ return (EAttribute)dublinCoreEClass.getEStructuralFeatures().get(9);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDublinCore_Rights() {
+ return (EAttribute)dublinCoreEClass.getEStructuralFeatures().get(10);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDublinCore_Source() {
+ return (EAttribute)dublinCoreEClass.getEStructuralFeatures().get(11);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDublinCore_Subject() {
+ return (EAttribute)dublinCoreEClass.getEStructuralFeatures().get(12);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDublinCore_Type() {
+ return (EAttribute)dublinCoreEClass.getEStructuralFeatures().get(13);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDublinCore_Language() {
+ return (EAttribute)dublinCoreEClass.getEStructuralFeatures().get(14);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDublinCore_BibliographicCitation() {
+ return (EAttribute)dublinCoreEClass.getEStructuralFeatures().get(15);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDublinCore_Created() {
+ return (EAttribute)dublinCoreEClass.getEStructuralFeatures().get(16);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDublinCore_License() {
+ return (EAttribute)dublinCoreEClass.getEStructuralFeatures().get(17);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDublinCore_Required() {
+ return (EAttribute)dublinCoreEClass.getEStructuralFeatures().get(18);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDublinCore_Spatial() {
+ return (EAttribute)dublinCoreEClass.getEStructuralFeatures().get(19);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDublinCore_Valid() {
+ return (EAttribute)dublinCoreEClass.getEStructuralFeatures().get(20);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getIdentifiable() {
+ return identifiableEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getIdentifiable_URI() {
+ return (EAttribute)identifiableEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getIdentifiable_TypeURI() {
+ return (EAttribute)identifiableEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getIdentifiable_DublinCore() {
+ return (EReference)identifiableEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getComparable() {
+ return comparableEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getIdentifiableFilter() {
+ return identifiableFilterEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDoubleValueList() {
+ return doubleValueListEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDoubleValueList_Values() {
+ return (EReference)doubleValueListEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDoubleValueList_Identifier() {
+ return (EAttribute)doubleValueListEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDoubleValueMatrix() {
+ return doubleValueMatrixEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDoubleValueMatrix_ValueLists() {
+ return (EReference)doubleValueMatrixEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDoubleValue() {
+ return doubleValueEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDoubleValue_Identifier() {
+ return (EAttribute)doubleValueEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDoubleValue_Value() {
+ return (EAttribute)doubleValueEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getStringValueList() {
+ return stringValueListEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getStringValueList_Values() {
+ return (EReference)stringValueListEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getStringValue() {
+ return stringValueEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getStringValue_Value() {
+ return (EAttribute)stringValueEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSanityChecker() {
+ return sanityCheckerEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EDataType getURI() {
+ return uriEDataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CommonFactory getCommonFactory() {
+ return (CommonFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ dublinCoreEClass = createEClass(DUBLIN_CORE);
+ createEAttribute(dublinCoreEClass, DUBLIN_CORE__TITLE);
+ createEAttribute(dublinCoreEClass, DUBLIN_CORE__IDENTIFIER);
+ createEAttribute(dublinCoreEClass, DUBLIN_CORE__DESCRIPTION);
+ createEAttribute(dublinCoreEClass, DUBLIN_CORE__CREATOR);
+ createEAttribute(dublinCoreEClass, DUBLIN_CORE__DATE);
+ createEAttribute(dublinCoreEClass, DUBLIN_CORE__FORMAT);
+ createEAttribute(dublinCoreEClass, DUBLIN_CORE__PUBLISHER);
+ createEAttribute(dublinCoreEClass, DUBLIN_CORE__COVERAGE);
+ createEAttribute(dublinCoreEClass, DUBLIN_CORE__CONTRIBUTOR);
+ createEAttribute(dublinCoreEClass, DUBLIN_CORE__RELATION);
+ createEAttribute(dublinCoreEClass, DUBLIN_CORE__RIGHTS);
+ createEAttribute(dublinCoreEClass, DUBLIN_CORE__SOURCE);
+ createEAttribute(dublinCoreEClass, DUBLIN_CORE__SUBJECT);
+ createEAttribute(dublinCoreEClass, DUBLIN_CORE__TYPE);
+ createEAttribute(dublinCoreEClass, DUBLIN_CORE__LANGUAGE);
+ createEAttribute(dublinCoreEClass, DUBLIN_CORE__BIBLIOGRAPHIC_CITATION);
+ createEAttribute(dublinCoreEClass, DUBLIN_CORE__CREATED);
+ createEAttribute(dublinCoreEClass, DUBLIN_CORE__LICENSE);
+ createEAttribute(dublinCoreEClass, DUBLIN_CORE__REQUIRED);
+ createEAttribute(dublinCoreEClass, DUBLIN_CORE__SPATIAL);
+ createEAttribute(dublinCoreEClass, DUBLIN_CORE__VALID);
+
+ identifiableEClass = createEClass(IDENTIFIABLE);
+ createEAttribute(identifiableEClass, IDENTIFIABLE__URI);
+ createEAttribute(identifiableEClass, IDENTIFIABLE__TYPE_URI);
+ createEReference(identifiableEClass, IDENTIFIABLE__DUBLIN_CORE);
+
+ comparableEClass = createEClass(COMPARABLE);
+
+ identifiableFilterEClass = createEClass(IDENTIFIABLE_FILTER);
+
+ doubleValueListEClass = createEClass(DOUBLE_VALUE_LIST);
+ createEReference(doubleValueListEClass, DOUBLE_VALUE_LIST__VALUES);
+ createEAttribute(doubleValueListEClass, DOUBLE_VALUE_LIST__IDENTIFIER);
+
+ doubleValueMatrixEClass = createEClass(DOUBLE_VALUE_MATRIX);
+ createEReference(doubleValueMatrixEClass, DOUBLE_VALUE_MATRIX__VALUE_LISTS);
+
+ doubleValueEClass = createEClass(DOUBLE_VALUE);
+ createEAttribute(doubleValueEClass, DOUBLE_VALUE__IDENTIFIER);
+ createEAttribute(doubleValueEClass, DOUBLE_VALUE__VALUE);
+
+ stringValueListEClass = createEClass(STRING_VALUE_LIST);
+ createEReference(stringValueListEClass, STRING_VALUE_LIST__VALUES);
+
+ stringValueEClass = createEClass(STRING_VALUE);
+ createEAttribute(stringValueEClass, STRING_VALUE__VALUE);
+
+ sanityCheckerEClass = createEClass(SANITY_CHECKER);
+
+ // Create data types
+ uriEDataType = createEDataType(URI);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ EcorePackage theEcorePackage = (EcorePackage)EPackage.Registry.INSTANCE.getEPackage(EcorePackage.eNS_URI);
+ ModifierPackage theModifierPackage = (ModifierPackage)EPackage.Registry.INSTANCE.getEPackage(ModifierPackage.eNS_URI);
+
+ // Create type parameters
+ addETypeParameter(comparableEClass, "T"); //$NON-NLS-1$
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ EGenericType g1 = createEGenericType(this.getComparable());
+ EGenericType g2 = createEGenericType(this.getIdentifiable());
+ g1.getETypeArguments().add(g2);
+ identifiableEClass.getEGenericSuperTypes().add(g1);
+ g1 = createEGenericType(this.getSanityChecker());
+ identifiableEClass.getEGenericSuperTypes().add(g1);
+ doubleValueEClass.getESuperTypes().add(theModifierPackage.getModifiable());
+ stringValueEClass.getESuperTypes().add(theModifierPackage.getModifiable());
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(dublinCoreEClass, DublinCore.class, "DublinCore", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getDublinCore_Title(), ecorePackage.getEString(), "title", null, 0, 1, DublinCore.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getDublinCore_Identifier(), ecorePackage.getEString(), "identifier", null, 0, 1, DublinCore.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getDublinCore_Description(), ecorePackage.getEString(), "description", null, 0, 1, DublinCore.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getDublinCore_Creator(), ecorePackage.getEString(), "creator", null, 0, 1, DublinCore.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getDublinCore_Date(), ecorePackage.getEString(), "date", null, 0, 1, DublinCore.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getDublinCore_Format(), ecorePackage.getEString(), "format", null, 0, 1, DublinCore.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getDublinCore_Publisher(), ecorePackage.getEString(), "publisher", null, 0, 1, DublinCore.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getDublinCore_Coverage(), ecorePackage.getEString(), "coverage", null, 0, 1, DublinCore.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getDublinCore_Contributor(), ecorePackage.getEString(), "contributor", null, 0, 1, DublinCore.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getDublinCore_Relation(), ecorePackage.getEString(), "relation", null, 0, 1, DublinCore.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getDublinCore_Rights(), ecorePackage.getEString(), "rights", null, 0, 1, DublinCore.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getDublinCore_Source(), ecorePackage.getEString(), "source", null, 0, 1, DublinCore.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getDublinCore_Subject(), ecorePackage.getEString(), "subject", null, 0, 1, DublinCore.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getDublinCore_Type(), ecorePackage.getEString(), "type", null, 0, 1, DublinCore.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getDublinCore_Language(), ecorePackage.getEString(), "language", null, 0, 1, DublinCore.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getDublinCore_BibliographicCitation(), ecorePackage.getEString(), "bibliographicCitation", null, 0, 1, DublinCore.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getDublinCore_Created(), ecorePackage.getEString(), "created", null, 0, 1, DublinCore.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getDublinCore_License(), ecorePackage.getEString(), "license", null, 0, 1, DublinCore.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getDublinCore_Required(), ecorePackage.getEString(), "required", null, 0, 1, DublinCore.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getDublinCore_Spatial(), ecorePackage.getEString(), "spatial", null, 0, 1, DublinCore.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getDublinCore_Valid(), ecorePackage.getEString(), "valid", null, 0, 1, DublinCore.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ addEOperation(dublinCoreEClass, this.getDublinCore(), "populate", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(identifiableEClass, Identifiable.class, "Identifiable", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getIdentifiable_URI(), this.getURI(), "uRI", null, 1, 1, Identifiable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getIdentifiable_TypeURI(), this.getURI(), "typeURI", null, 1, 1, Identifiable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getIdentifiable_DublinCore(), this.getDublinCore(), null, "dublinCore", null, 1, 1, Identifiable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(comparableEClass, Comparable.class, "Comparable", IS_ABSTRACT, IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(identifiableFilterEClass, IdentifiableFilter.class, "IdentifiableFilter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(doubleValueListEClass, DoubleValueList.class, "DoubleValueList", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getDoubleValueList_Values(), this.getDoubleValue(), null, "values", null, 0, -1, DoubleValueList.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getDoubleValueList_Identifier(), theEcorePackage.getEString(), "identifier", null, 0, 1, DoubleValueList.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(doubleValueMatrixEClass, DoubleValueMatrix.class, "DoubleValueMatrix", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getDoubleValueMatrix_ValueLists(), this.getDoubleValueList(), null, "valueLists", null, 0, -1, DoubleValueMatrix.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(doubleValueEClass, DoubleValue.class, "DoubleValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getDoubleValue_Identifier(), theEcorePackage.getEString(), "identifier", null, 0, 1, DoubleValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getDoubleValue_Value(), theEcorePackage.getEDouble(), "value", "0.0", 0, 1, DoubleValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+
+ initEClass(stringValueListEClass, StringValueList.class, "StringValueList", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getStringValueList_Values(), this.getStringValue(), null, "values", null, 0, -1, StringValueList.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(stringValueEClass, StringValue.class, "StringValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getStringValue_Value(), theEcorePackage.getEString(), "value", null, 0, 1, StringValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(sanityCheckerEClass, SanityChecker.class, "SanityChecker", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ addEOperation(sanityCheckerEClass, theEcorePackage.getEBoolean(), "sane", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ // Initialize data types
+ initEDataType(uriEDataType, org.eclipse.emf.common.util.URI.class, "URI", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} //CommonPackageImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/DoubleValueImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/DoubleValueImpl.java
new file mode 100644
index 000000000..63366e2bf
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/DoubleValueImpl.java
@@ -0,0 +1,243 @@
+package org.eclipse.stem.core.common.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2010 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.stem.core.common.CommonPackage;
+import org.eclipse.stem.core.common.DoubleValue;
+import org.eclipse.stem.core.common.Identifiable;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Double Value</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.common.impl.DoubleValueImpl#getIdentifier <em>Identifier</em>}</li>
+ * <li>{@link org.eclipse.stem.core.common.impl.DoubleValueImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DoubleValueImpl extends EObjectImpl implements DoubleValue {
+ /**
+ * The default value of the '{@link #getIdentifier() <em>Identifier</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIdentifier()
+ * @generated
+ * @ordered
+ */
+ protected static final String IDENTIFIER_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getIdentifier() <em>Identifier</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIdentifier()
+ * @generated
+ * @ordered
+ */
+ protected String identifier = IDENTIFIER_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected static final double VALUE_EDEFAULT = 0.0;
+
+ /**
+ * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected double value = VALUE_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DoubleValueImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CommonPackage.Literals.DOUBLE_VALUE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getIdentifier() {
+ return identifier;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setIdentifier(String newIdentifier) {
+ String oldIdentifier = identifier;
+ identifier = newIdentifier;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CommonPackage.DOUBLE_VALUE__IDENTIFIER, oldIdentifier, identifier));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public double getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValue(double newValue) {
+ double oldValue = value;
+ value = newValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CommonPackage.DOUBLE_VALUE__VALUE, oldValue, value));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CommonPackage.DOUBLE_VALUE__IDENTIFIER:
+ return getIdentifier();
+ case CommonPackage.DOUBLE_VALUE__VALUE:
+ return getValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CommonPackage.DOUBLE_VALUE__IDENTIFIER:
+ setIdentifier((String)newValue);
+ return;
+ case CommonPackage.DOUBLE_VALUE__VALUE:
+ setValue((Double)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CommonPackage.DOUBLE_VALUE__IDENTIFIER:
+ setIdentifier(IDENTIFIER_EDEFAULT);
+ return;
+ case CommonPackage.DOUBLE_VALUE__VALUE:
+ setValue(VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CommonPackage.DOUBLE_VALUE__IDENTIFIER:
+ return IDENTIFIER_EDEFAULT == null ? identifier != null : !IDENTIFIER_EDEFAULT.equals(identifier);
+ case CommonPackage.DOUBLE_VALUE__VALUE:
+ return value != VALUE_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (identifier: "); //$NON-NLS-1$
+ result.append(identifier);
+ result.append(", value: "); //$NON-NLS-1$
+ result.append(value);
+ result.append(')');
+ return result.toString();
+ }
+
+ private Identifiable findIdentifiable(EObject o) {
+ if(o instanceof Identifiable) return (Identifiable)o;
+ if(o.eContainer() != null) return findIdentifiable(o.eContainer());
+ return null;
+ }
+ /**
+ * Need to override to make sure modifiers can find
+ */
+ public boolean valueEquals(DoubleValueImpl dvi) {
+ Identifiable id = findIdentifiable(dvi);
+ Identifiable id2 = findIdentifiable(this);
+ if(!id.getURI().equals(id2.getURI())) return false;
+
+ // Need to make sure that the path from the identifiable
+ // to here is the same
+ //... todo
+ return (super.equals(dvi));
+ }
+} //DoubleValueImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/DoubleValueListImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/DoubleValueListImpl.java
new file mode 100644
index 000000000..4a876ac8a
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/DoubleValueListImpl.java
@@ -0,0 +1,226 @@
+package org.eclipse.stem.core.common.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2010 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
+ *******************************************************************************/
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.stem.core.common.CommonPackage;
+import org.eclipse.stem.core.common.DoubleValue;
+import org.eclipse.stem.core.common.DoubleValueList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Double Value List</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.common.impl.DoubleValueListImpl#getValues <em>Values</em>}</li>
+ * <li>{@link org.eclipse.stem.core.common.impl.DoubleValueListImpl#getIdentifier <em>Identifier</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DoubleValueListImpl extends EObjectImpl implements DoubleValueList {
+ /**
+ * The cached value of the '{@link #getValues() <em>Values</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValues()
+ * @generated
+ * @ordered
+ */
+ protected EList<DoubleValue> values;
+
+ /**
+ * The default value of the '{@link #getIdentifier() <em>Identifier</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIdentifier()
+ * @generated
+ * @ordered
+ */
+ protected static final String IDENTIFIER_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getIdentifier() <em>Identifier</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIdentifier()
+ * @generated
+ * @ordered
+ */
+ protected String identifier = IDENTIFIER_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DoubleValueListImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CommonPackage.Literals.DOUBLE_VALUE_LIST;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<DoubleValue> getValues() {
+ if (values == null) {
+ values = new EObjectContainmentEList<DoubleValue>(DoubleValue.class, this, CommonPackage.DOUBLE_VALUE_LIST__VALUES);
+ }
+ return values;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getIdentifier() {
+ return identifier;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setIdentifier(String newIdentifier) {
+ String oldIdentifier = identifier;
+ identifier = newIdentifier;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CommonPackage.DOUBLE_VALUE_LIST__IDENTIFIER, oldIdentifier, identifier));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case CommonPackage.DOUBLE_VALUE_LIST__VALUES:
+ return ((InternalEList<?>)getValues()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CommonPackage.DOUBLE_VALUE_LIST__VALUES:
+ return getValues();
+ case CommonPackage.DOUBLE_VALUE_LIST__IDENTIFIER:
+ return getIdentifier();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CommonPackage.DOUBLE_VALUE_LIST__VALUES:
+ getValues().clear();
+ getValues().addAll((Collection<? extends DoubleValue>)newValue);
+ return;
+ case CommonPackage.DOUBLE_VALUE_LIST__IDENTIFIER:
+ setIdentifier((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CommonPackage.DOUBLE_VALUE_LIST__VALUES:
+ getValues().clear();
+ return;
+ case CommonPackage.DOUBLE_VALUE_LIST__IDENTIFIER:
+ setIdentifier(IDENTIFIER_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CommonPackage.DOUBLE_VALUE_LIST__VALUES:
+ return values != null && !values.isEmpty();
+ case CommonPackage.DOUBLE_VALUE_LIST__IDENTIFIER:
+ return IDENTIFIER_EDEFAULT == null ? identifier != null : !IDENTIFIER_EDEFAULT.equals(identifier);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (identifier: "); //$NON-NLS-1$
+ result.append(identifier);
+ result.append(')');
+ return result.toString();
+ }
+
+} //DoubleValueListImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/DoubleValueMatrixImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/DoubleValueMatrixImpl.java
new file mode 100644
index 000000000..30bfc8ff4
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/DoubleValueMatrixImpl.java
@@ -0,0 +1,155 @@
+package org.eclipse.stem.core.common.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2010 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
+ *******************************************************************************/
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.stem.core.common.CommonPackage;
+import org.eclipse.stem.core.common.DoubleValueList;
+import org.eclipse.stem.core.common.DoubleValueMatrix;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Double Value Matrix</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.common.impl.DoubleValueMatrixImpl#getValueLists <em>Value Lists</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DoubleValueMatrixImpl extends EObjectImpl implements DoubleValueMatrix {
+ /**
+ * The cached value of the '{@link #getValueLists() <em>Value Lists</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValueLists()
+ * @generated
+ * @ordered
+ */
+ protected EList<DoubleValueList> valueLists;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DoubleValueMatrixImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CommonPackage.Literals.DOUBLE_VALUE_MATRIX;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<DoubleValueList> getValueLists() {
+ if (valueLists == null) {
+ valueLists = new EObjectContainmentEList<DoubleValueList>(DoubleValueList.class, this, CommonPackage.DOUBLE_VALUE_MATRIX__VALUE_LISTS);
+ }
+ return valueLists;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case CommonPackage.DOUBLE_VALUE_MATRIX__VALUE_LISTS:
+ return ((InternalEList<?>)getValueLists()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CommonPackage.DOUBLE_VALUE_MATRIX__VALUE_LISTS:
+ return getValueLists();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CommonPackage.DOUBLE_VALUE_MATRIX__VALUE_LISTS:
+ getValueLists().clear();
+ getValueLists().addAll((Collection<? extends DoubleValueList>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CommonPackage.DOUBLE_VALUE_MATRIX__VALUE_LISTS:
+ getValueLists().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CommonPackage.DOUBLE_VALUE_MATRIX__VALUE_LISTS:
+ return valueLists != null && !valueLists.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //DoubleValueMatrixImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/DublinCoreImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/DublinCoreImpl.java
new file mode 100644
index 000000000..07f5e8b2a
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/DublinCoreImpl.java
@@ -0,0 +1,1617 @@
+package org.eclipse.stem.core.common.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.stem.core.common.CommonPackage;
+import org.eclipse.stem.core.common.DublinCore;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Dublin Core</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.common.impl.DublinCoreImpl#getTitle <em>Title</em>}</li>
+ * <li>{@link org.eclipse.stem.core.common.impl.DublinCoreImpl#getIdentifier <em>Identifier</em>}</li>
+ * <li>{@link org.eclipse.stem.core.common.impl.DublinCoreImpl#getDescription <em>Description</em>}</li>
+ * <li>{@link org.eclipse.stem.core.common.impl.DublinCoreImpl#getCreator <em>Creator</em>}</li>
+ * <li>{@link org.eclipse.stem.core.common.impl.DublinCoreImpl#getDate <em>Date</em>}</li>
+ * <li>{@link org.eclipse.stem.core.common.impl.DublinCoreImpl#getFormat <em>Format</em>}</li>
+ * <li>{@link org.eclipse.stem.core.common.impl.DublinCoreImpl#getPublisher <em>Publisher</em>}</li>
+ * <li>{@link org.eclipse.stem.core.common.impl.DublinCoreImpl#getCoverage <em>Coverage</em>}</li>
+ * <li>{@link org.eclipse.stem.core.common.impl.DublinCoreImpl#getContributor <em>Contributor</em>}</li>
+ * <li>{@link org.eclipse.stem.core.common.impl.DublinCoreImpl#getRelation <em>Relation</em>}</li>
+ * <li>{@link org.eclipse.stem.core.common.impl.DublinCoreImpl#getRights <em>Rights</em>}</li>
+ * <li>{@link org.eclipse.stem.core.common.impl.DublinCoreImpl#getSource <em>Source</em>}</li>
+ * <li>{@link org.eclipse.stem.core.common.impl.DublinCoreImpl#getSubject <em>Subject</em>}</li>
+ * <li>{@link org.eclipse.stem.core.common.impl.DublinCoreImpl#getType <em>Type</em>}</li>
+ * <li>{@link org.eclipse.stem.core.common.impl.DublinCoreImpl#getLanguage <em>Language</em>}</li>
+ * <li>{@link org.eclipse.stem.core.common.impl.DublinCoreImpl#getBibliographicCitation <em>Bibliographic Citation</em>}</li>
+ * <li>{@link org.eclipse.stem.core.common.impl.DublinCoreImpl#getCreated <em>Created</em>}</li>
+ * <li>{@link org.eclipse.stem.core.common.impl.DublinCoreImpl#getLicense <em>License</em>}</li>
+ * <li>{@link org.eclipse.stem.core.common.impl.DublinCoreImpl#getRequired <em>Required</em>}</li>
+ * <li>{@link org.eclipse.stem.core.common.impl.DublinCoreImpl#getSpatial <em>Spatial</em>}</li>
+ * <li>{@link org.eclipse.stem.core.common.impl.DublinCoreImpl#getValid <em>Valid</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DublinCoreImpl extends EObjectImpl implements DublinCore {
+ /**
+ * The default value of the '{@link #getTitle() <em>Title</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getTitle()
+ * @generated
+ * @ordered
+ */
+ protected static final String TITLE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getTitle() <em>Title</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getTitle()
+ * @generated
+ * @ordered
+ */
+ protected String title = TITLE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getIdentifier() <em>Identifier</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getIdentifier()
+ * @generated
+ * @ordered
+ */
+ protected static final String IDENTIFIER_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getIdentifier() <em>Identifier</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getIdentifier()
+ * @generated
+ * @ordered
+ */
+ protected String identifier = IDENTIFIER_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDescription() <em>Description</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getDescription()
+ * @generated
+ * @ordered
+ */
+ protected static final String DESCRIPTION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDescription() <em>Description</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getDescription()
+ * @generated
+ * @ordered
+ */
+ protected String description = DESCRIPTION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getCreator() <em>Creator</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getCreator()
+ * @generated
+ * @ordered
+ */
+ protected static final String CREATOR_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getCreator() <em>Creator</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getCreator()
+ * @generated
+ * @ordered
+ */
+ protected String creator = CREATOR_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDate() <em>Date</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getDate()
+ * @generated
+ * @ordered
+ */
+ protected static final String DATE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDate() <em>Date</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getDate()
+ * @generated
+ * @ordered
+ */
+ protected String date = DATE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getFormat() <em>Format</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getFormat()
+ * @generated
+ * @ordered
+ */
+ protected static final String FORMAT_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getFormat() <em>Format</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getFormat()
+ * @generated
+ * @ordered
+ */
+ protected String format = FORMAT_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getPublisher() <em>Publisher</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getPublisher()
+ * @generated
+ * @ordered
+ */
+ protected static final String PUBLISHER_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getPublisher() <em>Publisher</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getPublisher()
+ * @generated
+ * @ordered
+ */
+ protected String publisher = PUBLISHER_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getCoverage() <em>Coverage</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getCoverage()
+ * @generated
+ * @ordered
+ */
+ protected static final String COVERAGE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getCoverage() <em>Coverage</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getCoverage()
+ * @generated
+ * @ordered
+ */
+ protected String coverage = COVERAGE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getContributor() <em>Contributor</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getContributor()
+ * @generated
+ * @ordered
+ */
+ protected static final String CONTRIBUTOR_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getContributor() <em>Contributor</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getContributor()
+ * @generated
+ * @ordered
+ */
+ protected String contributor = CONTRIBUTOR_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getRelation() <em>Relation</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getRelation()
+ * @generated
+ * @ordered
+ */
+ protected static final String RELATION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getRelation() <em>Relation</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getRelation()
+ * @generated
+ * @ordered
+ */
+ protected String relation = RELATION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getRights() <em>Rights</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getRights()
+ * @generated
+ * @ordered
+ */
+ protected static final String RIGHTS_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getRights() <em>Rights</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getRights()
+ * @generated
+ * @ordered
+ */
+ protected String rights = RIGHTS_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getSource() <em>Source</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getSource()
+ * @generated
+ * @ordered
+ */
+ protected static final String SOURCE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSource() <em>Source</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getSource()
+ * @generated
+ * @ordered
+ */
+ protected String source = SOURCE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getSubject() <em>Subject</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getSubject()
+ * @generated
+ * @ordered
+ */
+ protected static final String SUBJECT_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSubject() <em>Subject</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getSubject()
+ * @generated
+ * @ordered
+ */
+ protected String subject = SUBJECT_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected static final String TYPE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected String type = TYPE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getLanguage() <em>Language</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getLanguage()
+ * @generated
+ * @ordered
+ */
+ protected static final String LANGUAGE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getLanguage() <em>Language</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getLanguage()
+ * @generated
+ * @ordered
+ */
+ protected String language = LANGUAGE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getBibliographicCitation() <em>Bibliographic Citation</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getBibliographicCitation()
+ * @generated
+ * @ordered
+ */
+ protected static final String BIBLIOGRAPHIC_CITATION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getBibliographicCitation() <em>Bibliographic Citation</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getBibliographicCitation()
+ * @generated
+ * @ordered
+ */
+ protected String bibliographicCitation = BIBLIOGRAPHIC_CITATION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getCreated() <em>Created</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getCreated()
+ * @generated
+ * @ordered
+ */
+ protected static final String CREATED_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getCreated() <em>Created</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getCreated()
+ * @generated
+ * @ordered
+ */
+ protected String created = CREATED_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getLicense() <em>License</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getLicense()
+ * @generated
+ * @ordered
+ */
+ protected static final String LICENSE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getLicense() <em>License</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getLicense()
+ * @generated
+ * @ordered
+ */
+ protected String license = LICENSE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getRequired() <em>Required</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getRequired()
+ * @generated
+ * @ordered
+ */
+ protected static final String REQUIRED_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getRequired() <em>Required</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getRequired()
+ * @generated
+ * @ordered
+ */
+ protected String required = REQUIRED_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getSpatial() <em>Spatial</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getSpatial()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPATIAL_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpatial() <em>Spatial</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getSpatial()
+ * @generated
+ * @ordered
+ */
+ protected String spatial = SPATIAL_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getValid() <em>Valid</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getValid()
+ * @generated
+ * @ordered
+ */
+ protected static final String VALID_EDEFAULT = null;
+
+ /**
+ * This is the string used in the {@link #valid} attribute to specify the
+ * starting date of the valid date range.
+ */
+ public static final String START = "start=";
+
+ /**
+ * This is the string used in the {@link #valid} attribute to specify the
+ * ending date of the valid date range.
+ */
+ public static final String END = "end=";
+
+ /**
+ * The cached value of the '{@link #getValid() <em>Valid</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getValid()
+ * @generated
+ * @ordered
+ */
+ protected String valid = VALID_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ protected DublinCoreImpl() {
+ super();
+ }
+
+ /**
+ * This constructor is used to create and initialize a Dublin Core instance
+ * from an IConfigurationElement instance. The configuration element is
+ * extracted from the extension definition in the plugin.xml file of a
+ * plug-in that is providing an Identifiable. This is used by the class
+ * IdentifiableDelegate in the class
+ * org.eclipse.stem.ui.views.IdentifiablePluginView to create a "proxy"
+ * representation of the Dublin Core of the Identifiable from the
+ * configuration element so that the Identifiable itself does not have to be
+ * loaded.
+ *
+ * @param configElement
+ * the configuration element from the plugin.xml file
+ *
+ * @generated NOT
+ */
+ public DublinCoreImpl(IConfigurationElement configElement) {
+ setTitle(configElement.getAttribute("title"));
+ setCreator(configElement.getAttribute("creator"));
+ setSubject(configElement.getAttribute("subject"));
+ setDescription(configElement.getAttribute("description"));
+ setPublisher(configElement.getAttribute("publisher"));
+ setContributor(configElement.getAttribute("contributor"));
+ setDate(configElement.getAttribute("date"));
+ setType(configElement.getAttribute("type"));
+ setFormat(configElement.getAttribute("format"));
+ setIdentifier(configElement.getAttribute("identifier"));
+ setSource(configElement.getAttribute("source"));
+ setLanguage(configElement.getAttribute("language"));
+ setRelation(configElement.getAttribute("relation"));
+ setCoverage(configElement.getAttribute("coverage"));
+ setBibliographicCitation(configElement.getAttribute("bibliographicCitation"));
+ setCreated(configElement.getAttribute("created"));
+ setLicense(configElement.getAttribute("license"));
+ setRequired(configElement.getAttribute("required"));
+ setSpatial(configElement.getAttribute("spatial"));
+ setValid(configElement.getAttribute("valid"));
+ } // DublinCoreImpl
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CommonPackage.Literals.DUBLIN_CORE;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public String getTitle() {
+ return title;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTitle(String newTitle) {
+ String oldTitle = title;
+ title = newTitle;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CommonPackage.DUBLIN_CORE__TITLE, oldTitle, title));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public String getCreator() {
+ return creator;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setCreator(String newCreator) {
+ String oldCreator = creator;
+ creator = newCreator;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CommonPackage.DUBLIN_CORE__CREATOR, oldCreator, creator));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public String getSubject() {
+ return subject;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSubject(String newSubject) {
+ String oldSubject = subject;
+ subject = newSubject;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CommonPackage.DUBLIN_CORE__SUBJECT, oldSubject, subject));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public String getDescription() {
+ return description;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDescription(String newDescription) {
+ String oldDescription = description;
+ description = newDescription;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CommonPackage.DUBLIN_CORE__DESCRIPTION, oldDescription, description));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public String getPublisher() {
+ return publisher;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPublisher(String newPublisher) {
+ String oldPublisher = publisher;
+ publisher = newPublisher;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CommonPackage.DUBLIN_CORE__PUBLISHER, oldPublisher, publisher));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public String getContributor() {
+ return contributor;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setContributor(String newContributor) {
+ String oldContributor = contributor;
+ contributor = newContributor;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CommonPackage.DUBLIN_CORE__CONTRIBUTOR, oldContributor, contributor));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public String getDate() {
+ return date;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDate(String newDate) {
+ String oldDate = date;
+ date = newDate;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CommonPackage.DUBLIN_CORE__DATE, oldDate, date));
+ }
+
+ /**
+ * @see org.eclipse.stem.common.DublinCore#setDate(java.util.Date)
+ */
+ public void setDate(Date date) {
+ setDate(createISO8601DateString(date));
+ } // setDate
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public String getType() {
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setType(String newType) {
+ String oldType = type;
+ type = newType;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CommonPackage.DUBLIN_CORE__TYPE, oldType, type));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public String getFormat() {
+ return format;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setFormat(String newFormat) {
+ String oldFormat = format;
+ format = newFormat;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CommonPackage.DUBLIN_CORE__FORMAT, oldFormat, format));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public String getIdentifier() {
+ return identifier;
+ }
+
+ /**
+ * provides the feature by featureName (String) if it exists.
+ * On failure return null
+ * @param featureName
+ * @return feature or null
+ */
+ public EStructuralFeature getFeature(String featureName) {
+ EList<EStructuralFeature> featureList = this.eClass().getEStructuralFeatures();
+ for(int i = 0; i < featureList.size(); i ++) {
+ if(featureList.get(i).getName().equalsIgnoreCase(featureName)) return featureList.get(i);
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setIdentifier(String newIdentifier) {
+ String oldIdentifier = identifier;
+ identifier = newIdentifier;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CommonPackage.DUBLIN_CORE__IDENTIFIER, oldIdentifier, identifier));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public String getSource() {
+ return source;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSource(String newSource) {
+ String oldSource = source;
+ source = newSource;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CommonPackage.DUBLIN_CORE__SOURCE, oldSource, source));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLanguage() {
+ return language;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLanguage(String newLanguage) {
+ String oldLanguage = language;
+ language = newLanguage;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CommonPackage.DUBLIN_CORE__LANGUAGE, oldLanguage, language));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public String getRelation() {
+ return relation;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setRelation(String newRelation) {
+ String oldRelation = relation;
+ relation = newRelation;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CommonPackage.DUBLIN_CORE__RELATION, oldRelation, relation));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public String getCoverage() {
+ return coverage;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setCoverage(String newCoverage) {
+ String oldCoverage = coverage;
+ coverage = newCoverage;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CommonPackage.DUBLIN_CORE__COVERAGE, oldCoverage, coverage));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public String getRights() {
+ return rights;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setRights(String newRights) {
+ String oldRights = rights;
+ rights = newRights;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CommonPackage.DUBLIN_CORE__RIGHTS, oldRights, rights));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public String getBibliographicCitation() {
+ return bibliographicCitation;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBibliographicCitation(String newBibliographicCitation) {
+ String oldBibliographicCitation = bibliographicCitation;
+ bibliographicCitation = newBibliographicCitation;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CommonPackage.DUBLIN_CORE__BIBLIOGRAPHIC_CITATION, oldBibliographicCitation, bibliographicCitation));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public String getCreated() {
+ return created;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setCreated(String newCreated) {
+ String oldCreated = created;
+ created = newCreated;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CommonPackage.DUBLIN_CORE__CREATED, oldCreated, created));
+ }
+
+ /**
+ * @see org.eclipse.stem.common.DublinCore#setCreated(java.util.Date)
+ */
+ public void setCreated(Date date) {
+ setCreated(createISO8601DateString(date));
+ } // setCreated
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLicense() {
+ return license;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLicense(String newLicense) {
+ String oldLicense = license;
+ license = newLicense;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CommonPackage.DUBLIN_CORE__LICENSE, oldLicense, license));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public String getRequired() {
+ return required;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setRequired(String newRequired) {
+ String oldRequired = required;
+ required = newRequired;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CommonPackage.DUBLIN_CORE__REQUIRED, oldRequired, required));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public String getSpatial() {
+ return spatial;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSpatial(String newSpatial) {
+ String oldSpatial = spatial;
+ spatial = newSpatial;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CommonPackage.DUBLIN_CORE__SPATIAL, oldSpatial, spatial));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public String getValid() {
+ return valid;
+ }
+
+ /**
+ * @see org.eclipse.stem.core.common.DublinCore#getValidEndDate()
+ */
+ public Date getValidEndDate() {
+ return getValidEndDate(getValid());
+ } // getValidEndDate
+
+ /**
+ * @see org.eclipse.stem.core.common.DublinCore#getValidEndDate()
+ */
+ @SuppressWarnings("null")
+ public static Date getValidEndDate(final String validValue) {
+ Date retValue = null;
+ // Is the valid value set?
+ if (validValue != null) {
+ // Yes
+ final int dateIndex = validValue.indexOf(END);
+ // Is the end date specified?
+ if (dateIndex >= 0) {
+ // Yes
+ try {
+ retValue = createDateFromISO8601DateString(validValue
+ .substring(dateIndex + END.length()));
+ } catch (ParseException e) {
+ retValue = null;
+ }
+ } // if
+ } // if
+ return retValue;
+ } // getValidEndDate
+
+ /**
+ * @see org.eclipse.stem.core.common.DublinCore#isValidBefore(DublinCore)
+ */
+ @SuppressWarnings("null")
+ public boolean isValidBefore(DublinCore dublinCore) {
+ final Date ourStartDate = getValidStartDate();
+ final Date otherStartDate = dublinCore != null ? dublinCore
+ .getValidStartDate() : null;
+
+ boolean retValue = (dublinCore == null) || (otherStartDate == null);
+
+ retValue = retValue
+ || (ourStartDate != null && otherStartDate.after(ourStartDate));
+
+ return retValue;
+ } // isValidBefore
+
+ public Date[] computeValidDateRangeOverlap(DublinCore dublinCore) {
+ Date[] retValue = null;
+
+ final Date ourStartDate = getValidStartDate();
+ final Date ourEndDate = getValidEndDate();
+ final Date otherStartDate = dublinCore.getValidStartDate();
+ final Date otherEndDate = dublinCore.getValidEndDate();
+
+ Date newStartDate = ourStartDate;
+ Date newEndDate = ourEndDate;
+
+ // Figure out which start date is oldest
+ // Do we have a start date?
+ if (ourStartDate != null) {
+ // Yes
+ // How about the other start date?
+ if (otherStartDate != null) {
+ // Yes
+ // Is the other start date after ours?
+ if (otherStartDate.after(ourStartDate)) {
+ // Yes
+ newStartDate = otherStartDate;
+ }
+ } // if other start date?
+ } // if start date?
+ else {
+ // No
+ newStartDate = otherStartDate;
+ }
+
+ // Figure out which end data is youngest
+ // Do we have an end date?
+ if (ourEndDate != null) {
+ // Yes
+ // How about the other end date?
+ if (otherEndDate != null) {
+ // Yes
+ // Is the other end date before ours?
+ if (otherEndDate.before(ourEndDate)) {
+ // Yes
+ newEndDate = otherEndDate;
+ }
+ } // if the other end date?
+ } // if we have an end date
+ else {
+ // No
+ newEndDate = otherEndDate;
+ }
+
+ // At this point the newStartDate and newEndDate could be null. However,
+ // if they are not null, we need to check to make sure that the start
+ // comes before the end.
+
+ // Do we have a new start date?
+ if (newStartDate != null) {
+ // Yes
+ // How about the new end date?
+ if (newEndDate != null) {
+ // Yes
+ // Does the new start date come before the new end date?
+ if (newStartDate.before(newEndDate)) {
+ // Yes
+ retValue = new Date[] {newStartDate,newEndDate};
+ }
+ }
+ } // if new start date
+
+ return retValue;
+ } // computeValidDateRangeOverlap
+
+ /**
+ * @param validValue
+ * @return <code>true</code> if the end date in the valid string does not
+ * exist, or if it does, if it is properly formatted,
+ * <code>false</code> otherwise.
+ */
+ public static boolean isValidEndDateValid(final String validValue) {
+ boolean retValue = true;
+ // Is the valid value set?
+ if (validValue != null) {
+ // Yes
+ try {
+ final String endPart = validValue.substring(
+ "start=yyyy-DD-mm;".length()).trim();
+ final int dateIndex = endPart.indexOf(END);
+
+ // Was there just white space?
+ if (endPart.equals("")) {
+ // Yes
+ return true;
+ }
+
+ // Does it end with a ";"?
+ if (!endPart.endsWith(";")) {
+ // No
+ return false;
+ }
+
+ // Is it the right length?
+ if (endPart.length() != END.length() + "yyyy-dd-mm;".length()) {
+ // No
+ return false;
+ }
+
+ // Is the end date specified?
+ if (dateIndex == 0) {
+ // Yes
+ // If we throw a parse exception we'll catch it below and return false
+ createDateFromISO8601DateString(endPart.substring( END.length()));
+ retValue = true;
+
+ } // if
+ else {
+ retValue = false;
+ }
+ } catch (ParseException e) {
+ retValue = false;
+ } catch (StringIndexOutOfBoundsException e) {
+ retValue = false;
+ }
+ } // if
+ return retValue;
+ } // isValidEndDateValid
+
+ /**
+ * @see org.eclipse.stem.core.common.DublinCore#getValidEndDate()
+ */
+ public Date getValidStartDate() {
+ return getValidStartDate(getValid());
+ } // getValidStartDate
+
+ /**
+ * @see org.eclipse.stem.core.common.DublinCore#getValidStartDate()
+ */
+ @SuppressWarnings("null")
+ public static Date getValidStartDate(final String validValue) {
+ Date retValue = null;
+ // Is the valid value set?
+ if (validValue != null) {
+ // Yes
+ final int dateIndex = validValue.indexOf(START) + START.length();
+ try {
+ retValue = createDateFromISO8601DateString(validValue
+ .substring(dateIndex));
+ } catch (ParseException e) {
+ retValue = null;
+ }
+ }
+ return retValue;
+ } // getValidStartDate
+
+ /**
+ * @param validValue
+ * @return <code>true</code> if the start date in the valid string exists
+ * and is properly formatted
+ */
+ public static boolean isValidStartDateValid(final String validValue) {
+ boolean retValue = false;
+ // Is the valid value set?
+ if (validValue != null) {
+ // Yes
+ try {
+ final String trimedValidValue = validValue.trim();
+ final int dateIndex = validValue.indexOf(START)
+ + START.length();
+ final String extractedDate = trimedValidValue.substring(
+ dateIndex, "start=YYYY-DD-MM;".length());
+ // Is there a ";" on the end of the date?
+ if (!extractedDate.endsWith(";")) {
+ // No
+ return false;
+ }
+ // If we throw a parse exception, we'll catch it below and return false
+ createDateFromISO8601DateString(extractedDate);
+ retValue = true;
+ } catch (ParseException e) {
+ retValue = false;
+ } catch (StringIndexOutOfBoundsException e) {
+ retValue = false;
+ }
+ }
+ return retValue;
+ } // isValidStartDateValid
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValid(String newValid) {
+ String oldValid = valid;
+ valid = newValid;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CommonPackage.DUBLIN_CORE__VALID, oldValid, valid));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public DublinCore populate() {
+ setCreated(Calendar.getInstance().getTime());
+ setCreator(System.getProperty("user.name"));
+ return this;
+ } // populate
+
+ /**
+ * @see org.eclipse.stem.common.DublinCore#setValid(java.util.Date,
+ * java.util.Date)
+ */
+ public void setValid(final Date startDate, final Date endDate) {
+ final StringBuilder sb = new StringBuilder(START);
+ sb.append(createISO8601DateString(startDate));
+ sb.append("; ");
+ sb.append(END);
+ sb.append(createISO8601DateString(endDate));
+ sb.append(";");
+ setValid(sb.toString());
+ } // setValid
+
+ /**
+ * @see org.eclipse.stem.common.DublinCore#setValid(java.util.Date)
+ */
+ public void setValid(final Date startDate) {
+ final StringBuilder sb = new StringBuilder(START);
+ sb.append(createISO8601DateString(startDate));
+ sb.append(";");
+ setValid(sb.toString());
+ } // setValid
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CommonPackage.DUBLIN_CORE__TITLE:
+ return getTitle();
+ case CommonPackage.DUBLIN_CORE__IDENTIFIER:
+ return getIdentifier();
+ case CommonPackage.DUBLIN_CORE__DESCRIPTION:
+ return getDescription();
+ case CommonPackage.DUBLIN_CORE__CREATOR:
+ return getCreator();
+ case CommonPackage.DUBLIN_CORE__DATE:
+ return getDate();
+ case CommonPackage.DUBLIN_CORE__FORMAT:
+ return getFormat();
+ case CommonPackage.DUBLIN_CORE__PUBLISHER:
+ return getPublisher();
+ case CommonPackage.DUBLIN_CORE__COVERAGE:
+ return getCoverage();
+ case CommonPackage.DUBLIN_CORE__CONTRIBUTOR:
+ return getContributor();
+ case CommonPackage.DUBLIN_CORE__RELATION:
+ return getRelation();
+ case CommonPackage.DUBLIN_CORE__RIGHTS:
+ return getRights();
+ case CommonPackage.DUBLIN_CORE__SOURCE:
+ return getSource();
+ case CommonPackage.DUBLIN_CORE__SUBJECT:
+ return getSubject();
+ case CommonPackage.DUBLIN_CORE__TYPE:
+ return getType();
+ case CommonPackage.DUBLIN_CORE__LANGUAGE:
+ return getLanguage();
+ case CommonPackage.DUBLIN_CORE__BIBLIOGRAPHIC_CITATION:
+ return getBibliographicCitation();
+ case CommonPackage.DUBLIN_CORE__CREATED:
+ return getCreated();
+ case CommonPackage.DUBLIN_CORE__LICENSE:
+ return getLicense();
+ case CommonPackage.DUBLIN_CORE__REQUIRED:
+ return getRequired();
+ case CommonPackage.DUBLIN_CORE__SPATIAL:
+ return getSpatial();
+ case CommonPackage.DUBLIN_CORE__VALID:
+ return getValid();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CommonPackage.DUBLIN_CORE__TITLE:
+ setTitle((String)newValue);
+ return;
+ case CommonPackage.DUBLIN_CORE__IDENTIFIER:
+ setIdentifier((String)newValue);
+ return;
+ case CommonPackage.DUBLIN_CORE__DESCRIPTION:
+ setDescription((String)newValue);
+ return;
+ case CommonPackage.DUBLIN_CORE__CREATOR:
+ setCreator((String)newValue);
+ return;
+ case CommonPackage.DUBLIN_CORE__DATE:
+ setDate((String)newValue);
+ return;
+ case CommonPackage.DUBLIN_CORE__FORMAT:
+ setFormat((String)newValue);
+ return;
+ case CommonPackage.DUBLIN_CORE__PUBLISHER:
+ setPublisher((String)newValue);
+ return;
+ case CommonPackage.DUBLIN_CORE__COVERAGE:
+ setCoverage((String)newValue);
+ return;
+ case CommonPackage.DUBLIN_CORE__CONTRIBUTOR:
+ setContributor((String)newValue);
+ return;
+ case CommonPackage.DUBLIN_CORE__RELATION:
+ setRelation((String)newValue);
+ return;
+ case CommonPackage.DUBLIN_CORE__RIGHTS:
+ setRights((String)newValue);
+ return;
+ case CommonPackage.DUBLIN_CORE__SOURCE:
+ setSource((String)newValue);
+ return;
+ case CommonPackage.DUBLIN_CORE__SUBJECT:
+ setSubject((String)newValue);
+ return;
+ case CommonPackage.DUBLIN_CORE__TYPE:
+ setType((String)newValue);
+ return;
+ case CommonPackage.DUBLIN_CORE__LANGUAGE:
+ setLanguage((String)newValue);
+ return;
+ case CommonPackage.DUBLIN_CORE__BIBLIOGRAPHIC_CITATION:
+ setBibliographicCitation((String)newValue);
+ return;
+ case CommonPackage.DUBLIN_CORE__CREATED:
+ setCreated((String)newValue);
+ return;
+ case CommonPackage.DUBLIN_CORE__LICENSE:
+ setLicense((String)newValue);
+ return;
+ case CommonPackage.DUBLIN_CORE__REQUIRED:
+ setRequired((String)newValue);
+ return;
+ case CommonPackage.DUBLIN_CORE__SPATIAL:
+ setSpatial((String)newValue);
+ return;
+ case CommonPackage.DUBLIN_CORE__VALID:
+ setValid((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CommonPackage.DUBLIN_CORE__TITLE:
+ setTitle(TITLE_EDEFAULT);
+ return;
+ case CommonPackage.DUBLIN_CORE__IDENTIFIER:
+ setIdentifier(IDENTIFIER_EDEFAULT);
+ return;
+ case CommonPackage.DUBLIN_CORE__DESCRIPTION:
+ setDescription(DESCRIPTION_EDEFAULT);
+ return;
+ case CommonPackage.DUBLIN_CORE__CREATOR:
+ setCreator(CREATOR_EDEFAULT);
+ return;
+ case CommonPackage.DUBLIN_CORE__DATE:
+ setDate(DATE_EDEFAULT);
+ return;
+ case CommonPackage.DUBLIN_CORE__FORMAT:
+ setFormat(FORMAT_EDEFAULT);
+ return;
+ case CommonPackage.DUBLIN_CORE__PUBLISHER:
+ setPublisher(PUBLISHER_EDEFAULT);
+ return;
+ case CommonPackage.DUBLIN_CORE__COVERAGE:
+ setCoverage(COVERAGE_EDEFAULT);
+ return;
+ case CommonPackage.DUBLIN_CORE__CONTRIBUTOR:
+ setContributor(CONTRIBUTOR_EDEFAULT);
+ return;
+ case CommonPackage.DUBLIN_CORE__RELATION:
+ setRelation(RELATION_EDEFAULT);
+ return;
+ case CommonPackage.DUBLIN_CORE__RIGHTS:
+ setRights(RIGHTS_EDEFAULT);
+ return;
+ case CommonPackage.DUBLIN_CORE__SOURCE:
+ setSource(SOURCE_EDEFAULT);
+ return;
+ case CommonPackage.DUBLIN_CORE__SUBJECT:
+ setSubject(SUBJECT_EDEFAULT);
+ return;
+ case CommonPackage.DUBLIN_CORE__TYPE:
+ setType(TYPE_EDEFAULT);
+ return;
+ case CommonPackage.DUBLIN_CORE__LANGUAGE:
+ setLanguage(LANGUAGE_EDEFAULT);
+ return;
+ case CommonPackage.DUBLIN_CORE__BIBLIOGRAPHIC_CITATION:
+ setBibliographicCitation(BIBLIOGRAPHIC_CITATION_EDEFAULT);
+ return;
+ case CommonPackage.DUBLIN_CORE__CREATED:
+ setCreated(CREATED_EDEFAULT);
+ return;
+ case CommonPackage.DUBLIN_CORE__LICENSE:
+ setLicense(LICENSE_EDEFAULT);
+ return;
+ case CommonPackage.DUBLIN_CORE__REQUIRED:
+ setRequired(REQUIRED_EDEFAULT);
+ return;
+ case CommonPackage.DUBLIN_CORE__SPATIAL:
+ setSpatial(SPATIAL_EDEFAULT);
+ return;
+ case CommonPackage.DUBLIN_CORE__VALID:
+ setValid(VALID_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CommonPackage.DUBLIN_CORE__TITLE:
+ return TITLE_EDEFAULT == null ? title != null : !TITLE_EDEFAULT.equals(title);
+ case CommonPackage.DUBLIN_CORE__IDENTIFIER:
+ return IDENTIFIER_EDEFAULT == null ? identifier != null : !IDENTIFIER_EDEFAULT.equals(identifier);
+ case CommonPackage.DUBLIN_CORE__DESCRIPTION:
+ return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
+ case CommonPackage.DUBLIN_CORE__CREATOR:
+ return CREATOR_EDEFAULT == null ? creator != null : !CREATOR_EDEFAULT.equals(creator);
+ case CommonPackage.DUBLIN_CORE__DATE:
+ return DATE_EDEFAULT == null ? date != null : !DATE_EDEFAULT.equals(date);
+ case CommonPackage.DUBLIN_CORE__FORMAT:
+ return FORMAT_EDEFAULT == null ? format != null : !FORMAT_EDEFAULT.equals(format);
+ case CommonPackage.DUBLIN_CORE__PUBLISHER:
+ return PUBLISHER_EDEFAULT == null ? publisher != null : !PUBLISHER_EDEFAULT.equals(publisher);
+ case CommonPackage.DUBLIN_CORE__COVERAGE:
+ return COVERAGE_EDEFAULT == null ? coverage != null : !COVERAGE_EDEFAULT.equals(coverage);
+ case CommonPackage.DUBLIN_CORE__CONTRIBUTOR:
+ return CONTRIBUTOR_EDEFAULT == null ? contributor != null : !CONTRIBUTOR_EDEFAULT.equals(contributor);
+ case CommonPackage.DUBLIN_CORE__RELATION:
+ return RELATION_EDEFAULT == null ? relation != null : !RELATION_EDEFAULT.equals(relation);
+ case CommonPackage.DUBLIN_CORE__RIGHTS:
+ return RIGHTS_EDEFAULT == null ? rights != null : !RIGHTS_EDEFAULT.equals(rights);
+ case CommonPackage.DUBLIN_CORE__SOURCE:
+ return SOURCE_EDEFAULT == null ? source != null : !SOURCE_EDEFAULT.equals(source);
+ case CommonPackage.DUBLIN_CORE__SUBJECT:
+ return SUBJECT_EDEFAULT == null ? subject != null : !SUBJECT_EDEFAULT.equals(subject);
+ case CommonPackage.DUBLIN_CORE__TYPE:
+ return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals(type);
+ case CommonPackage.DUBLIN_CORE__LANGUAGE:
+ return LANGUAGE_EDEFAULT == null ? language != null : !LANGUAGE_EDEFAULT.equals(language);
+ case CommonPackage.DUBLIN_CORE__BIBLIOGRAPHIC_CITATION:
+ return BIBLIOGRAPHIC_CITATION_EDEFAULT == null ? bibliographicCitation != null : !BIBLIOGRAPHIC_CITATION_EDEFAULT.equals(bibliographicCitation);
+ case CommonPackage.DUBLIN_CORE__CREATED:
+ return CREATED_EDEFAULT == null ? created != null : !CREATED_EDEFAULT.equals(created);
+ case CommonPackage.DUBLIN_CORE__LICENSE:
+ return LICENSE_EDEFAULT == null ? license != null : !LICENSE_EDEFAULT.equals(license);
+ case CommonPackage.DUBLIN_CORE__REQUIRED:
+ return REQUIRED_EDEFAULT == null ? required != null : !REQUIRED_EDEFAULT.equals(required);
+ case CommonPackage.DUBLIN_CORE__SPATIAL:
+ return SPATIAL_EDEFAULT == null ? spatial != null : !SPATIAL_EDEFAULT.equals(spatial);
+ case CommonPackage.DUBLIN_CORE__VALID:
+ return VALID_EDEFAULT == null ? valid != null : !VALID_EDEFAULT.equals(valid);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+
+ final StringBuilder result = new StringBuilder();
+ if (getIdentifier() != null && !getIdentifier().equals("")) {
+ result.append("identifier=\"");
+ result.append(getIdentifier().trim());
+ result.append("\" ");
+ }
+ if (getType() != null && !getType().equals("")) {
+ result.append("type=\"");
+ result.append(getType().trim());
+ result.append("\" ");
+ }
+ if (getTitle() != null && !getTitle().equals("")) {
+ result.append("title=\"");
+ result.append(getTitle().trim());
+ result.append("\" ");
+ }
+
+ if (getCreator() != null && !getCreator().equals("")) {
+ result.append("creator=\"");
+ result.append(getCreator().trim());
+ result.append("\" ");
+ }
+ if (getSubject() != null && !getSubject().equals("")) {
+ result.append("subject=\"");
+ result.append(getSubject().trim());
+ result.append("\" ");
+ }
+ if (getDescription() != null && !getDescription().equals("")) {
+ result.append("description=\"");
+ result.append(getDescription().trim());
+ result.append("\" ");
+ }
+
+ if (getPublisher() != null && !getPublisher().equals("")) {
+ result.append("publisher=\"");
+ result.append(getPublisher().trim());
+ result.append("\" ");
+ }
+ if (getContributor() != null && !getContributor().equals("")) {
+ result.append("contributor=\"");
+ result.append(getContributor().trim());
+ result.append("\" ");
+ }
+ if (getDate() != null && !getDate().equals("")) {
+ result.append("date=\"");
+ result.append(getDate().trim());
+ result.append("\" ");
+ }
+
+ if (getFormat() != null && !getFormat().equals("")) {
+ result.append("format=\"");
+ result.append(getFormat().trim());
+ result.append("\" ");
+ }
+
+ if (getSource() != null && !getSource().equals("")) {
+ result.append("source=\"");
+ result.append(getSource().trim());
+ result.append("\" ");
+ }
+ if (getLanguage() != null && !getLanguage().equals("")) {
+ result.append("language=\"");
+ result.append(getLanguage().trim());
+ result.append("\" ");
+ }
+ if (getRelation() != null && !getRelation().equals("")) {
+ result.append("relation=\"");
+ result.append(getRelation().trim());
+ result.append("\" ");
+ }
+ if (getCoverage() != null && !getCoverage().equals("")) {
+ result.append("coverage=\"");
+ result.append(getCoverage().trim());
+ result.append("\" ");
+ }
+ if (getRights() != null && !getRights().equals("")) {
+ result.append("rights=\"");
+ result.append(getRights().trim());
+ result.append("\" ");
+ }
+ if (getBibliographicCitation() != null && !getBibliographicCitation().equals("")) {
+ result.append("bibliographicCitation=\"");
+ result.append(getBibliographicCitation().trim());
+ result.append("\" ");
+ }
+ if (getCreated() != null && !getCreated().equals("")) {
+ result.append("created=\"");
+ result.append(getCreated().trim());
+ result.append("\" ");
+ }
+ if (getLicense() != null && !getLicense().equals("")) {
+ result.append("license=\"");
+ result.append(getLicense().trim());
+ result.append("\" ");
+ }
+ if (getRequired() != null && !getRequired().equals("")) {
+ result.append("required=\"");
+ result.append(getRequired().trim());
+ result.append("\" ");
+ }
+ if (getSpatial() != null && !getSpatial().equals("")) {
+ result.append("spatial=\"");
+ result.append(getSpatial().trim());
+ result.append("\" ");
+ }
+ if (getValid() != null && !getValid().equals("")) {
+ result.append("valid=\"");
+ result.append(getValid().trim());
+ result.append("\" ");
+ }
+
+ return result.toString();
+ } // toString
+
+ /**
+ * Create a date string that conforms to ISO&nbsp;8601 <a
+ * href="http://www.w3.org/TR/NOTE-datetime">
+ * http://www.w3.org/TR/NOTE-datetime</a>.
+ * <ul>
+ * <li>Example:</li>
+ * 2006-03-29
+ * </ul>
+ *
+ * @see #getDate()
+ * @see #getCreated()
+ * @see #getValid()
+ */
+ public static String createISO8601DateString(final Date date) {
+ return (new SimpleDateFormat("yyyy-MM-dd")).format(date);
+ } // createISO8601DateString
+
+ /**
+ * Create a Date from a string that conforms to ISO&nbsp;8601 <a
+ * href="http://www.w3.org/TR/NOTE-datetime">
+ * http://www.w3.org/TR/NOTE-datetime</a>.
+ * <ul>
+ * <li>Example:</li>
+ * 2006-03-29
+ * </ul>
+ *
+ * @throws ParseException
+ * if the date string is not of the format "yyyy-MM-dd"
+ * @see #getDate()
+ * @see #getCreated()
+ * @see #getValid()
+ */
+ public static Date createDateFromISO8601DateString(
+ final String iso8601DateString) throws ParseException {
+ return (new SimpleDateFormat("yyyy-MM-dd")).parse(iso8601DateString);
+ } // createDateFromISO8601DateString
+
+} // DublinCoreImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/IdentifiableFilterImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/IdentifiableFilterImpl.java
new file mode 100644
index 000000000..83a7216b8
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/IdentifiableFilterImpl.java
@@ -0,0 +1,168 @@
+package org.eclipse.stem.core.common.impl;
+/*******************************************************************************
+ * Copyright (c) 2010 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
+ *******************************************************************************/
+
+import java.util.ArrayList;
+import java.util.StringTokenizer;
+
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.stem.core.common.CommonPackage;
+import org.eclipse.stem.core.common.IdentifiableFilter;
+import org.eclipse.stem.core.graph.Edge;
+import org.eclipse.stem.core.graph.Label;
+import org.eclipse.stem.core.graph.Node;
+import org.eclipse.stem.core.graph.NodeLabel;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Identifiable Filter</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class IdentifiableFilterImpl extends EObjectImpl implements IdentifiableFilter {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IdentifiableFilterImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CommonPackage.Literals.IDENTIFIABLE_FILTER;
+ }
+
+ private String []patterns;
+ public IdentifiableFilterImpl(String filter) {
+ if(filter == null)return;
+ if(filter.contains(":"))return; // Internal use by STEM, not specified by the user
+ if(filter.trim().equals(""))return;
+ StringTokenizer st = new StringTokenizer(filter.toString(), ";");
+ patterns = new String[st.countTokens()];
+ for(int i=0;i<patterns.length;++i) {
+ String pat = st.nextToken();
+ patterns[i]=pat;
+ }
+ }
+
+ public EMap<URI, Node> filterNodes(EMap<URI, Node>map) {
+ if(patterns == null)return map;
+ ArrayList<URI>remove = new ArrayList<URI>();
+ for(URI uri:map.keySet()) {
+ String lastSegment = uri.lastSegment();
+ boolean keep = false;
+
+ for(int i=0;i<patterns.length;++i) {
+ String pat = patterns[i];
+ boolean wildcard = false;
+ if(pat.endsWith("*")) {pat = pat.substring(0, pat.length()-1);wildcard = true;}
+ if(wildcard && lastSegment.contains(pat)
+ || !wildcard && lastSegment.equals(pat)) {keep = true;break;}
+ }
+ if(!keep)remove.add(uri);
+ }
+ for(URI u:remove)map.remove(u);
+ return map;
+ }
+ public EMap<URI, Edge> filterEdges(EMap<URI, Edge>map) {
+ if(patterns == null)return map;
+ ArrayList<URI>remove = new ArrayList<URI>();
+ for(URI uri:map.keySet()) {
+ Edge edge = map.get(uri);
+ boolean foundSource=false, foundDest = false;
+ for(int i=0;i<patterns.length;++i) {
+ String pat = patterns[i];
+ boolean wildcard = false;
+ if(pat.endsWith("*")) {pat = pat.substring(0, pat.length()-1);wildcard = true;}
+
+ if(wildcard && edge.getNodeAURI().lastSegment().contains(pat)
+ || !wildcard && edge.getNodeAURI().lastSegment().equals(pat)) foundSource = true;
+ if(wildcard && edge.getNodeBURI().lastSegment().contains(pat)
+ || !wildcard && edge.getNodeBURI().lastSegment().equals(pat)) foundDest = true;
+ }
+ if(!(foundSource && foundDest))remove.add(uri);
+ }
+ for(URI u:remove)map.remove(u);
+ return map;
+ }
+ public EMap<URI, NodeLabel> filterNodeLabels(EMap<URI, NodeLabel>map) {
+ if(patterns == null)return map;
+ ArrayList<URI>remove = new ArrayList<URI>();
+ for(URI uri:map.keySet()) {
+ String lastSegment = uri.lastSegment();
+ boolean keep = false;
+ for(int i=0;i<patterns.length;++i) {
+ String pat = patterns[i];
+ boolean wildcard = false;
+ if(pat.endsWith("*")) {pat = pat.substring(0, pat.length()-1);wildcard = true;}
+ if(wildcard && lastSegment.contains(pat)
+ || !wildcard && lastSegment.equals(pat)) {keep = true;break;}
+ }
+ if(!keep)remove.add(uri);
+ }
+ for(URI u:remove)map.remove(u);
+ return map;
+ }
+ public EMap<URI, Label> filterLabels(EMap<URI, Label>map) {
+ if(patterns == null)return map;
+ ArrayList<URI>remove = new ArrayList<URI>();
+ for(URI uri:map.keySet()) {
+ String lastSegment = uri.lastSegment();
+ boolean keep = false;
+ for(int i=0;i<patterns.length;++i) {
+ String pat = patterns[i];
+ boolean wildcard = false;
+ if(pat.endsWith("*")) {pat = pat.substring(0, pat.length()-1);wildcard = true;}
+
+ if(wildcard && lastSegment.contains(pat) ||
+ !wildcard && lastSegment.equals(pat)) {keep = true;break;}
+ if(!keep)remove.add(uri);
+ }
+ }
+ for(URI u:remove)map.remove(u);
+ return map;
+ }
+ public void restrict(IdentifiableFilterImpl other) {
+ // ToDO. The idea is that we need to consolidate a list of patterns into a single
+ // list if there are duplicates or more general patterns
+/* if(other.patterns == null)return;
+ ArrayList<String>restrictedPatterns = new ArrayList<String>();
+ if(this.patterns != null) for(String mypat:this.patterns)restrictedPatterns.add(mypat);
+ for(String otherpat:other.patterns) if(!restrictedPatterns.contains(otherpat)) restrictedPatterns.add(otherpat);
+ // Now go through and remove patterns that are more general than others.
+ for(String pat:other.patterns) {
+ for(String p:restrictedPatterns)
+ if(!p.equals(pat) && p.contains(pat)) restrictedPatterns.remove(p);
+ }
+ if(this.patterns != null)
+ for(String pat:this.patterns) {
+ for(String p:restrictedPatterns)
+ if(!p.equals(pat) && p.contains(pat)) restrictedPatterns.remove(p);
+ }
+ this.patterns = new String[restrictedPatterns.size()];
+ for(int i=0;i<restrictedPatterns.size();++i) this.patterns[i] = restrictedPatterns.get(i);
+ */
+ }
+
+} //IdentifiableFilterImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/IdentifiableImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/IdentifiableImpl.java
new file mode 100644
index 000000000..9b28be421
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/IdentifiableImpl.java
@@ -0,0 +1,419 @@
+package org.eclipse.stem.core.common.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.stem.core.Constants;
+import org.eclipse.stem.core.STEMURI;
+import org.eclipse.stem.core.common.CommonFactory;
+import org.eclipse.stem.core.common.CommonPackage;
+import org.eclipse.stem.core.common.DublinCore;
+import org.eclipse.stem.core.common.Identifiable;
+
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Identifiable</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.common.impl.IdentifiableImpl#getURI <em>URI</em>}</li>
+ * <li>{@link org.eclipse.stem.core.common.impl.IdentifiableImpl#getTypeURI <em>Type URI</em>}</li>
+ * <li>{@link org.eclipse.stem.core.common.impl.IdentifiableImpl#getDublinCore <em>Dublin Core</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class IdentifiableImpl extends EObjectImpl implements
+ Identifiable {
+
+
+ /**
+ * The default value of the '{@link #getURI() <em>URI</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getURI()
+ * @generated
+ * @ordered
+ */
+ protected static final URI URI_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getURI() <em>URI</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getURI()
+ * @generated
+ * @ordered
+ */
+ protected URI uRI = URI_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getTypeURI() <em>Type URI</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getTypeURI()
+ * @generated
+ * @ordered
+ */
+ protected static final URI TYPE_URI_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getTypeURI() <em>Type URI</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getTypeURI()
+ * @generated
+ * @ordered
+ */
+ protected URI typeURI = TYPE_URI_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getDublinCore() <em>Dublin Core</em>}' containment reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getDublinCore()
+ * @generated
+ * @ordered
+ */
+ protected DublinCore dublinCore;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ protected IdentifiableImpl() {
+ super();
+ setDublinCore(CommonFactory.eINSTANCE.createDublinCore());
+// setURI(STEMURI.createURI("identifiable" + STEMURI.generateUniquePart()));
+ setTypeURI(STEMURI.IDENTIFIABLE_TYPE_URI);
+ } // IdentifiableImpl
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CommonPackage.Literals.IDENTIFIABLE;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public DublinCore getDublinCore() {
+ return dublinCore;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public NotificationChain basicSetDublinCore(DublinCore newDublinCore, NotificationChain msgs) {
+ DublinCore oldDublinCore = getDublinCore();
+ dublinCore = newDublinCore;
+
+ // A new DublinCore instance?
+ if (getDublinCore() != null) {
+ // Yes
+ // Make sure the identifier and format URI's match the Identifiable's
+ // Are they valid yet?
+ if (getURI() != null && getTypeURI() != null) {
+ // Yes
+ getDublinCore().setIdentifier(getURI().toString());
+ getDublinCore().setType(getTypeURI().toString());
+ } // if
+
+ } // if
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, CommonPackage.IDENTIFIABLE__DUBLIN_CORE, oldDublinCore, newDublinCore);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDublinCore(DublinCore newDublinCore) {
+ if (newDublinCore != dublinCore) {
+ NotificationChain msgs = null;
+ if (dublinCore != null)
+ msgs = ((InternalEObject)dublinCore).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - CommonPackage.IDENTIFIABLE__DUBLIN_CORE, null, msgs);
+ if (newDublinCore != null)
+ msgs = ((InternalEObject)newDublinCore).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - CommonPackage.IDENTIFIABLE__DUBLIN_CORE, null, msgs);
+ msgs = basicSetDublinCore(newDublinCore, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CommonPackage.IDENTIFIABLE__DUBLIN_CORE, newDublinCore, newDublinCore));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public URI getTypeURI() {
+ return typeURI;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ *
+ * Set the type URI, but also update the DublinCore type.
+ *
+ * <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public void setTypeURI(URI newTypeURI) {
+ URI oldTypeURI = getTypeURI();
+ typeURI = newTypeURI;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ CommonPackage.IDENTIFIABLE__TYPE_URI, oldTypeURI, getTypeURI()));
+ // Update DublinCore?
+ if (getDublinCore() != null) {
+ // Yes
+ getDublinCore().setType(newTypeURI.toString());
+ }
+ } // setTypeURI
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public boolean sane() {
+ boolean retValue = true;
+
+ //retValue = retValue && getURI().scheme().equals(Constants.STEM_SCHEME);
+ //assert(retValue);
+
+ retValue = retValue && getTypeURI().scheme().equals(Constants.STEM_TYPE_SCHEME);
+ assert(retValue);
+
+ // If there is dublin core then the URI's of the Identifiable and the
+ // Dublin Core instance should agree.
+ if (dublinCore != null) {
+ final DublinCore dc = getDublinCore();
+ retValue = retValue && getURI().toString().equals(dc.getIdentifier());
+ assert(retValue);
+ }
+
+ // This test looks for duplicate adapters. This can occur if the
+ // adapters are stateful
+ // Any adapters?
+ // if (retValue && eAdapters != null && eAdapters.size() > 0 ) {
+ // // Yes
+ // // The list of adapters shouldn't contain any duplicate adapters of
+ // // the same type
+ // final Set<Class> types = new HashSet<Class>();
+ // for (Adapter adapter : eAdapters) {
+ // types.add(adapter.getClass());
+ // }
+ // retValue = retValue && types.size() == eAdapters.size();
+ // assert retValue;
+ // } // if any adapters
+
+
+ return retValue;
+ } // sane
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public URI getURI() {
+ return uRI;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ *
+ * Set the URI and also update the Identifier in the dublin core instance
+ *
+ * <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public void setURI(URI newURI) {
+ URI oldURI = getURI();
+ uRI = newURI;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ CommonPackage.IDENTIFIABLE__URI, oldURI, getURI()));
+ // Update DublinCore?
+ if (getDublinCore() != null) {
+ // Yes
+ getDublinCore().setIdentifier(newURI.toString());
+ }
+ } // setURI
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case CommonPackage.IDENTIFIABLE__DUBLIN_CORE:
+ return basicSetDublinCore(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CommonPackage.IDENTIFIABLE__URI:
+ return getURI();
+ case CommonPackage.IDENTIFIABLE__TYPE_URI:
+ return getTypeURI();
+ case CommonPackage.IDENTIFIABLE__DUBLIN_CORE:
+ return getDublinCore();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CommonPackage.IDENTIFIABLE__URI:
+ setURI((URI)newValue);
+ return;
+ case CommonPackage.IDENTIFIABLE__TYPE_URI:
+ setTypeURI((URI)newValue);
+ return;
+ case CommonPackage.IDENTIFIABLE__DUBLIN_CORE:
+ setDublinCore((DublinCore)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CommonPackage.IDENTIFIABLE__URI:
+ setURI(URI_EDEFAULT);
+ return;
+ case CommonPackage.IDENTIFIABLE__TYPE_URI:
+ setTypeURI(TYPE_URI_EDEFAULT);
+ return;
+ case CommonPackage.IDENTIFIABLE__DUBLIN_CORE:
+ setDublinCore((DublinCore)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CommonPackage.IDENTIFIABLE__URI:
+ return URI_EDEFAULT == null ? uRI != null : !URI_EDEFAULT.equals(uRI);
+ case CommonPackage.IDENTIFIABLE__TYPE_URI:
+ return TYPE_URI_EDEFAULT == null ? typeURI != null : !TYPE_URI_EDEFAULT.equals(typeURI);
+ case CommonPackage.IDENTIFIABLE__DUBLIN_CORE:
+ return dublinCore != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+
+ /**
+ * <!-- begin-user-doc -->
+ * Enforce identity semantics on equality to
+ * comply with the general EMF contract.
+ * <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ @Override
+ public final boolean equals(Object obj) {
+ return super.equals(obj);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * Enforce identity semantics on hashCode to
+ * comply with the general EMF contract.
+ * <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ @Override
+ public final int hashCode() {
+ return super.hashCode();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+
+ StringBuffer result = new StringBuffer();
+ result.append("(uRI: ");
+ result.append(getURI());
+ result.append(", typeURI: ");
+ result.append(getTypeURI());
+ result.append(')');
+ return result.toString();
+ }
+
+ /**
+ * @see java.lang.Comparable#compareTo(java.lang.Object)
+ */
+ public int compareTo(Identifiable o) {
+ return this.getURI().toString().compareTo(o.getURI().toString());
+
+ /* Old code. Commented out since it's slow and we need to do quick sorting in many places
+
+ ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+ final IItemLabelProvider lp1 = (IItemLabelProvider) itemProviderFactory.adapt(
+ this, IItemLabelProvider.class);
+ final IItemLabelProvider lp2 = (IItemLabelProvider) itemProviderFactory.adapt(o,
+ IItemLabelProvider.class);
+ return lp1.getText(this).compareTo(lp2.getText(o));
+ */
+ } // compareTo
+
+
+} // IdentifiableImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/StringValueImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/StringValueImpl.java
new file mode 100644
index 000000000..65c3f26f4
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/StringValueImpl.java
@@ -0,0 +1,189 @@
+package org.eclipse.stem.core.common.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2010 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.stem.core.common.CommonPackage;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.StringValue;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>String Value</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.common.impl.StringValueImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StringValueImpl extends EObjectImpl implements StringValue {
+ /**
+ * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected static final String VALUE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected String value = VALUE_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StringValueImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CommonPackage.Literals.STRING_VALUE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValue(String newValue) {
+ String oldValue = value;
+ value = newValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CommonPackage.STRING_VALUE__VALUE, oldValue, value));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CommonPackage.STRING_VALUE__VALUE:
+ return getValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CommonPackage.STRING_VALUE__VALUE:
+ setValue((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CommonPackage.STRING_VALUE__VALUE:
+ setValue(VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CommonPackage.STRING_VALUE__VALUE:
+ return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (value: "); //$NON-NLS-1$
+ result.append(value);
+ result.append(')');
+ return result.toString();
+ }
+
+ private Identifiable findIdentifiable(EObject o) {
+ if(o instanceof Identifiable) return (Identifiable)o;
+ if(o.eContainer() != null) return findIdentifiable(o.eContainer());
+ return null;
+ }
+ /**
+ * Need to override to make sure modifiers can find
+ */
+ public boolean valueEquals(StringValueImpl svi) {
+ Identifiable id = findIdentifiable(svi);
+ Identifiable id2 = findIdentifiable(this);
+ if(!id.getURI().equals(id2.getURI())) return false;
+
+ // Need to make sure that the path from the identifiable
+ // to here is the same
+ //... todo
+ return (super.equals(svi));
+ }
+} //StringValueImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/StringValueListImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/StringValueListImpl.java
new file mode 100644
index 000000000..44922a5c1
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/impl/StringValueListImpl.java
@@ -0,0 +1,156 @@
+package org.eclipse.stem.core.common.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2010 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
+ *******************************************************************************/
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.stem.core.common.CommonPackage;
+import org.eclipse.stem.core.common.StringValue;
+import org.eclipse.stem.core.common.StringValueList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>String Value List</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.common.impl.StringValueListImpl#getValues <em>Values</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StringValueListImpl extends EObjectImpl implements StringValueList {
+ /**
+ * The cached value of the '{@link #getValues() <em>Values</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValues()
+ * @generated
+ * @ordered
+ */
+ protected EList<StringValue> values;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StringValueListImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CommonPackage.Literals.STRING_VALUE_LIST;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<StringValue> getValues() {
+ if (values == null) {
+ values = new EObjectContainmentEList<StringValue>(StringValue.class, this, CommonPackage.STRING_VALUE_LIST__VALUES);
+ }
+ return values;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case CommonPackage.STRING_VALUE_LIST__VALUES:
+ return ((InternalEList<?>)getValues()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CommonPackage.STRING_VALUE_LIST__VALUES:
+ return getValues();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CommonPackage.STRING_VALUE_LIST__VALUES:
+ getValues().clear();
+ getValues().addAll((Collection<? extends StringValue>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CommonPackage.STRING_VALUE_LIST__VALUES:
+ getValues().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CommonPackage.STRING_VALUE_LIST__VALUES:
+ return values != null && !values.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //StringValueListImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/CommonEditPlugin.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/CommonEditPlugin.java
new file mode 100644
index 000000000..d900db33b
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/CommonEditPlugin.java
@@ -0,0 +1,97 @@
+package org.eclipse.stem.core.common.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.ui.EclipseUIPlugin;
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the Common editor plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class CommonEditPlugin extends EMFPlugin {
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final CommonEditPlugin INSTANCE = new CommonEditPlugin();
+
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static Implementation plugin;
+
+ /**
+ * Create the instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CommonEditPlugin() {
+ super
+ (new ResourceLocator [] {
+ });
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the singleton instance.
+ * @generated
+ */
+ public ResourceLocator getPluginResourceLocator() {
+ return plugin;
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the singleton instance.
+ * @generated
+ */
+ public static Implementation getPlugin() {
+ return plugin;
+ }
+
+ /**
+ * The actual implementation of the Eclipse <b>Plugin</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static class Implementation extends EclipseUIPlugin {
+ /**
+ * Creates an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Implementation() {
+ super();
+
+ // Remember the static instance.
+ //
+ plugin = this;
+ }
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/CommonItemProviderAdapterFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/CommonItemProviderAdapterFactory.java
new file mode 100644
index 000000000..407459a28
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/CommonItemProviderAdapterFactory.java
@@ -0,0 +1,351 @@
+package org.eclipse.stem.core.common.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.common.util.CommonAdapterFactory;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CommonItemProviderAdapterFactory extends CommonAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+ /**
+ * This keeps track of the root adapter factory that delegates to this adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ComposedAdapterFactory parentAdapterFactory;
+
+ /**
+ * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+ /**
+ * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+ /**
+ * This constructs an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CommonItemProviderAdapterFactory() {
+ supportedTypes.add(IEditingDomainItemProvider.class);
+ supportedTypes.add(IStructuredItemContentProvider.class);
+ supportedTypes.add(ITreeItemContentProvider.class);
+ supportedTypes.add(IItemLabelProvider.class);
+ supportedTypes.add(IItemPropertySource.class);
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.common.DublinCore} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DublinCoreItemProvider dublinCoreItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.common.DublinCore}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createDublinCoreAdapter() {
+ if (dublinCoreItemProvider == null) {
+ dublinCoreItemProvider = new DublinCoreItemProvider(this);
+ }
+
+ return dublinCoreItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.common.IdentifiableFilter} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IdentifiableFilterItemProvider identifiableFilterItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.common.IdentifiableFilter}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createIdentifiableFilterAdapter() {
+ if (identifiableFilterItemProvider == null) {
+ identifiableFilterItemProvider = new IdentifiableFilterItemProvider(this);
+ }
+
+ return identifiableFilterItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.common.DoubleValueList} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DoubleValueListItemProvider doubleValueListItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.common.DoubleValueList}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createDoubleValueListAdapter() {
+ if (doubleValueListItemProvider == null) {
+ doubleValueListItemProvider = new DoubleValueListItemProvider(this);
+ }
+
+ return doubleValueListItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.common.DoubleValueMatrix} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DoubleValueMatrixItemProvider doubleValueMatrixItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.common.DoubleValueMatrix}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createDoubleValueMatrixAdapter() {
+ if (doubleValueMatrixItemProvider == null) {
+ doubleValueMatrixItemProvider = new DoubleValueMatrixItemProvider(this);
+ }
+
+ return doubleValueMatrixItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.common.DoubleValue} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DoubleValueItemProvider doubleValueItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.common.DoubleValue}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createDoubleValueAdapter() {
+ if (doubleValueItemProvider == null) {
+ doubleValueItemProvider = new DoubleValueItemProvider(this);
+ }
+
+ return doubleValueItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.common.StringValueList} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StringValueListItemProvider stringValueListItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.common.StringValueList}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createStringValueListAdapter() {
+ if (stringValueListItemProvider == null) {
+ stringValueListItemProvider = new StringValueListItemProvider(this);
+ }
+
+ return stringValueListItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.common.StringValue} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StringValueItemProvider stringValueItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.common.StringValue}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createStringValueAdapter() {
+ if (stringValueItemProvider == null) {
+ stringValueItemProvider = new StringValueItemProvider(this);
+ }
+
+ return stringValueItemProvider;
+ }
+
+ /**
+ * This returns the root adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ComposeableAdapterFactory getRootAdapterFactory() {
+ return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+ }
+
+ /**
+ * This sets the composed adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+ this.parentAdapterFactory = parentAdapterFactory;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object type) {
+ return supportedTypes.contains(type) || super.isFactoryForType(type);
+ }
+
+ /**
+ * This implementation substitutes the factory itself as the key for the adapter.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter adapt(Notifier notifier, Object type) {
+ return super.adapt(notifier, this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public Object adapt(Object object, Object type) {
+ if (isFactoryForType(type)) {
+ Object adapter = super.adapt(object, type);
+ if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+ return adapter;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * This adds a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void addListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.addListener(notifyChangedListener);
+ }
+
+ /**
+ * This removes a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void removeListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.removeListener(notifyChangedListener);
+ }
+
+ /**
+ * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void fireNotifyChanged(Notification notification) {
+ changeNotifier.fireNotifyChanged(notification);
+
+ if (parentAdapterFactory != null) {
+ parentAdapterFactory.fireNotifyChanged(notification);
+ }
+ }
+
+ /**
+ * This disposes all of the item providers created by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void dispose() {
+ if (dublinCoreItemProvider != null) dublinCoreItemProvider.dispose();
+ if (identifiableFilterItemProvider != null) identifiableFilterItemProvider.dispose();
+ if (doubleValueListItemProvider != null) doubleValueListItemProvider.dispose();
+ if (doubleValueMatrixItemProvider != null) doubleValueMatrixItemProvider.dispose();
+ if (doubleValueItemProvider != null) doubleValueItemProvider.dispose();
+ if (stringValueListItemProvider != null) stringValueListItemProvider.dispose();
+ if (stringValueItemProvider != null) stringValueItemProvider.dispose();
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/CoreEditPlugin.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/CoreEditPlugin.java
new file mode 100644
index 000000000..f0454fffa
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/CoreEditPlugin.java
@@ -0,0 +1,97 @@
+package org.eclipse.stem.core.common.provider;
+/*******************************************************************************
+ * Copyright (c) 2006, 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the Core edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class CoreEditPlugin extends EMFPlugin {
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final CoreEditPlugin INSTANCE = new CoreEditPlugin();
+
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static Implementation plugin;
+
+ /**
+ * Create the instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public CoreEditPlugin() {
+ super
+ (new ResourceLocator [] {
+ // EcoreEditPlugin.INSTANCE,
+ });
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the singleton instance.
+ * @generated
+ */
+ @Override
+ public ResourceLocator getPluginResourceLocator() {
+ return plugin;
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the singleton instance.
+ * @generated
+ */
+ public static Implementation getPlugin() {
+ return plugin;
+ }
+
+ /**
+ * The actual implementation of the Eclipse <b>Plugin</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static class Implementation extends EclipsePlugin {
+ /**
+ * Creates an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Implementation() {
+ super();
+
+ // Remember the static instance.
+ //
+ plugin = this;
+ }
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/DoubleValueItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/DoubleValueItemProvider.java
new file mode 100644
index 000000000..bff7fe47a
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/DoubleValueItemProvider.java
@@ -0,0 +1,187 @@
+package org.eclipse.stem.core.common.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2010 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
+ *******************************************************************************/
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.common.CommonPackage;
+import org.eclipse.stem.core.common.DoubleValue;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.common.DoubleValue} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DoubleValueItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DoubleValueItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addIdentifierPropertyDescriptor(object);
+ addValuePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Identifier feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addIdentifierPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_DoubleValue_identifier_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_DoubleValue_identifier_feature", "_UI_DoubleValue_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommonPackage.Literals.DOUBLE_VALUE__IDENTIFIER,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Value feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addValuePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_DoubleValue_value_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_DoubleValue_value_feature", "_UI_DoubleValue_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommonPackage.Literals.DOUBLE_VALUE__VALUE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns DoubleValue.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/customobj16/DoubleValue.gif")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((DoubleValue)object).getValue()+" ("+((DoubleValue)object).getIdentifier()+")";
+ return label == null || label.length() == 0 ?
+ getString("_UI_DoubleValue_type") : //$NON-NLS-1$
+ label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(DoubleValue.class)) {
+ case CommonPackage.DOUBLE_VALUE__IDENTIFIER:
+ case CommonPackage.DOUBLE_VALUE__VALUE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return CoreEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/DoubleValueListItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/DoubleValueListItemProvider.java
new file mode 100644
index 000000000..f28226f51
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/DoubleValueListItemProvider.java
@@ -0,0 +1,206 @@
+package org.eclipse.stem.core.common.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2010 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.common.CommonFactory;
+import org.eclipse.stem.core.common.CommonPackage;
+import org.eclipse.stem.core.common.DoubleValueList;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.common.DoubleValueList} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DoubleValueListItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DoubleValueListItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addIdentifierPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Identifier feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addIdentifierPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_DoubleValueList_identifier_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_DoubleValueList_identifier_feature", "_UI_DoubleValueList_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommonPackage.Literals.DOUBLE_VALUE_LIST__IDENTIFIER,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(CommonPackage.Literals.DOUBLE_VALUE_LIST__VALUES);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns DoubleValueList.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/customobj16/List.gif")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ String label = null;
+ if(((DoubleValueList)object).eContainingFeature().getFeatureID() ==
+ CommonPackage.DOUBLE_VALUE_MATRIX__VALUE_LISTS) label = ((DoubleValueList)object).getIdentifier();
+ else
+ label = ((DoubleValueList)object).eContainingFeature().getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_DoubleValueList_type") : //$NON-NLS-1$
+ label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(DoubleValueList.class)) {
+ case CommonPackage.DOUBLE_VALUE_LIST__IDENTIFIER:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case CommonPackage.DOUBLE_VALUE_LIST__VALUES:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (CommonPackage.Literals.DOUBLE_VALUE_LIST__VALUES,
+ CommonFactory.eINSTANCE.createDoubleValue()));
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return CoreEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/DoubleValueMatrixItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/DoubleValueMatrixItemProvider.java
new file mode 100644
index 000000000..4f79ac45f
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/DoubleValueMatrixItemProvider.java
@@ -0,0 +1,174 @@
+package org.eclipse.stem.core.common.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2010 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.common.CommonFactory;
+import org.eclipse.stem.core.common.CommonPackage;
+import org.eclipse.stem.core.common.DoubleValueMatrix;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.common.DoubleValueMatrix} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DoubleValueMatrixItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DoubleValueMatrixItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(CommonPackage.Literals.DOUBLE_VALUE_MATRIX__VALUE_LISTS);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns DoubleValueMatrix.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/customobj16/Matrix.gif")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((DoubleValueMatrix)object).eContainingFeature().getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_DoubleValueMatrix_type") : //$NON-NLS-1$
+ label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(DoubleValueMatrix.class)) {
+ case CommonPackage.DOUBLE_VALUE_MATRIX__VALUE_LISTS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (CommonPackage.Literals.DOUBLE_VALUE_MATRIX__VALUE_LISTS,
+ CommonFactory.eINSTANCE.createDoubleValueList()));
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return CoreEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/DublinCoreItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/DublinCoreItemProvider.java
new file mode 100644
index 000000000..1510f8167
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/DublinCoreItemProvider.java
@@ -0,0 +1,664 @@
+package org.eclipse.stem.core.common.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2006, 2008 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.common.CommonPackage;
+import org.eclipse.stem.core.common.DublinCore;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.common.DublinCore} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DublinCoreItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DublinCoreItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addTitlePropertyDescriptor(object);
+ addIdentifierPropertyDescriptor(object);
+ addDescriptionPropertyDescriptor(object);
+ addCreatorPropertyDescriptor(object);
+ addDatePropertyDescriptor(object);
+ addFormatPropertyDescriptor(object);
+ addPublisherPropertyDescriptor(object);
+ addCoveragePropertyDescriptor(object);
+ addContributorPropertyDescriptor(object);
+ addRelationPropertyDescriptor(object);
+ addRightsPropertyDescriptor(object);
+ addSourcePropertyDescriptor(object);
+ addSubjectPropertyDescriptor(object);
+ addTypePropertyDescriptor(object);
+ addLanguagePropertyDescriptor(object);
+ addBibliographicCitationPropertyDescriptor(object);
+ addCreatedPropertyDescriptor(object);
+ addLicensePropertyDescriptor(object);
+ addRequiredPropertyDescriptor(object);
+ addSpatialPropertyDescriptor(object);
+ addValidPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Title feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addTitlePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_DublinCore_title_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_DublinCore_title_feature", "_UI_DublinCore_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommonPackage.Literals.DUBLIN_CORE__TITLE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Creator feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addCreatorPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_DublinCore_creator_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_DublinCore_creator_feature", "_UI_DublinCore_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommonPackage.Literals.DUBLIN_CORE__CREATOR,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Subject feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addSubjectPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_DublinCore_subject_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_DublinCore_subject_feature", "_UI_DublinCore_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommonPackage.Literals.DUBLIN_CORE__SUBJECT,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Description feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addDescriptionPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_DublinCore_description_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_DublinCore_description_feature", "_UI_DublinCore_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommonPackage.Literals.DUBLIN_CORE__DESCRIPTION,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Publisher feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addPublisherPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_DublinCore_publisher_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_DublinCore_publisher_feature", "_UI_DublinCore_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommonPackage.Literals.DUBLIN_CORE__PUBLISHER,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Contributor feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addContributorPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_DublinCore_contributor_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_DublinCore_contributor_feature", "_UI_DublinCore_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommonPackage.Literals.DUBLIN_CORE__CONTRIBUTOR,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Date feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addDatePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_DublinCore_date_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_DublinCore_date_feature", "_UI_DublinCore_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommonPackage.Literals.DUBLIN_CORE__DATE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Type feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addTypePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_DublinCore_type_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_DublinCore_type_feature", "_UI_DublinCore_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommonPackage.Literals.DUBLIN_CORE__TYPE,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Format feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addFormatPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_DublinCore_format_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_DublinCore_format_feature", "_UI_DublinCore_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommonPackage.Literals.DUBLIN_CORE__FORMAT,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Identifier feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addIdentifierPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_DublinCore_identifier_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_DublinCore_identifier_feature", "_UI_DublinCore_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommonPackage.Literals.DUBLIN_CORE__IDENTIFIER,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Source feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addSourcePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_DublinCore_source_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_DublinCore_source_feature", "_UI_DublinCore_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommonPackage.Literals.DUBLIN_CORE__SOURCE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Language feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLanguagePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_DublinCore_language_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_DublinCore_language_feature", "_UI_DublinCore_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommonPackage.Literals.DUBLIN_CORE__LANGUAGE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Relation feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addRelationPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_DublinCore_relation_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_DublinCore_relation_feature", "_UI_DublinCore_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommonPackage.Literals.DUBLIN_CORE__RELATION,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Coverage feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addCoveragePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_DublinCore_coverage_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_DublinCore_coverage_feature", "_UI_DublinCore_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommonPackage.Literals.DUBLIN_CORE__COVERAGE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Rights feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addRightsPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_DublinCore_rights_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_DublinCore_rights_feature", "_UI_DublinCore_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommonPackage.Literals.DUBLIN_CORE__RIGHTS,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Bibliographic Citation feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addBibliographicCitationPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_DublinCore_bibliographicCitation_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_DublinCore_bibliographicCitation_feature", "_UI_DublinCore_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommonPackage.Literals.DUBLIN_CORE__BIBLIOGRAPHIC_CITATION,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Created feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addCreatedPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_DublinCore_created_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_DublinCore_created_feature", "_UI_DublinCore_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommonPackage.Literals.DUBLIN_CORE__CREATED,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the License feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLicensePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_DublinCore_license_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_DublinCore_license_feature", "_UI_DublinCore_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommonPackage.Literals.DUBLIN_CORE__LICENSE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Required feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addRequiredPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_DublinCore_required_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_DublinCore_required_feature", "_UI_DublinCore_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommonPackage.Literals.DUBLIN_CORE__REQUIRED,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Spatial feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addSpatialPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_DublinCore_spatial_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_DublinCore_spatial_feature", "_UI_DublinCore_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommonPackage.Literals.DUBLIN_CORE__SPATIAL,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Valid feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected void addValidPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_DublinCore_valid_feature"), //$NON-NLS-1$
+ //getString("_UI_PropertyDescriptor_description", "_UI_DublinCore_valid_feature", "_UI_DublinCore_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ getString("_UI_DC_Valid_Desc"), //$NON-NLS-1$
+ CommonPackage.Literals.DUBLIN_CORE__VALID,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ } // addValidPropertyDescriptor
+
+ /**
+ * This adds a property descriptor for the Valid feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addValidPropertyDescriptorGen(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_DublinCore_valid_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_DublinCore_valid_feature", "_UI_DublinCore_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommonPackage.Literals.DUBLIN_CORE__VALID,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns DublinCore.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/customobj16/DublinCore"));
+ } // getImage
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((DublinCore)object).getTitle();
+ return label == null || label.length() == 0 ?
+ getString("_UI_DublinCore_type") : //$NON-NLS-1$
+ getString("_UI_DublinCore_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(DublinCore.class)) {
+ case CommonPackage.DUBLIN_CORE__TITLE:
+ case CommonPackage.DUBLIN_CORE__IDENTIFIER:
+ case CommonPackage.DUBLIN_CORE__DESCRIPTION:
+ case CommonPackage.DUBLIN_CORE__CREATOR:
+ case CommonPackage.DUBLIN_CORE__DATE:
+ case CommonPackage.DUBLIN_CORE__FORMAT:
+ case CommonPackage.DUBLIN_CORE__PUBLISHER:
+ case CommonPackage.DUBLIN_CORE__COVERAGE:
+ case CommonPackage.DUBLIN_CORE__CONTRIBUTOR:
+ case CommonPackage.DUBLIN_CORE__RELATION:
+ case CommonPackage.DUBLIN_CORE__RIGHTS:
+ case CommonPackage.DUBLIN_CORE__SOURCE:
+ case CommonPackage.DUBLIN_CORE__SUBJECT:
+ case CommonPackage.DUBLIN_CORE__TYPE:
+ case CommonPackage.DUBLIN_CORE__LANGUAGE:
+ case CommonPackage.DUBLIN_CORE__BIBLIOGRAPHIC_CITATION:
+ case CommonPackage.DUBLIN_CORE__CREATED:
+ case CommonPackage.DUBLIN_CORE__LICENSE:
+ case CommonPackage.DUBLIN_CORE__REQUIRED:
+ case CommonPackage.DUBLIN_CORE__SPATIAL:
+ case CommonPackage.DUBLIN_CORE__VALID:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return CoreEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/IdentifiableFilterItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/IdentifiableFilterItemProvider.java
new file mode 100644
index 000000000..f3a50a1d0
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/IdentifiableFilterItemProvider.java
@@ -0,0 +1,125 @@
+package org.eclipse.stem.core.common.provider;
+/*******************************************************************************
+ * Copyright (c) 2010 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
+ *******************************************************************************/
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.common.IdentifiableFilter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IdentifiableFilterItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IdentifiableFilterItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns IdentifiableFilter.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/IdentifiableFilter")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_IdentifiableFilter_type"); //$NON-NLS-1$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return CoreEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/IdentifiableItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/IdentifiableItemProvider.java
new file mode 100644
index 000000000..5464e44f4
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/IdentifiableItemProvider.java
@@ -0,0 +1,267 @@
+package org.eclipse.stem.core.common.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2006, 2008 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptorDecorator;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.common.CommonPackage;
+import org.eclipse.stem.core.common.DublinCore;
+import org.eclipse.stem.core.common.Identifiable;
+
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.common.Identifiable} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IdentifiableItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IdentifiableItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+ //getPropertyDescriptorsGen(object);
+ addDublinCorePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ } // getPropertyDescriptors
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+// @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptorsGen(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addURIPropertyDescriptor(object);
+ addTypeURIPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * This adds the Dublin Core of the Identifiable as a property
+ * category of all Identifiables.
+ * <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ protected void addDublinCorePropertyDescriptor(Object object) {
+ final DublinCore dc = ((Identifiable) object).getDublinCore();
+
+ final AdapterFactory factory = ((ComposeableAdapterFactory) adapterFactory)
+ .getRootAdapterFactory();
+
+ final DublinCoreItemProvider dcItemProvider = (DublinCoreItemProvider) (factory
+ .adapt(dc, IItemPropertySource.class));
+
+ final List<IItemPropertyDescriptor> dcDescriptors = dcItemProvider
+ .getPropertyDescriptors(dc);
+
+ for (Iterator<IItemPropertyDescriptor> iter = dcDescriptors.iterator(); iter.hasNext();) {
+ final ItemPropertyDescriptor dcDescriptor = (ItemPropertyDescriptor) iter
+ .next();
+ itemPropertyDescriptors.add(new ItemPropertyDescriptorDecorator(
+ dc, dcDescriptor) {
+ @Override
+ public String getCategory(Object thisObject) {
+ return getString("_UI_Identifiable_dublinCore_feature");
+ }
+ });
+ } // for each idDescriptor
+ } // addDublinCorePropertyDescriptorcriptor
+
+ /**
+ * This adds a property descriptor for the URI feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addURIPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Identifiable_uRI_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Identifiable_uRI_feature", "_UI_Identifiable_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommonPackage.Literals.IDENTIFIABLE__URI,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Type URI feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addTypeURIPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Identifiable_typeURI_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Identifiable_typeURI_feature", "_UI_Identifiable_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommonPackage.Literals.IDENTIFIABLE__TYPE_URI,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns Identifiable.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Identifiable")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+
+ // Use the dublin core title if it's available, otherwise use
+ // the URI
+ final Identifiable identifiable = (Identifiable)object;
+
+ final String title = identifiable.getDublinCore().getTitle();
+ // Was a title specified?
+ if (title != null && !title.equals("")) {
+ // Yes
+ return identifiable.getURI().lastSegment()+" "+title;
+ }
+ else if(identifiable.getURI() != null){
+ return identifiable.getURI().lastSegment();
+ } else return identifiable.toString();
+
+ } // getText
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+// @Override
+ public String getTextGen(Object object) {
+ URI labelValue = ((Identifiable)object).getURI();
+ String label = labelValue == null ? null : labelValue.toString();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Identifiable_type") : //$NON-NLS-1$
+ getString("_UI_Identifiable_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(Identifiable.class)) {
+ case CommonPackage.IDENTIFIABLE__URI:
+ case CommonPackage.IDENTIFIABLE__TYPE_URI:
+ case CommonPackage.IDENTIFIABLE__DUBLIN_CORE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return CoreEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/StringValueItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/StringValueItemProvider.java
new file mode 100644
index 000000000..28e0427b5
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/StringValueItemProvider.java
@@ -0,0 +1,162 @@
+package org.eclipse.stem.core.common.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2010 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.common.CommonPackage;
+import org.eclipse.stem.core.common.StringValue;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.common.StringValue} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StringValueItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StringValueItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addValuePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Value feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addValuePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_StringValue_value_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_StringValue_value_feature", "_UI_StringValue_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ CommonPackage.Literals.STRING_VALUE__VALUE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns StringValue.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/StringValue")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((StringValue)object).getValue();
+ return label == null || label.length() == 0 ?
+ getString("_UI_StringValue_type") : //$NON-NLS-1$
+ label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(StringValue.class)) {
+ case CommonPackage.STRING_VALUE__VALUE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return CoreEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/StringValueListItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/StringValueListItemProvider.java
new file mode 100644
index 000000000..10e724f3e
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/provider/StringValueListItemProvider.java
@@ -0,0 +1,174 @@
+package org.eclipse.stem.core.common.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2010 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.common.CommonFactory;
+import org.eclipse.stem.core.common.CommonPackage;
+import org.eclipse.stem.core.common.StringValueList;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.common.StringValueList} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StringValueListItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StringValueListItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(CommonPackage.Literals.STRING_VALUE_LIST__VALUES);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns StringValueList.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/customobj16/List.gif")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((StringValueList)object).eContainingFeature().getName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_StringValueList_type") : //$NON-NLS-1$
+ label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(StringValueList.class)) {
+ case CommonPackage.STRING_VALUE_LIST__VALUES:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (CommonPackage.Literals.STRING_VALUE_LIST__VALUES,
+ CommonFactory.eINSTANCE.createStringValue()));
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return CoreEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/util/CommonAdapterFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/util/CommonAdapterFactory.java
new file mode 100644
index 000000000..bbe6e6027
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/util/CommonAdapterFactory.java
@@ -0,0 +1,316 @@
+package org.eclipse.stem.core.common.util;
+
+/*******************************************************************************
+ * Copyright (c) 2006, 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.core.common.CommonPackage;
+import org.eclipse.stem.core.common.DoubleValue;
+import org.eclipse.stem.core.common.DoubleValueList;
+import org.eclipse.stem.core.common.DoubleValueMatrix;
+import org.eclipse.stem.core.common.DublinCore;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.IdentifiableFilter;
+import org.eclipse.stem.core.common.SanityChecker;
+import org.eclipse.stem.core.common.StringValue;
+import org.eclipse.stem.core.common.StringValueList;
+import org.eclipse.stem.core.modifier.Modifiable;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.common.CommonPackage
+ * @generated
+ */
+public class CommonAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static CommonPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CommonAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = CommonPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CommonSwitch<Adapter> modelSwitch =
+ new CommonSwitch<Adapter>() {
+ @Override
+ public Adapter caseDublinCore(DublinCore object) {
+ return createDublinCoreAdapter();
+ }
+ @Override
+ public Adapter caseIdentifiable(Identifiable object) {
+ return createIdentifiableAdapter();
+ }
+ @Override
+ public <T> Adapter caseComparable(Comparable<T> object) {
+ return createComparableAdapter();
+ }
+ @Override
+ public Adapter caseIdentifiableFilter(IdentifiableFilter object) {
+ return createIdentifiableFilterAdapter();
+ }
+ @Override
+ public Adapter caseDoubleValueList(DoubleValueList object) {
+ return createDoubleValueListAdapter();
+ }
+ @Override
+ public Adapter caseDoubleValueMatrix(DoubleValueMatrix object) {
+ return createDoubleValueMatrixAdapter();
+ }
+ @Override
+ public Adapter caseDoubleValue(DoubleValue object) {
+ return createDoubleValueAdapter();
+ }
+ @Override
+ public Adapter caseStringValueList(StringValueList object) {
+ return createStringValueListAdapter();
+ }
+ @Override
+ public Adapter caseStringValue(StringValue object) {
+ return createStringValueAdapter();
+ }
+ @Override
+ public Adapter caseSanityChecker(SanityChecker object) {
+ return createSanityCheckerAdapter();
+ }
+ @Override
+ public Adapter caseModifiable(Modifiable object) {
+ return createModifiableAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.DublinCore <em>Dublin Core</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.common.DublinCore
+ * @generated
+ */
+ public Adapter createDublinCoreAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.Identifiable <em>Identifiable</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.common.Identifiable
+ * @generated
+ */
+ public Adapter createIdentifiableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link java.lang.Comparable <em>Comparable</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see java.lang.Comparable
+ * @generated
+ */
+ public Adapter createComparableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.IdentifiableFilter <em>Identifiable Filter</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.common.IdentifiableFilter
+ * @generated
+ */
+ public Adapter createIdentifiableFilterAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.DoubleValueList <em>Double Value List</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.common.DoubleValueList
+ * @generated
+ */
+ public Adapter createDoubleValueListAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.DoubleValueMatrix <em>Double Value Matrix</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.common.DoubleValueMatrix
+ * @generated
+ */
+ public Adapter createDoubleValueMatrixAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.DoubleValue <em>Double Value</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.common.DoubleValue
+ * @generated
+ */
+ public Adapter createDoubleValueAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.StringValueList <em>String Value List</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.common.StringValueList
+ * @generated
+ */
+ public Adapter createStringValueListAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.StringValue <em>String Value</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.common.StringValue
+ * @generated
+ */
+ public Adapter createStringValueAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.SanityChecker <em>Sanity Checker</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.common.SanityChecker
+ * @generated
+ */
+ public Adapter createSanityCheckerAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.modifier.Modifiable <em>Modifiable</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.modifier.Modifiable
+ * @generated
+ */
+ public Adapter createModifiableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} //CommonAdapterFactory
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/util/CommonSwitch.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/util/CommonSwitch.java
new file mode 100644
index 000000000..cc578480c
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/common/util/CommonSwitch.java
@@ -0,0 +1,346 @@
+package org.eclipse.stem.core.common.util;
+
+/*******************************************************************************
+ * Copyright (c) 2006, 2008 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
+ *******************************************************************************/
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.core.common.CommonPackage;
+import org.eclipse.stem.core.common.DoubleValue;
+import org.eclipse.stem.core.common.DoubleValueList;
+import org.eclipse.stem.core.common.DoubleValueMatrix;
+import org.eclipse.stem.core.common.DublinCore;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.IdentifiableFilter;
+import org.eclipse.stem.core.common.SanityChecker;
+import org.eclipse.stem.core.common.StringValue;
+import org.eclipse.stem.core.common.StringValueList;
+import org.eclipse.stem.core.modifier.Modifiable;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.common.CommonPackage
+ * @generated
+ */
+public class CommonSwitch<T1> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static CommonPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CommonSwitch() {
+ if (modelPackage == null) {
+ modelPackage = CommonPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ public T1 doSwitch(EObject theEObject) {
+ return doSwitch(theEObject.eClass(), theEObject);
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T1 doSwitch(EClass theEClass, EObject theEObject) {
+ if (theEClass.eContainer() == modelPackage) {
+ return doSwitch(theEClass.getClassifierID(), theEObject);
+ }
+ else {
+ List<EClass> eSuperTypes = theEClass.getESuperTypes();
+ return
+ eSuperTypes.isEmpty() ?
+ defaultCase(theEObject) :
+ doSwitch(eSuperTypes.get(0), theEObject);
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T1 doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case CommonPackage.DUBLIN_CORE: {
+ DublinCore dublinCore = (DublinCore)theEObject;
+ T1 result = caseDublinCore(dublinCore);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CommonPackage.IDENTIFIABLE: {
+ Identifiable identifiable = (Identifiable)theEObject;
+ T1 result = caseIdentifiable(identifiable);
+ if (result == null) result = caseComparable(identifiable);
+ if (result == null) result = caseSanityChecker(identifiable);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CommonPackage.IDENTIFIABLE_FILTER: {
+ IdentifiableFilter identifiableFilter = (IdentifiableFilter)theEObject;
+ T1 result = caseIdentifiableFilter(identifiableFilter);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CommonPackage.DOUBLE_VALUE_LIST: {
+ DoubleValueList doubleValueList = (DoubleValueList)theEObject;
+ T1 result = caseDoubleValueList(doubleValueList);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CommonPackage.DOUBLE_VALUE_MATRIX: {
+ DoubleValueMatrix doubleValueMatrix = (DoubleValueMatrix)theEObject;
+ T1 result = caseDoubleValueMatrix(doubleValueMatrix);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CommonPackage.DOUBLE_VALUE: {
+ DoubleValue doubleValue = (DoubleValue)theEObject;
+ T1 result = caseDoubleValue(doubleValue);
+ if (result == null) result = caseModifiable(doubleValue);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CommonPackage.STRING_VALUE_LIST: {
+ StringValueList stringValueList = (StringValueList)theEObject;
+ T1 result = caseStringValueList(stringValueList);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CommonPackage.STRING_VALUE: {
+ StringValue stringValue = (StringValue)theEObject;
+ T1 result = caseStringValue(stringValue);
+ if (result == null) result = caseModifiable(stringValue);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CommonPackage.SANITY_CHECKER: {
+ SanityChecker sanityChecker = (SanityChecker)theEObject;
+ T1 result = caseSanityChecker(sanityChecker);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Dublin Core</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Dublin Core</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseDublinCore(DublinCore object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Identifiable</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Identifiable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseIdentifiable(Identifiable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Comparable</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Comparable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public <T> T1 caseComparable(Comparable<T> object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Identifiable Filter</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Identifiable Filter</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseIdentifiableFilter(IdentifiableFilter object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Double Value List</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Double Value List</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseDoubleValueList(DoubleValueList object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Double Value Matrix</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Double Value Matrix</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseDoubleValueMatrix(DoubleValueMatrix object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Double Value</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Double Value</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseDoubleValue(DoubleValue object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>String Value List</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>String Value List</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseStringValueList(StringValueList object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>String Value</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>String Value</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseStringValue(StringValue object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Sanity Checker</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Sanity Checker</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseSanityChecker(SanityChecker object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Modifiable</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Modifiable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseModifiable(Modifiable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ public T1 defaultCase(EObject object) {
+ return null;
+ }
+
+} //CommonSwitch
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/Experiment.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/Experiment.java
new file mode 100644
index 000000000..586c50694
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/Experiment.java
@@ -0,0 +1,99 @@
+// Experiment.java
+package org.eclipse.stem.core.experiment;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.List;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.modifier.Modifier;
+import org.eclipse.stem.core.scenario.Scenario;
+
+/**
+ * An {@link Experiment} is a specification of how to modify a "base"
+ * {@link Scenario} to create one or more "derived" {@link Scenario}s. The
+ * purpose of this is to allow for the definition of a related spectrum of
+ * {@link Scenario}s that have slightly (or dramatically) different
+ * configurations. The intent is to enable the exploration of the effect
+ * different configurations have on the outcome of the {@link Scenario}.
+ * <p>
+ * An {@link Experiment} consists of a hierarchical organization of
+ * {@link Modifier}s and other {@link Experiment}s.
+ *
+ * @model
+ */
+public interface Experiment extends Identifiable {
+
+ String URI_TYPE_EXPERIMENT_SEGMENT = "experiment";
+
+ /**
+ * @return the {@link Scenario} that will be modified during the experiment.
+ * @model containment="false"
+ */
+ Scenario getScenario();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.experiment.Experiment#getScenario <em>Scenario</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Scenario</em>' reference.
+ * @see #getScenario()
+ * @generated
+ */
+ void setScenario(Scenario value);
+
+ /**
+ * @return the {@link Modifier}s that specify the changes to the
+ * {@link Scenario}.
+ * @model containment="false"
+ */
+ EList<Modifier> getModifiers();
+
+ /**
+ * @return the {@link Experiment}'s {@link Scenario} modified by the
+ * {@link Experiment}'s collection of {@link Modifier}s
+ * @see #isComplete()
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ Scenario updateScenario();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ Scenario initScenario();
+
+ /**
+ * @return a {@link List} of {@link String}s that summarize the
+ * modifications made during the last call to
+ * {@link #getNextScenario()}.
+ * model volatile="true" transient="true" changeable="false"
+ */
+ List<String> getModificationSummary();
+
+ /**
+ * @return a {@link List} of {@link String}s that summarize the values of
+ * all of the parameters.
+ * model volatile="true" transient="true" changeable="false"
+ */
+ List<String> getParameterSummary();
+
+ /**
+ * @return <code>true</code> if the {@link Experiment} is complete,
+ * <code>false</code>, otherwise.
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ boolean isComplete();
+} // Experiment
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/ExperimentFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/ExperimentFactory.java
new file mode 100644
index 000000000..f39cf3a0b
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/ExperimentFactory.java
@@ -0,0 +1,51 @@
+package org.eclipse.stem.core.experiment;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.experiment.ExperimentPackage
+ * @generated
+ */
+public interface ExperimentFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ ExperimentFactory eINSTANCE = org.eclipse.stem.core.experiment.impl.ExperimentFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Experiment</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Experiment</em>'.
+ * @generated
+ */
+ Experiment createExperiment();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ ExperimentPackage getExperimentPackage();
+
+} //ExperimentFactory
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/ExperimentPackage.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/ExperimentPackage.java
new file mode 100644
index 000000000..57d296694
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/ExperimentPackage.java
@@ -0,0 +1,242 @@
+package org.eclipse.stem.core.experiment;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.stem.core.common.CommonPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.experiment.ExperimentFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface ExperimentPackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "experiment"; //$NON-NLS-1$
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http:///org/eclipse/stem/core/experiment.ecore"; //$NON-NLS-1$
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "org.eclipse.stem.core.experiment"; //$NON-NLS-1$
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ ExperimentPackage eINSTANCE = org.eclipse.stem.core.experiment.impl.ExperimentPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.experiment.impl.ExperimentImpl <em>Experiment</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.experiment.impl.ExperimentImpl
+ * @see org.eclipse.stem.core.experiment.impl.ExperimentPackageImpl#getExperiment()
+ * @generated
+ */
+ int EXPERIMENT = 0;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXPERIMENT__URI = CommonPackage.IDENTIFIABLE__URI;
+
+ /**
+ * The feature id for the '<em><b>Type URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXPERIMENT__TYPE_URI = CommonPackage.IDENTIFIABLE__TYPE_URI;
+
+ /**
+ * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXPERIMENT__DUBLIN_CORE = CommonPackage.IDENTIFIABLE__DUBLIN_CORE;
+
+ /**
+ * The feature id for the '<em><b>Modifiers</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXPERIMENT__MODIFIERS = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXPERIMENT__COMPLETE = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Scenario</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXPERIMENT__SCENARIO = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Experiment</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXPERIMENT_FEATURE_COUNT = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 3;
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.experiment.Experiment <em>Experiment</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Experiment</em>'.
+ * @see org.eclipse.stem.core.experiment.Experiment
+ * @generated
+ */
+ EClass getExperiment();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.stem.core.experiment.Experiment#getModifiers <em>Modifiers</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Modifiers</em>'.
+ * @see org.eclipse.stem.core.experiment.Experiment#getModifiers()
+ * @see #getExperiment()
+ * @generated
+ */
+ EReference getExperiment_Modifiers();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.experiment.Experiment#isComplete <em>Complete</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Complete</em>'.
+ * @see org.eclipse.stem.core.experiment.Experiment#isComplete()
+ * @see #getExperiment()
+ * @generated
+ */
+ EAttribute getExperiment_Complete();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.core.experiment.Experiment#getScenario <em>Scenario</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Scenario</em>'.
+ * @see org.eclipse.stem.core.experiment.Experiment#getScenario()
+ * @see #getExperiment()
+ * @generated
+ */
+ EReference getExperiment_Scenario();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ ExperimentFactory getExperimentFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.experiment.impl.ExperimentImpl <em>Experiment</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.experiment.impl.ExperimentImpl
+ * @see org.eclipse.stem.core.experiment.impl.ExperimentPackageImpl#getExperiment()
+ * @generated
+ */
+ EClass EXPERIMENT = eINSTANCE.getExperiment();
+
+ /**
+ * The meta object literal for the '<em><b>Modifiers</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference EXPERIMENT__MODIFIERS = eINSTANCE.getExperiment_Modifiers();
+
+ /**
+ * The meta object literal for the '<em><b>Complete</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute EXPERIMENT__COMPLETE = eINSTANCE.getExperiment_Complete();
+
+ /**
+ * The meta object literal for the '<em><b>Scenario</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference EXPERIMENT__SCENARIO = eINSTANCE.getExperiment_Scenario();
+
+ }
+
+} //ExperimentPackage
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/impl/ExperimentFactoryImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/impl/ExperimentFactoryImpl.java
new file mode 100644
index 000000000..ef102c8ef
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/impl/ExperimentFactoryImpl.java
@@ -0,0 +1,119 @@
+package org.eclipse.stem.core.experiment.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.stem.core.experiment.Experiment;
+import org.eclipse.stem.core.experiment.ExperimentFactory;
+import org.eclipse.stem.core.experiment.ExperimentPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model <b>Factory</b>. <!--
+ * end-user-doc -->
+ * @generated
+ */
+public class ExperimentFactoryImpl extends EFactoryImpl implements
+ ExperimentFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ * @generated
+ */
+ public static ExperimentFactory init() {
+ try {
+ ExperimentFactory theExperimentFactory = (ExperimentFactory)EPackage.Registry.INSTANCE.getEFactory("http:///org/eclipse/stem/core/experiment.ecore"); //$NON-NLS-1$
+ if (theExperimentFactory != null) {
+ return theExperimentFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new ExperimentFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ * @generated
+ */
+ public ExperimentFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case ExperimentPackage.EXPERIMENT: return createExperiment();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public Experiment createExperiment() {
+ ExperimentImpl experiment = new ExperimentImpl();
+ return experiment;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public URI createURIFromString(EDataType eDataType, String initialValue) {
+ return URI.createURI(initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public String convertURIToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public ExperimentPackage getExperimentPackage() {
+ return (ExperimentPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static ExperimentPackage getPackage() {
+ return ExperimentPackage.eINSTANCE;
+ }
+
+} // ExperimentFactoryImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/impl/ExperimentImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/impl/ExperimentImpl.java
new file mode 100644
index 000000000..c8d306d37
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/impl/ExperimentImpl.java
@@ -0,0 +1,331 @@
+package org.eclipse.stem.core.experiment.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.stem.core.STEMURI;
+import org.eclipse.stem.core.common.impl.IdentifiableImpl;
+import org.eclipse.stem.core.experiment.Experiment;
+import org.eclipse.stem.core.experiment.ExperimentPackage;
+import org.eclipse.stem.core.modifier.Modifier;
+import org.eclipse.stem.core.scenario.Scenario;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Experiment</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.experiment.impl.ExperimentImpl#getModifiers <em>Modifiers</em>}</li>
+ * <li>{@link org.eclipse.stem.core.experiment.impl.ExperimentImpl#isComplete <em>Complete</em>}</li>
+ * <li>{@link org.eclipse.stem.core.experiment.impl.ExperimentImpl#getScenario <em>Scenario</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ExperimentImpl extends IdentifiableImpl implements Experiment {
+ /**
+ * The cached value of the '{@link #getModifiers() <em>Modifiers</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getModifiers()
+ * @generated
+ * @ordered
+ */
+ protected EList<Modifier> modifiers;
+
+ /**
+ * The default value of the '{@link #isComplete() <em>Complete</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isComplete()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean COMPLETE_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #getScenario() <em>Scenario</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getScenario()
+ * @generated
+ * @ordered
+ */
+ protected Scenario scenario;
+
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected ExperimentImpl() {
+ super();
+ setURI(STEMURI.createURI(URI_TYPE_EXPERIMENT_SEGMENT + "/"
+ + STEMURI.generateUniquePart()));
+ setTypeURI(STEMURI.EXPERIMENT_TYPE_URI);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ExperimentPackage.Literals.EXPERIMENT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Modifier> getModifiers() {
+ if (modifiers == null) {
+ modifiers = new EObjectResolvingEList<Modifier>(Modifier.class, this, ExperimentPackage.EXPERIMENT__MODIFIERS);
+ }
+ return modifiers;
+ }
+
+ /**
+ * @see {@link Experiment#getModificationSummary()}
+ */
+ public List<String> getModificationSummary() {
+ final List<String> retValue = new ArrayList<String>();
+ for (Modifier modifier : getModifiers()) {
+ retValue.addAll(modifier.getModificationSummary());
+ } // for each Modifier
+ return retValue;
+ } // getModificationSummary
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean isComplete() {
+ boolean retValue = true;
+ for (Modifier modifier : getModifiers()) {
+ // Is this modifier complete?
+ if (!modifier.isComplete()) {
+ // No
+ retValue = false;
+ break;
+ } // if
+ } // for each Modifier
+ return retValue;
+ } // isComplete
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Scenario getScenario() {
+ if (scenario != null && scenario.eIsProxy()) {
+ InternalEObject oldScenario = (InternalEObject)scenario;
+ scenario = (Scenario)eResolveProxy(oldScenario);
+ if (scenario != oldScenario) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, ExperimentPackage.EXPERIMENT__SCENARIO, oldScenario, scenario));
+ }
+ }
+ return scenario;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Scenario basicGetScenario() {
+ return scenario;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setScenario(Scenario newScenario) {
+ Scenario oldScenario = scenario;
+ scenario = newScenario;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ExperimentPackage.EXPERIMENT__SCENARIO, oldScenario, scenario));
+ }
+
+ /**
+ * @see {@link Experiment#getParameterSummary()}
+ */
+ public List<String> getParameterSummary() {
+ // TODO implement ExperimentImpl.getParameterSummary
+ return getModificationSummary();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Scenario updateScenario() {
+ // Get the first modifier
+ Modifier modifier = getModifiers().get(0);
+ if(!modifier.isComplete()) {
+ // If it's not complete, simply update the scenario
+ modifier.updateScenario(getScenario());
+ } else {
+ // The first modifier is complete, get the next incomplete
+ // modifier on the list and reset the "less significant" modifiers.
+ // Think of it as binary counting switching bits on and off, but
+ // the number of states is not 2 but depends on how many states
+ // the modifier has. We assume at least one modifier is not complete
+ // here, or this method wouldn't have been called.
+ for(Modifier m : getModifiers()) {
+ if(m.isComplete()) {
+ m.reset();
+ m.updateScenario(getScenario());
+ } else {
+ m.updateScenario(getScenario());
+ break;
+ }
+ }
+
+ }
+ Scenario s = getScenario();
+ // We need to re-initialize since decorators might have been updated
+ s.initialize();
+ s.setProgress(0.0);
+ return s;
+ } // updateScenario
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Scenario initScenario() {
+ // Skip the first modifier since it will update the
+ // scenario in the first call to getNextSimulation()
+ for(int i=1;i<getModifiers().size();++i)
+ getModifiers().get(i).updateScenario(getScenario());
+ return getScenario();
+ }
+
+ /**
+ * @see org.eclipse.stem.core.common.impl.IdentifiableImpl#sane()
+ */
+ @Override
+ public boolean sane() {
+ boolean retValue = super.sane();
+ assert retValue;
+
+ retValue = getScenario() == null || getScenario().sane();
+ assert retValue;
+
+ for (Modifier modifier : getModifiers()) {
+ retValue = modifier.sane();
+ assert retValue;
+ } // for each Modifier
+
+ return retValue;
+ } // sane
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ExperimentPackage.EXPERIMENT__MODIFIERS:
+ return getModifiers();
+ case ExperimentPackage.EXPERIMENT__COMPLETE:
+ return isComplete();
+ case ExperimentPackage.EXPERIMENT__SCENARIO:
+ if (resolve) return getScenario();
+ return basicGetScenario();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ExperimentPackage.EXPERIMENT__MODIFIERS:
+ getModifiers().clear();
+ getModifiers().addAll((Collection<? extends Modifier>)newValue);
+ return;
+ case ExperimentPackage.EXPERIMENT__SCENARIO:
+ setScenario((Scenario)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ExperimentPackage.EXPERIMENT__MODIFIERS:
+ getModifiers().clear();
+ return;
+ case ExperimentPackage.EXPERIMENT__SCENARIO:
+ setScenario((Scenario)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ExperimentPackage.EXPERIMENT__MODIFIERS:
+ return modifiers != null && !modifiers.isEmpty();
+ case ExperimentPackage.EXPERIMENT__COMPLETE:
+ return isComplete() != COMPLETE_EDEFAULT;
+ case ExperimentPackage.EXPERIMENT__SCENARIO:
+ return scenario != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+
+} //ExperimentImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/impl/ExperimentPackageImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/impl/ExperimentPackageImpl.java
new file mode 100644
index 000000000..31c8da62c
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/impl/ExperimentPackageImpl.java
@@ -0,0 +1,273 @@
+package org.eclipse.stem.core.experiment.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.stem.core.common.CommonPackage;
+import org.eclipse.stem.core.common.impl.CommonPackageImpl;
+import org.eclipse.stem.core.experiment.Experiment;
+import org.eclipse.stem.core.experiment.ExperimentFactory;
+import org.eclipse.stem.core.experiment.ExperimentPackage;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.impl.GraphPackageImpl;
+import org.eclipse.stem.core.logger.LoggerPackage;
+import org.eclipse.stem.core.logger.impl.LoggerPackageImpl;
+import org.eclipse.stem.core.model.ModelPackage;
+import org.eclipse.stem.core.model.impl.ModelPackageImpl;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+import org.eclipse.stem.core.modifier.impl.ModifierPackageImpl;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+import org.eclipse.stem.core.predicate.impl.PredicatePackageImpl;
+import org.eclipse.stem.core.scenario.ScenarioPackage;
+import org.eclipse.stem.core.scenario.impl.ScenarioPackageImpl;
+import org.eclipse.stem.core.sequencer.SequencerPackage;
+import org.eclipse.stem.core.sequencer.impl.SequencerPackageImpl;
+import org.eclipse.stem.core.solver.SolverPackage;
+import org.eclipse.stem.core.solver.impl.SolverPackageImpl;
+import org.eclipse.stem.core.trigger.TriggerPackage;
+import org.eclipse.stem.core.trigger.impl.TriggerPackageImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ExperimentPackageImpl extends EPackageImpl implements ExperimentPackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass experimentEClass = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.eclipse.stem.core.experiment.ExperimentPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private ExperimentPackageImpl() {
+ super(eNS_URI, ExperimentFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link ExperimentPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static ExperimentPackage init() {
+ if (isInited) return (ExperimentPackage)EPackage.Registry.INSTANCE.getEPackage(ExperimentPackage.eNS_URI);
+
+ // Obtain or create and register package
+ ExperimentPackageImpl theExperimentPackage = (ExperimentPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof ExperimentPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new ExperimentPackageImpl());
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ EcorePackage.eINSTANCE.eClass();
+
+ // Obtain or create and register interdependencies
+ CommonPackageImpl theCommonPackage = (CommonPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(CommonPackage.eNS_URI) instanceof CommonPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(CommonPackage.eNS_URI) : CommonPackage.eINSTANCE);
+ GraphPackageImpl theGraphPackage = (GraphPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(GraphPackage.eNS_URI) instanceof GraphPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(GraphPackage.eNS_URI) : GraphPackage.eINSTANCE);
+ ModelPackageImpl theModelPackage = (ModelPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ModelPackage.eNS_URI) instanceof ModelPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ModelPackage.eNS_URI) : ModelPackage.eINSTANCE);
+ ModifierPackageImpl theModifierPackage = (ModifierPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ModifierPackage.eNS_URI) instanceof ModifierPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ModifierPackage.eNS_URI) : ModifierPackage.eINSTANCE);
+ PredicatePackageImpl thePredicatePackage = (PredicatePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(PredicatePackage.eNS_URI) instanceof PredicatePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(PredicatePackage.eNS_URI) : PredicatePackage.eINSTANCE);
+ ScenarioPackageImpl theScenarioPackage = (ScenarioPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ScenarioPackage.eNS_URI) instanceof ScenarioPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ScenarioPackage.eNS_URI) : ScenarioPackage.eINSTANCE);
+ SequencerPackageImpl theSequencerPackage = (SequencerPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SequencerPackage.eNS_URI) instanceof SequencerPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SequencerPackage.eNS_URI) : SequencerPackage.eINSTANCE);
+ TriggerPackageImpl theTriggerPackage = (TriggerPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(TriggerPackage.eNS_URI) instanceof TriggerPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(TriggerPackage.eNS_URI) : TriggerPackage.eINSTANCE);
+ SolverPackageImpl theSolverPackage = (SolverPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SolverPackage.eNS_URI) instanceof SolverPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SolverPackage.eNS_URI) : SolverPackage.eINSTANCE);
+ LoggerPackageImpl theLoggerPackage = (LoggerPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(LoggerPackage.eNS_URI) instanceof LoggerPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(LoggerPackage.eNS_URI) : LoggerPackage.eINSTANCE);
+
+ // Create package meta-data objects
+ theExperimentPackage.createPackageContents();
+ theCommonPackage.createPackageContents();
+ theGraphPackage.createPackageContents();
+ theModelPackage.createPackageContents();
+ theModifierPackage.createPackageContents();
+ thePredicatePackage.createPackageContents();
+ theScenarioPackage.createPackageContents();
+ theSequencerPackage.createPackageContents();
+ theTriggerPackage.createPackageContents();
+ theSolverPackage.createPackageContents();
+ theLoggerPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theExperimentPackage.initializePackageContents();
+ theCommonPackage.initializePackageContents();
+ theGraphPackage.initializePackageContents();
+ theModelPackage.initializePackageContents();
+ theModifierPackage.initializePackageContents();
+ thePredicatePackage.initializePackageContents();
+ theScenarioPackage.initializePackageContents();
+ theSequencerPackage.initializePackageContents();
+ theTriggerPackage.initializePackageContents();
+ theSolverPackage.initializePackageContents();
+ theLoggerPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theExperimentPackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(ExperimentPackage.eNS_URI, theExperimentPackage);
+ return theExperimentPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getExperiment() {
+ return experimentEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getExperiment_Modifiers() {
+ return (EReference)experimentEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getExperiment_Complete() {
+ return (EAttribute)experimentEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getExperiment_Scenario() {
+ return (EReference)experimentEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ExperimentFactory getExperimentFactory() {
+ return (ExperimentFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ experimentEClass = createEClass(EXPERIMENT);
+ createEReference(experimentEClass, EXPERIMENT__MODIFIERS);
+ createEAttribute(experimentEClass, EXPERIMENT__COMPLETE);
+ createEReference(experimentEClass, EXPERIMENT__SCENARIO);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ CommonPackage theCommonPackage = (CommonPackage)EPackage.Registry.INSTANCE.getEPackage(CommonPackage.eNS_URI);
+ ModifierPackage theModifierPackage = (ModifierPackage)EPackage.Registry.INSTANCE.getEPackage(ModifierPackage.eNS_URI);
+ ScenarioPackage theScenarioPackage = (ScenarioPackage)EPackage.Registry.INSTANCE.getEPackage(ScenarioPackage.eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ experimentEClass.getESuperTypes().add(theCommonPackage.getIdentifiable());
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(experimentEClass, Experiment.class, "Experiment", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getExperiment_Modifiers(), theModifierPackage.getModifier(), null, "modifiers", null, 0, -1, Experiment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getExperiment_Complete(), ecorePackage.getEBoolean(), "complete", null, 0, 1, Experiment.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getExperiment_Scenario(), theScenarioPackage.getScenario(), null, "scenario", null, 0, 1, Experiment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ addEOperation(experimentEClass, theScenarioPackage.getScenario(), "updateScenario", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ addEOperation(experimentEClass, theScenarioPackage.getScenario(), "initScenario", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} //ExperimentPackageImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/provider/ExperimentItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/provider/ExperimentItemProvider.java
new file mode 100644
index 000000000..66bbeda88
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/provider/ExperimentItemProvider.java
@@ -0,0 +1,348 @@
+package org.eclipse.stem.core.experiment.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.Utility;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.provider.CoreEditPlugin;
+import org.eclipse.stem.core.common.provider.IdentifiableItemProvider;
+import org.eclipse.stem.core.experiment.Experiment;
+import org.eclipse.stem.core.experiment.ExperimentPackage;
+import org.eclipse.stem.core.modifier.Modifier;
+import org.eclipse.stem.core.scenario.Scenario;
+import org.eclipse.swt.dnd.DND;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.experiment.Experiment} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ExperimentItemProvider
+ extends IdentifiableItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ExperimentItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addCompletePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Complete feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addCompletePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Experiment_complete_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Experiment_complete_feature", "_UI_Experiment_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ExperimentPackage.Literals.EXPERIMENT__COMPLETE,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(ExperimentPackage.Literals.EXPERIMENT__MODIFIERS);
+ childrenFeatures.add(ExperimentPackage.Literals.EXPERIMENT__SCENARIO);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns Experiment.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/customobj16/Experiment"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ return super.getText(object);
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getTextGen(Object object) {
+ URI labelValue = ((Experiment)object).getURI();
+ String label = labelValue == null ? null : labelValue.toString();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Experiment_type") : //$NON-NLS-1$
+ getString("_UI_Experiment_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(Experiment.class)) {
+ case ExperimentPackage.EXPERIMENT__COMPLETE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case ExperimentPackage.EXPERIMENT__MODIFIERS:
+ case ExperimentPackage.EXPERIMENT__SCENARIO:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+
+ /**
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createAddCommand(org.eclipse.emf.edit.domain.EditingDomain, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.util.Collection, int)
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ protected Command createAddCommand(EditingDomain domain, EObject owner,
+ EStructuralFeature feature, Collection<?> collection, int index) {
+ final Collection identifiableCollection = new ArrayList();
+ for (Object value : collection) {
+
+ Object temp = value;
+ if (value instanceof IFile) {
+ // Yes
+ final IFile iFile = (IFile) value;
+ final URI uri = URI.createFileURI(iFile.getLocation()
+ .toString());
+ final Identifiable identifable = Utility.getIdentifiable(uri);
+ identifiableCollection.add(identifable);
+ temp = identifable;
+ } // if IFile
+
+ else if (value instanceof String) {
+ // Yes
+ final String uriString = (String) value;
+ try {
+ final URI uri = URI.createURI(uriString);
+ final Identifiable identifable = Utility
+ .getIdentifiable(uri);
+ temp = identifable;
+ } catch (Exception e) {
+ // Ignore it
+ }
+ } // if String
+
+ if (temp instanceof Identifiable) {
+ identifiableCollection.add(temp);
+ }
+ } // for each Object
+
+ return super.createAddCommand(domain, owner, feature,
+ identifiableCollection, index);
+ } // createAddCommand
+
+
+ /**
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createSetCommand(org.eclipse.emf.edit.domain.EditingDomain,
+ * org.eclipse.emf.ecore.EObject,
+ * org.eclipse.emf.ecore.EStructuralFeature, java.lang.Object, int)
+ */
+ @Override
+ protected Command createSetCommand(EditingDomain domain, EObject owner,
+ EStructuralFeature feature, Object value, int index) {
+ // Are we setting the model during a drag and drop?
+ Object temp = value;
+
+ if (value instanceof IFile) {
+ // Yes
+ final IFile iFile = (IFile) value;
+ final URI uri = URI.createFileURI(iFile.getLocation().toString());
+ final Identifiable identifable = Utility.getIdentifiable(uri);
+ temp = identifable;
+ } // if IFile
+
+ else if (value instanceof String) {
+ // Yes
+ // These come from IdentifablePluginView
+ final String uriString = (String) value;
+ try {
+ final URI uri = URI.createURI(uriString);
+ final Identifiable identifable = Utility.getIdentifiable(uri);
+ temp = identifable;
+ } catch (Exception e) {
+ // Ignore it
+ }
+ } // if String
+
+ if (temp instanceof Scenario) {
+ return super.createSetCommand(domain, owner,
+ ExperimentPackage.eINSTANCE.getExperiment_Scenario(), temp, index);
+ } // if
+ else if (temp instanceof Modifier) {
+ return super
+ .createAddCommand(
+ domain,
+ owner,
+ ExperimentPackage.eINSTANCE
+ .getExperiment()
+ .getEStructuralFeature(
+ ExperimentPackage.EXPERIMENT__MODIFIERS),
+ Arrays.asList((new Object[] { temp })), index);
+ } // else if
+ else {
+
+ return super.createSetCommand(domain, owner, feature, value, index);
+ }
+ } // createSetCommand
+
+ /**
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createDragAndDropCommand(org.eclipse.emf.edit.domain.EditingDomain,
+ * java.lang.Object, float, int, int, java.util.Collection)
+ */
+ @Override
+ protected Command createDragAndDropCommand(EditingDomain domain,
+ Object owner, float location, int operations, int operation,
+ Collection<?> collection) {
+ // We add DND.DROP_LINK as an allowed operation because all drops will
+ // be links and some sources don't allow links, we convert to links
+ // anyway
+ return super.createDragAndDropCommand(domain, owner, location,
+ operations | DND.DROP_LINK, operation, collection);
+ } // createDragAndDropCommand
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+
+ /**
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#isWrappingNeeded(java.lang.Object)
+ */
+ @Override
+ protected boolean isWrappingNeeded(Object object) {
+ // return super.isWrappingNeeded(object);
+ // We return true so that non-containment references are wrapped. This
+ // enables the delete command in the editor's context menu.
+ return true;
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return CoreEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/provider/ExperimentItemProviderAdapterFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/provider/ExperimentItemProviderAdapterFactory.java
new file mode 100644
index 000000000..e707d6592
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/provider/ExperimentItemProviderAdapterFactory.java
@@ -0,0 +1,207 @@
+package org.eclipse.stem.core.experiment.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.experiment.util.ExperimentAdapterFactory;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ExperimentItemProviderAdapterFactory extends ExperimentAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+ /**
+ * This keeps track of the root adapter factory that delegates to this adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ComposedAdapterFactory parentAdapterFactory;
+
+ /**
+ * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+ /**
+ * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+ /**
+ * This constructs an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ExperimentItemProviderAdapterFactory() {
+ supportedTypes.add(IEditingDomainItemProvider.class);
+ supportedTypes.add(IStructuredItemContentProvider.class);
+ supportedTypes.add(ITreeItemContentProvider.class);
+ supportedTypes.add(IItemLabelProvider.class);
+ supportedTypes.add(IItemPropertySource.class);
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.experiment.Experiment} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ExperimentItemProvider experimentItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.experiment.Experiment}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createExperimentAdapter() {
+ if (experimentItemProvider == null) {
+ experimentItemProvider = new ExperimentItemProvider(this);
+ }
+
+ return experimentItemProvider;
+ }
+
+ /**
+ * This returns the root adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ComposeableAdapterFactory getRootAdapterFactory() {
+ return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+ }
+
+ /**
+ * This sets the composed adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+ this.parentAdapterFactory = parentAdapterFactory;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object type) {
+ return supportedTypes.contains(type) || super.isFactoryForType(type);
+ }
+
+ /**
+ * This implementation substitutes the factory itself as the key for the adapter.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter adapt(Notifier notifier, Object type) {
+ return super.adapt(notifier, this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public Object adapt(Object object, Object type) {
+ if (isFactoryForType(type)) {
+ Object adapter = super.adapt(object, type);
+ if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+ return adapter;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * This adds a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void addListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.addListener(notifyChangedListener);
+ }
+
+ /**
+ * This removes a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void removeListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.removeListener(notifyChangedListener);
+ }
+
+ /**
+ * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void fireNotifyChanged(Notification notification) {
+ changeNotifier.fireNotifyChanged(notification);
+
+ if (parentAdapterFactory != null) {
+ parentAdapterFactory.fireNotifyChanged(notification);
+ }
+ }
+
+ /**
+ * This disposes all of the item providers created by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void dispose() {
+ if (experimentItemProvider != null) experimentItemProvider.dispose();
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/util/ExperimentAdapterFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/util/ExperimentAdapterFactory.java
new file mode 100644
index 000000000..6a71dcb68
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/util/ExperimentAdapterFactory.java
@@ -0,0 +1,183 @@
+package org.eclipse.stem.core.experiment.util;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.SanityChecker;
+import org.eclipse.stem.core.experiment.Experiment;
+import org.eclipse.stem.core.experiment.ExperimentPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.experiment.ExperimentPackage
+ * @generated
+ */
+public class ExperimentAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static ExperimentPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ExperimentAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = ExperimentPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ExperimentSwitch<Adapter> modelSwitch =
+ new ExperimentSwitch<Adapter>() {
+ @Override
+ public Adapter caseExperiment(Experiment object) {
+ return createExperimentAdapter();
+ }
+ @Override
+ public <T> Adapter caseComparable(Comparable<T> object) {
+ return createComparableAdapter();
+ }
+ @Override
+ public Adapter caseSanityChecker(SanityChecker object) {
+ return createSanityCheckerAdapter();
+ }
+ @Override
+ public Adapter caseIdentifiable(Identifiable object) {
+ return createIdentifiableAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.experiment.Experiment <em>Experiment</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.experiment.Experiment
+ * @generated
+ */
+ public Adapter createExperimentAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link java.lang.Comparable <em>Comparable</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see java.lang.Comparable
+ * @generated
+ */
+ public Adapter createComparableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.SanityChecker <em>Sanity Checker</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.common.SanityChecker
+ * @generated
+ */
+ public Adapter createSanityCheckerAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.Identifiable <em>Identifiable</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.common.Identifiable
+ * @generated
+ */
+ public Adapter createIdentifiableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} //ExperimentAdapterFactory
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/util/ExperimentSwitch.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/util/ExperimentSwitch.java
new file mode 100644
index 000000000..76ae7f3c6
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/experiment/util/ExperimentSwitch.java
@@ -0,0 +1,185 @@
+package org.eclipse.stem.core.experiment.util;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.SanityChecker;
+import org.eclipse.stem.core.experiment.Experiment;
+import org.eclipse.stem.core.experiment.ExperimentPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.experiment.ExperimentPackage
+ * @generated
+ */
+public class ExperimentSwitch<T1> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static ExperimentPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ExperimentSwitch() {
+ if (modelPackage == null) {
+ modelPackage = ExperimentPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ public T1 doSwitch(EObject theEObject) {
+ return doSwitch(theEObject.eClass(), theEObject);
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T1 doSwitch(EClass theEClass, EObject theEObject) {
+ if (theEClass.eContainer() == modelPackage) {
+ return doSwitch(theEClass.getClassifierID(), theEObject);
+ }
+ else {
+ List<EClass> eSuperTypes = theEClass.getESuperTypes();
+ return
+ eSuperTypes.isEmpty() ?
+ defaultCase(theEObject) :
+ doSwitch(eSuperTypes.get(0), theEObject);
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T1 doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case ExperimentPackage.EXPERIMENT: {
+ Experiment experiment = (Experiment)theEObject;
+ T1 result = caseExperiment(experiment);
+ if (result == null) result = caseIdentifiable(experiment);
+ if (result == null) result = caseComparable(experiment);
+ if (result == null) result = caseSanityChecker(experiment);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Experiment</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Experiment</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseExperiment(Experiment object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Comparable</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Comparable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public <T> T1 caseComparable(Comparable<T> object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Sanity Checker</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Sanity Checker</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseSanityChecker(SanityChecker object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Identifiable</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Identifiable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseIdentifiable(Identifiable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ public T1 defaultCase(EObject object) {
+ return null;
+ }
+
+} //ExperimentSwitch
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/Displayable.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/Displayable.java
new file mode 100644
index 000000000..9cc19f44a
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/Displayable.java
@@ -0,0 +1,16 @@
+package org.eclipse.stem.core.graph;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * see Modifiable.java in org.eclipse.core.modifier
+ *
+ *
+ * @model interface="true"
+ */
+public interface Displayable extends EObject {
+ // Nothing
+} // Modifiable
+
+
+
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/DynamicEdgeLabel.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/DynamicEdgeLabel.java
new file mode 100644
index 000000000..7ae987522
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/DynamicEdgeLabel.java
@@ -0,0 +1,23 @@
+// DynamicEdgeLabel.java
+package org.eclipse.stem.core.graph;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+/**
+ * A <code>DynamicEdgeLabel</code> is a {@link DynamicLabel} that specifically
+ * labels an {@link Edge}.
+ *
+ * @model abstract="true"
+ */
+public interface DynamicEdgeLabel extends DynamicLabel, EdgeLabel {
+ // Nothing
+} // DynamicEdgeLabel
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/DynamicLabel.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/DynamicLabel.java
new file mode 100644
index 000000000..b79b7c6bf
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/DynamicLabel.java
@@ -0,0 +1,115 @@
+// DynamicLabel.java
+package org.eclipse.stem.core.graph;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.stem.core.STEMURI;
+import org.eclipse.stem.core.model.Decorator;
+
+/**
+ * A <code>DynamicLabel</code> is a {@link Label} that has two
+ * {@link LabelValue}s instead of one. The second value is called the "next"
+ * value. It represents the values of the attributes of the {@link Label} in the
+ * next state of the {@link Graph}. The other value is called the "current"
+ * value and it represents the value of the attributes in the current state of
+ * the {@link Graph}.
+ * <p>
+ * A <code>DynamicLabel</code> can exchange the "current" and "next' values
+ * (see {@link #switchToNextValue()}. After such a switch, the next value is
+ * marked as being "invalid" (see {@link #isNextValueValid()}).
+ * </p>
+ *
+ * @model abstract="true"
+ */
+public interface DynamicLabel extends Label {
+
+ /**
+ * This is the top-level segment for all type URI's for dynamic labels.
+ */
+ String URI_TYPE_DYNAMIC_LABEL_SEGMENT = URI_TYPE_LABEL_SEGMENT + "/dynamic";
+
+ /**
+ * This is the type URI for a Dynamic Label
+ */
+ URI URI_TYPE_DYNAMIC_LABEL = STEMURI
+ .createTypeURI(URI_TYPE_DYNAMIC_LABEL_SEGMENT);
+
+ /**
+ *
+ * @return the {@link Decorator} that updates this <code>DynamicLabel</code>.
+ * @model opposite="labelsToUpdate"
+ */
+ Decorator getDecorator();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.graph.DynamicLabel#getDecorator <em>Decorator</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Decorator</em>' reference.
+ * @see #getDecorator()
+ * @generated
+ */
+ void setDecorator(Decorator value);
+
+ /**
+ * Reset the dynamic label. This sets the {@link LabelValue}s back to their
+ * initial states.
+ *
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ void reset();
+
+ /**
+ * If the next value has been set since the last call to
+ * {@link #setNextValue(LabelValue)} and the <code>DynamicLabel</code> has
+ * not been "reset" then the next value is valid.
+ *
+ * @return true if the next value is valid
+ * @model default="false"
+ */
+ boolean isNextValueValid();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.graph.DynamicLabel#isNextValueValid <em>Next Value Valid</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @param value the new value of the '<em>Next Value Valid</em>' attribute.
+ * @see #isNextValueValid()
+ * @generated
+ */
+ void setNextValueValid(boolean value);
+
+ /**
+ * @return the "next" {@link LabelValue}.
+ *
+ * @model containment="true" required="true"
+ */
+ LabelValue getNextValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.graph.DynamicLabel#getNextValue <em>Next Value</em>}' containment reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @param value the new value of the '<em>Next Value</em>' containment reference.
+ * @see #getNextValue()
+ * @generated
+ */
+ void setNextValue(LabelValue value);
+
+ /**
+ * Exchange the "next" and "current" {@link LabelValue}s. This is called when the
+ * {@link Graph} is ready to move to the next state (see
+ * {@link Graph#switchToNextValue()).
+ *
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ void switchToNextValue();
+} // DynamicLabel
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/DynamicNodeLabel.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/DynamicNodeLabel.java
new file mode 100644
index 000000000..ce19907b9
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/DynamicNodeLabel.java
@@ -0,0 +1,23 @@
+// DynamicNodeLabel.java
+package org.eclipse.stem.core.graph;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+/**
+ * A <code>DynamicNodeLabel</code> is a {@link DynamicLabel} that specifically
+ * labels a {@link Node}.
+ *
+ * @model abstract="true"
+ */
+public interface DynamicNodeLabel extends DynamicLabel, NodeLabel {
+ // Nothing
+} // DynamicNodeLabel
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/Edge.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/Edge.java
new file mode 100644
index 000000000..c360f6d68
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/Edge.java
@@ -0,0 +1,171 @@
+// Edge.java
+package org.eclipse.stem.core.graph;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.modifier.Modifiable;
+
+/**
+ * An <code>Edge</code> represents a relationship between two {@link Node}s.
+ * The attributes of that relationship are defined by the <code>Edge</code>'s
+ * {@link Label}.
+ * <p>
+ * An <code>Edge</code> can be <em>directed</em> or <em>undirected</em>.
+ * If the <code>Edge</code> is directed then the relationship is "one-way"
+ * from {@link Node} "<code>A</code>" to {@link Node} "<code>B</code>".
+ * An example of such a relationship is "physically contains", where the entity
+ * represented by {@link Node} "<code>B</code>" is physically contained in
+ * the entity represented by {@link Node} "<code>A</code>" (e.g., Santa
+ * Clara county is physically contained in the state of California). If the
+ * <code>Edge</code> is undirected then the relationship is <em>symmetric</em>,
+ * meaning that it holds both ways. An example of such a relationship is "shares
+ * common border", where the entity represented by {@link Node} "<code>A</code>"
+ * shares a common border with the entity represented by {@link Node} "<code>B</code>"
+ * (e.g., Santa Clara county shares a common border with Santa Cruz county).
+ *
+ * </p>
+ *
+ * @see Graph
+ * @see Node
+ *
+ * @model
+ */
+public interface Edge extends Identifiable, Modifiable {
+
+ /**
+ * This is the segment of the type URI that prefixes all other segments in a
+ * edge URI.
+ */
+ String URI_TYPE_EDGE_SEGMENT = "edge";
+
+ /**
+ * @return the "A" {@link Node} of the edge. Directed edges go from
+ * {@link Node} A to {@link Node} B. In a graph fragment this value
+ * may not yet be set.
+ * @model containment="false"
+ */
+ Node getA();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.graph.Edge#getA <em>A</em>}' reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @param value the new value of the '<em>A</em>' reference.
+ * @see #getA()
+ * @generated
+ */
+ void setA(Node value);
+
+ /**
+ * @return the URI of {@link Node} A.
+ * @model
+ */
+ URI getNodeAURI();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.graph.Edge#getNodeAURI <em>Node AURI</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @param value the new value of the '<em>Node AURI</em>' attribute.
+ * @see #getNodeAURI()
+ * @generated
+ */
+ void setNodeAURI(URI value);
+
+ /**
+ * @return the "B" {@link Node} of the edge. Directed edges go from
+ * {@link Node} A to {@link Node} B. In a graph fragment this value
+ * may not yet be set.
+ * @model containment="false"
+ */
+ Node getB();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.graph.Edge#getB <em>B</em>}' reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @param value the new value of the '<em>B</em>' reference.
+ * @see #getB()
+ * @generated
+ */
+ void setB(Node value);
+
+ /**
+ * @return the URI of {@link Node} B.
+ * @model
+ */
+ URI getNodeBURI();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.graph.Edge#getNodeBURI <em>Node BURI</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @param value the new value of the '<em>Node BURI</em>' attribute.
+ * @see #getNodeBURI()
+ * @generated
+ */
+ void setNodeBURI(URI value);
+
+ /**
+ * @param node
+ * one of the two {@link Node}s of the <code>Edge</code>
+ * @return {@link Node} A if {@link Node} B is passed in, otherwise return
+ * {@link Node} B if {@link Node} A is passed in.
+ * @exception IllegalArgumentException
+ * if the {@link Node} passed in is not either {@link Node} A
+ * or {@link Node} B of this <code>Edge</code>.
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ Node getOtherNode(final Node node) throws IllegalArgumentException;
+
+ /**
+ * @return the {@link EdgeLabel} of the <code>Edge</code>, if it exists.
+ * @model containment="true" opposite="edge"
+ */
+ EdgeLabel getLabel();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.graph.Edge#getLabel <em>Label</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Label</em>' containment reference.
+ * @see #getLabel()
+ * @generated
+ */
+ void setLabel(EdgeLabel value);
+
+ /**
+ * @return <code>true</code> if the <code>Edge</code> is a directed
+ * <code>Edge</code> (directed <code>Edge</code>s are always
+ * from {@link Node} A to {@link Node} B).
+ * @model default="false"
+ */
+ boolean isDirected();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.graph.Edge#isDirected <em>Directed</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @param value the new value of the '<em>Directed</em>' attribute.
+ * @see #isDirected()
+ * @generated
+ */
+ void setDirected(boolean value);
+
+ /**
+ * @param node
+ * the {@link Node} under test
+ * @return <code>true</code> if the <code>Edge</code> is a directed
+ * <code>Edge</code> and the {@link Node} under test is
+ * {@link Node} B.
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ boolean isDirectedAt(final Node node);
+
+} // Edge
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/EdgeLabel.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/EdgeLabel.java
new file mode 100644
index 000000000..d4b4b5e68
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/EdgeLabel.java
@@ -0,0 +1,40 @@
+// EdgeLabel.java
+package org.eclipse.stem.core.graph;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+/**
+ * An <code>EdgeLabel</code> is a {@link Label} that provides attributes to an
+ * {@link Edge}.
+ *
+ * @model abstract="true"
+ */
+public interface EdgeLabel extends Label {
+
+ /**
+ * @return the {@link Edge} that this <code>EdgeLabel</code> labels.
+ *
+ * @model containment="false"
+ */
+ Edge getEdge();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.graph.EdgeLabel#getEdge <em>Edge</em>}' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Edge</em>' container reference.
+ * @see #getEdge()
+ * @generated
+ */
+ void setEdge(Edge value);
+
+} // EdgeLabel
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/Exchange.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/Exchange.java
new file mode 100644
index 000000000..8384a9c6e
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/Exchange.java
@@ -0,0 +1,115 @@
+package org.eclipse.stem.core.graph;
+
+/*******************************************************************************
+ * Copyright (c) 2011 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
+ *******************************************************************************/
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Exchange</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.graph.Exchange#getOtherLabel <em>Other Label</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.Exchange#getCount <em>Count</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.Exchange#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.core.graph.GraphPackage#getExchange()
+ * @model superTypes="org.eclipse.stem.core.common.Comparable<org.eclipse.stem.core.graph.Exchange>"
+ * @generated
+ */
+public interface Exchange extends EObject, Comparable<Exchange> {
+ /**
+ * Returns the value of the '<em><b>Other Label</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Other Label</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Other Label</em>' reference.
+ * @see #setOtherLabel(Label)
+ * @see org.eclipse.stem.core.graph.GraphPackage#getExchange_OtherLabel()
+ * @model
+ * @generated
+ */
+ Label getOtherLabel();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.graph.Exchange#getOtherLabel <em>Other Label</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Other Label</em>' reference.
+ * @see #getOtherLabel()
+ * @generated
+ */
+ void setOtherLabel(Label value);
+
+ /**
+ * Returns the value of the '<em><b>Count</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Count</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Count</em>' attribute.
+ * @see #setCount(double)
+ * @see org.eclipse.stem.core.graph.GraphPackage#getExchange_Count()
+ * @model
+ * @generated
+ */
+ double getCount();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.graph.Exchange#getCount <em>Count</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Count</em>' attribute.
+ * @see #getCount()
+ * @generated
+ */
+ void setCount(double value);
+
+ /**
+ * Returns the value of the '<em><b>Type</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.stem.core.graph.ExchangeType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Type</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Type</em>' attribute.
+ * @see org.eclipse.stem.core.graph.ExchangeType
+ * @see #setType(ExchangeType)
+ * @see org.eclipse.stem.core.graph.GraphPackage#getExchange_Type()
+ * @model
+ * @generated
+ */
+ ExchangeType getType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.graph.Exchange#getType <em>Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Type</em>' attribute.
+ * @see org.eclipse.stem.core.graph.ExchangeType
+ * @see #getType()
+ * @generated
+ */
+ void setType(ExchangeType value);
+
+} // Exchange
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/ExchangeType.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/ExchangeType.java
new file mode 100644
index 000000000..10cbda78b
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/ExchangeType.java
@@ -0,0 +1,244 @@
+package org.eclipse.stem.core.graph;
+
+/*******************************************************************************
+ * Copyright (c) 2011 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
+ *******************************************************************************/
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Exchange Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.GraphPackage#getExchangeType()
+ * @model
+ * @generated
+ */
+public enum ExchangeType implements Enumerator {
+ /**
+ * The '<em><b>BIRTHS AND DEATHS</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #BIRTHS_AND_DEATHS_VALUE
+ * @generated
+ * @ordered
+ */
+ BIRTHS_AND_DEATHS(1, "BIRTHS_AND_DEATHS", "BIRTHS_AND_DEATHS"), //$NON-NLS-1$ //$NON-NLS-2$
+
+ /**
+ * The '<em><b>MIGRATION</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #MIGRATION_VALUE
+ * @generated
+ * @ordered
+ */
+ MIGRATION(2, "MIGRATION", "MIGRATION"), //$NON-NLS-1$ //$NON-NLS-2$
+
+ /**
+ * The '<em><b>AGING</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #AGING_VALUE
+ * @generated
+ * @ordered
+ */
+ AGING(3, "AGING", "AGING"); //$NON-NLS-1$ //$NON-NLS-2$
+
+ /**
+ * The '<em><b>BIRTHS AND DEATHS</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>BIRTHS AND DEATHS</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #BIRTHS_AND_DEATHS
+ * @model
+ * @generated
+ * @ordered
+ */
+ public static final int BIRTHS_AND_DEATHS_VALUE = 1;
+
+ /**
+ * The '<em><b>MIGRATION</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>MIGRATION</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #MIGRATION
+ * @model
+ * @generated
+ * @ordered
+ */
+ public static final int MIGRATION_VALUE = 2;
+
+ /**
+ * The '<em><b>AGING</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>AGING</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #AGING
+ * @model
+ * @generated
+ * @ordered
+ */
+ public static final int AGING_VALUE = 3;
+
+ /**
+ * An array of all the '<em><b>Exchange Type</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final ExchangeType[] VALUES_ARRAY =
+ new ExchangeType[] {
+ BIRTHS_AND_DEATHS,
+ MIGRATION,
+ AGING,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Exchange Type</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<ExchangeType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Exchange Type</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static ExchangeType get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ ExchangeType result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Exchange Type</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static ExchangeType getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ ExchangeType result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Exchange Type</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static ExchangeType get(int value) {
+ switch (value) {
+ case BIRTHS_AND_DEATHS_VALUE: return BIRTHS_AND_DEATHS;
+ case MIGRATION_VALUE: return MIGRATION;
+ case AGING_VALUE: return AGING;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private ExchangeType(int value, String name, String literal) {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral() {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ return literal;
+ }
+
+} //ExchangeType
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/Graph.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/Graph.java
new file mode 100644
index 000000000..06411455d
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/Graph.java
@@ -0,0 +1,314 @@
+// Graph.java
+package org.eclipse.stem.core.graph;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.IdentifiableFilter;
+import org.eclipse.stem.core.model.Decorator;
+import org.eclipse.stem.core.model.Model;
+import org.eclipse.stem.core.model.STEMTime;
+
+/**
+ * A <code>Graph</code> serves two roles in the STEM system. The first is as
+ * the canonical data structure that is the representational framework for all
+ * STEM simulations. In this form, a <code>Graph</code>, with one exception,
+ * matches the theoretical definition of a "graph" in that it has a set of
+ * {@link Node}s, a set of {@link Edge}s between members of the {@link Node}
+ * set, and a set of {@link Label}s that label either a member of the
+ * {@link Node} set or a member of the {@link Edge} set. The one exception is
+ * that an additional set of {@link Label}s designated as "graph labels"
+ * exists. These {@link Label}s function as "global variables" and would
+ * typically be used during a simulation to hold global state information (for
+ * instance, parameters referenced by a
+ * {@link org.eclipse.stem.core.model.Decorator} that control it's
+ * computations on a graph-wide basis, an example might be a disease model that
+ * can change the infectious rate it uses by referencing such a label).
+ * <p>
+ * The second role played by a <code>Graph</code> is as a unit of composition
+ * in a {@link org.eclipse.stem.core.model.Model}. A
+ * {@link org.eclipse.stem.core.model.Model} forms a tree of
+ * <code>Graph</code>s and {@link Model}s. The <code>Graph</code>
+ * instances are the leaves of the tree while the
+ * {@link org.eclipse.stem.core.model.Model} instances are the root and
+ * inner nodes of the tree. In this role, a <code>Graph</code> may not meet
+ * the theoretical definition of a "graph". This means that it may only have a
+ * set of {@link Label}s or a set of {@link Edge}s, and no {@link Node}s.
+ * This "graph fragment" allows sets of {@link Label}s and {@link Edge}s to be
+ * defined and then later combined with an existing <code>Graph</code> that
+ * does have {@link Node}s. This combination is specified by adding the graph
+ * fragment to a {@link org.eclipse.stem.core.model.Model} instance. When
+ * the canonical <code>Graph</code> is created, the {@link Label}s and
+ * {@link Edge}s are "resolved" by matching their target {@link URI}(s) with
+ * those of the {@link Node}s in the canonical <code>Graph</code> under
+ * construction. Any such {@link Label}s or {@link Edge}s that are unresolved
+ * are recorded as {@link UnresolvedIdentifiable}s.
+ * </p>
+ * <p>
+ * The <code>Graph</code> has <em>containment</em> relationships for
+ * {@link Node}s, {@link Edge}s and the labels on nodes (i.e.,
+ * {@link NodeLabel}s). These support the graph fragment role by allowing a
+ * <code>Graph</code> to contain any of the three without the others. The
+ * {@link Label}s on {@link Edge}s are contained by the {@link Edge} as it is
+ * not possible to have such a {@link Label} without the {@link Edge}. Only one
+ * such {@link Label} is allowed per {@link Edge}.
+ * </p>
+ * <p>
+ * This interface definition is also an "Annotated Java Interface" that defines
+ * one class in a <a href="http://www.uml.org/">UML</a> "model". The UML class
+ * diagram for the model is in the <code>documentation</code> folder of the
+ * project. This file and the other interfaces in this Java package are
+ * processed by the Eclipse Modeling Framework (aka EMF <a
+ * href="http://org.eclipse/emf">http://org.eclipse/emf</a>). to automatically
+ * generate an implementation of the model. EMF is documented in the book <a
+ * href="http://www.awprofessional.com/bookstore/product.asp?isbn=0131425420&rl=1">Eclipse
+ * Modeling Framework </a> by Budinsky, et al.
+ * </p>
+ *
+ * @see Edge
+ * @see Node
+ * @see Label
+ * @see org.eclipse.stem.core.model.Model
+ * @see org.eclipse.stem.core.scenario.Scenario
+ *
+ * @model
+ */
+public interface Graph extends Identifiable {
+
+ /**
+ * This is the segment of the type URI that prefixes all other segments in a
+ * graph URI.
+ */
+ String URI_TYPE_GRAPH_SEGMENT = "graph";
+
+ /**
+ * @return the time that the dynamic label values were last updated.
+ * @model containment="true" resolveProxies="false"
+ */
+ STEMTime getTime();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.graph.Graph#getTime <em>Time</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Time</em>' containment reference.
+ * @see #getTime()
+ * @generated
+ */
+ void setTime(STEMTime value);
+
+ /**
+ * Returns the value of the '<em><b>Nodes</b></em>' map.
+ * The key is of type {@link org.eclipse.emf.common.util.URI},
+ * and the value is of type {@link org.eclipse.stem.core.graph.Node},
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Nodes</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Nodes</em>' map.
+ * @see org.eclipse.stem.core.graph.GraphPackage#getGraph_Nodes()
+ * @model mapType="org.eclipse.stem.core.graph.URIToNodeMapEntry<org.eclipse.stem.core.common.URI, org.eclipse.stem.core.graph.Node>"
+ * @generated
+ */
+ EMap<URI, Node> getNodes();
+
+ /**
+ * Returns the value of the '<em><b>Edges</b></em>' map.
+ * The key is of type {@link org.eclipse.emf.common.util.URI},
+ * and the value is of type {@link org.eclipse.stem.core.graph.Edge},
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Edges</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Edges</em>' map.
+ * @see org.eclipse.stem.core.graph.GraphPackage#getGraph_Edges()
+ * @model mapType="org.eclipse.stem.core.graph.URIToEdgeMapEntry<org.eclipse.stem.core.common.URI, org.eclipse.stem.core.graph.Edge>"
+ * @generated
+ */
+ EMap<URI, Edge> getEdges();
+
+ /**
+ * @return the map between {@link URI} and {@link Label} labeling the {@link Graph}
+ * @model keyType="URI" valueType="Label" valueContainment="true"
+ */
+ EMap<URI, Label> getGraphLabels();
+
+ /**
+ * @return the mapping between {@link URI} and {@link NodeLabel}s
+ * @model keyType="URI" valueType="NodeLabel" valueContainment="true"
+ */
+ EMap<URI, NodeLabel> getNodeLabels();
+
+ /**
+ * @param typeURI
+ * the type {@link URI} of the desired {@link NodeLabel}
+ * @return a list of the {@link NodeLabel}s that match a specific type {@link URI}
+ * @model type="NodeLabel" volatile="true" transient="true"
+ * changeable="false"
+ */
+ EList<NodeLabel> getNodeLabelsByTypeURI(URI typeURI);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ void addGraph(Graph graph, IdentifiableFilter filter);
+
+ /**
+ * <!-- begin-user-doc -->
+ *
+ * This collection of Labels contains references to ALL of the
+ * {@link DynamicLabel}s in the {@link Graph}. It is used by
+ * {@link #switchToNextValue()} to find each of the {@link DynamicLabel}s
+ * that need to switch values.
+ *
+ * <!-- end-user-doc -->
+ *
+ * @model type="DynamicLabel" containment="false"
+ */
+ EList<DynamicLabel> getDynamicLabels();
+
+ /**
+ * @return the collection of {@link Decorator}s that decorate this {@link Graph}
+ * @model type="Decorator" containment="true" opposite="graph"
+ */
+ EList<Decorator> getDecorators();
+
+
+ /**
+ * Put the {@link Edge} into the {@link Graph}.
+ *
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ void putEdge(Edge edge);
+
+ /**
+ * Get the {@link Edge} from the {@link Graph}.
+ *
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ Edge getEdge(URI uri);
+
+ /**
+ * Put the {@link Node} into the {@link Graph}.
+ *
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ void putNode(Node node);
+
+ /**
+ * Get the {@link Node} from the {@link Graph}.
+ *
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ Node getNode(URI uri);
+
+ /**
+ * Put the {@link NodeLabel} into the {@link Graph}.
+ *
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ void putNodeLabel(NodeLabel label);
+
+ /**
+ * Get the {@link NodeLabel} from the {@link Graph}.
+ *
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ NodeLabel getNodeLabel(URI uri);
+
+ /**
+ * Put the Graph {@link Label} into the {@link Graph}.
+ *
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ void putGraphLabel(Label label);
+
+ /**
+ * Get the Graph {@link Label} from the {@link Graph}.
+ *
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ Label getGraphLabel(URI uri);
+
+ /**
+ * Add the {@link DynamicLabel} into the {@link Graph}.
+ *
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ void addDynamicLabel(DynamicLabel dynamiclabel);
+
+ /**
+ * Return the number of {@link Edge}s in this {@link Graph}.
+ *
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ int getNumEdges();
+
+ /**
+ * Return the number of {@link Node}s in this {@link Graph}.
+ *
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ int getNumNodes();
+
+ /**
+ * Return the number of Graph {@link Label} in this {@link Graph}.
+ *
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ int getNumGraphLabels();
+
+ /**
+ * Return the number of {@link NodeLabel}s in this {@link Graph}.
+ *
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ int getNumNodeLabels();
+
+ /**
+ * Return the number of {@link DynamicLabel}s in this {@link Graph}.
+ *
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ int getNumDynamicLabels();
+
+ /**
+ * @return a collection that {@link UnresolvedIdentifiable} instances that specify
+ * the {@link URI}'s in an {@link Identifiable} that could not be resolved.
+ *
+ * @model type="UnresolvedIdentifiable" containment="true"
+ */
+ EList<UnresolvedIdentifiable> getUnresolvedIdentifiables();
+
+ /**
+ * Make all of the {@link DynamicLabel}s in the model switch to their "next" value.
+ * This has the effect of moving the state of the model to its aggregate
+ * value at the next time period.
+ *
+ * @param currentTime
+ * the time value to associate with the new value.
+ * @see #getTime()
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ void switchToNextValue(final STEMTime currentTime);
+
+} // Graph
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/GraphFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/GraphFactory.java
new file mode 100644
index 000000000..e2a758cf7
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/GraphFactory.java
@@ -0,0 +1,96 @@
+package org.eclipse.stem.core.graph;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.GraphPackage
+ * @generated
+ */
+public interface GraphFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ GraphFactory eINSTANCE = org.eclipse.stem.core.graph.impl.GraphFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Edge</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Edge</em>'.
+ * @generated
+ */
+ Edge createEdge();
+
+ /**
+ * Returns a new object of class '<em>Graph</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Graph</em>'.
+ * @generated
+ */
+ Graph createGraph();
+
+ /**
+ * Returns a new object of class '<em>Node</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Node</em>'.
+ * @generated
+ */
+ Node createNode();
+
+ /**
+ * Returns a new object of class '<em>Unresolved Identifiable</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Unresolved Identifiable</em>'.
+ * @generated
+ */
+ UnresolvedIdentifiable createUnresolvedIdentifiable();
+
+ /**
+ * Returns a new object of class '<em>Simple Graph Partitioner</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Simple Graph Partitioner</em>'.
+ * @generated
+ */
+ SimpleGraphPartitioner createSimpleGraphPartitioner();
+
+ /**
+ * Returns a new object of class '<em>Exchange</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Exchange</em>'.
+ * @generated
+ */
+ Exchange createExchange();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ GraphPackage getGraphPackage();
+
+} //GraphFactory
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/GraphPackage.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/GraphPackage.java
new file mode 100644
index 000000000..51343efbb
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/GraphPackage.java
@@ -0,0 +1,3399 @@
+package org.eclipse.stem.core.graph;
+
+/*******************************************************************************
+ * Copyright (c) 2006, 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.stem.core.common.CommonPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.GraphFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface GraphPackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "graph";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http:///org/eclipse/stem/core/graph.ecore";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "org.eclipse.stem.core.graph";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ GraphPackage eINSTANCE = org.eclipse.stem.core.graph.impl.GraphPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.graph.impl.LabelImpl <em>Label</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.LabelImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getLabel()
+ * @generated
+ */
+ int LABEL = 4;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LABEL__URI = CommonPackage.IDENTIFIABLE__URI;
+
+ /**
+ * The feature id for the '<em><b>Type URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LABEL__TYPE_URI = CommonPackage.IDENTIFIABLE__TYPE_URI;
+
+ /**
+ * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LABEL__DUBLIN_CORE = CommonPackage.IDENTIFIABLE__DUBLIN_CORE;
+
+ /**
+ * The feature id for the '<em><b>URI Of Identifiable To Be Labeled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Current Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LABEL__CURRENT_VALUE = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Identifiable</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LABEL__IDENTIFIABLE = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Label</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LABEL_FEATURE_COUNT = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.graph.impl.DynamicLabelImpl <em>Dynamic Label</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.DynamicLabelImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getDynamicLabel()
+ * @generated
+ */
+ int DYNAMIC_LABEL = 0;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DYNAMIC_LABEL__URI = LABEL__URI;
+
+ /**
+ * The feature id for the '<em><b>Type URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DYNAMIC_LABEL__TYPE_URI = LABEL__TYPE_URI;
+
+ /**
+ * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DYNAMIC_LABEL__DUBLIN_CORE = LABEL__DUBLIN_CORE;
+
+ /**
+ * The feature id for the '<em><b>URI Of Identifiable To Be Labeled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DYNAMIC_LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED = LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED;
+
+ /**
+ * The feature id for the '<em><b>Current Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DYNAMIC_LABEL__CURRENT_VALUE = LABEL__CURRENT_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Identifiable</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DYNAMIC_LABEL__IDENTIFIABLE = LABEL__IDENTIFIABLE;
+
+ /**
+ * The feature id for the '<em><b>Next Value Valid</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DYNAMIC_LABEL__NEXT_VALUE_VALID = LABEL_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Next Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DYNAMIC_LABEL__NEXT_VALUE = LABEL_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Decorator</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DYNAMIC_LABEL__DECORATOR = LABEL_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Dynamic Label</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DYNAMIC_LABEL_FEATURE_COUNT = LABEL_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.graph.impl.DynamicNodeLabelImpl <em>Dynamic Node Label</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.DynamicNodeLabelImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getDynamicNodeLabel()
+ * @generated
+ */
+ int DYNAMIC_NODE_LABEL = 1;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DYNAMIC_NODE_LABEL__URI = DYNAMIC_LABEL__URI;
+
+ /**
+ * The feature id for the '<em><b>Type URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DYNAMIC_NODE_LABEL__TYPE_URI = DYNAMIC_LABEL__TYPE_URI;
+
+ /**
+ * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DYNAMIC_NODE_LABEL__DUBLIN_CORE = DYNAMIC_LABEL__DUBLIN_CORE;
+
+ /**
+ * The feature id for the '<em><b>URI Of Identifiable To Be Labeled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DYNAMIC_NODE_LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED = DYNAMIC_LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED;
+
+ /**
+ * The feature id for the '<em><b>Current Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DYNAMIC_NODE_LABEL__CURRENT_VALUE = DYNAMIC_LABEL__CURRENT_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Identifiable</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DYNAMIC_NODE_LABEL__IDENTIFIABLE = DYNAMIC_LABEL__IDENTIFIABLE;
+
+ /**
+ * The feature id for the '<em><b>Next Value Valid</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DYNAMIC_NODE_LABEL__NEXT_VALUE_VALID = DYNAMIC_LABEL__NEXT_VALUE_VALID;
+
+ /**
+ * The feature id for the '<em><b>Next Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DYNAMIC_NODE_LABEL__NEXT_VALUE = DYNAMIC_LABEL__NEXT_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Decorator</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DYNAMIC_NODE_LABEL__DECORATOR = DYNAMIC_LABEL__DECORATOR;
+
+ /**
+ * The feature id for the '<em><b>Node</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DYNAMIC_NODE_LABEL__NODE = DYNAMIC_LABEL_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Dynamic Node Label</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DYNAMIC_NODE_LABEL_FEATURE_COUNT = DYNAMIC_LABEL_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.graph.impl.EdgeImpl <em>Edge</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.EdgeImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getEdge()
+ * @generated
+ */
+ int EDGE = 2;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE__URI = CommonPackage.IDENTIFIABLE__URI;
+
+ /**
+ * The feature id for the '<em><b>Type URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE__TYPE_URI = CommonPackage.IDENTIFIABLE__TYPE_URI;
+
+ /**
+ * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE__DUBLIN_CORE = CommonPackage.IDENTIFIABLE__DUBLIN_CORE;
+
+ /**
+ * The feature id for the '<em><b>A</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE__A = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Node AURI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE__NODE_AURI = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>B</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE__B = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Node BURI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE__NODE_BURI = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Label</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE__LABEL = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Directed</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE__DIRECTED = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 5;
+
+ /**
+ * The number of structural features of the '<em>Edge</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE_FEATURE_COUNT = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 6;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.graph.impl.GraphImpl <em>Graph</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.GraphImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getGraph()
+ * @generated
+ */
+ int GRAPH = 3;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH__URI = CommonPackage.IDENTIFIABLE__URI;
+
+ /**
+ * The feature id for the '<em><b>Type URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH__TYPE_URI = CommonPackage.IDENTIFIABLE__TYPE_URI;
+
+ /**
+ * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH__DUBLIN_CORE = CommonPackage.IDENTIFIABLE__DUBLIN_CORE;
+
+ /**
+ * The feature id for the '<em><b>Edges</b></em>' map.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH__EDGES = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Nodes</b></em>' map.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH__NODES = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Graph Labels</b></em>' map.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH__GRAPH_LABELS = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Node Labels</b></em>' map.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH__NODE_LABELS = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Dynamic Labels</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH__DYNAMIC_LABELS = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Num Edges</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH__NUM_EDGES = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Num Nodes</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH__NUM_NODES = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 6;
+
+ /**
+ * The feature id for the '<em><b>Num Graph Labels</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH__NUM_GRAPH_LABELS = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 7;
+
+ /**
+ * The feature id for the '<em><b>Num Node Labels</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH__NUM_NODE_LABELS = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 8;
+
+ /**
+ * The feature id for the '<em><b>Num Dynamic Labels</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH__NUM_DYNAMIC_LABELS = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 9;
+
+ /**
+ * The feature id for the '<em><b>Unresolved Identifiables</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH__UNRESOLVED_IDENTIFIABLES = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 10;
+
+ /**
+ * The feature id for the '<em><b>Decorators</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH__DECORATORS = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 11;
+
+ /**
+ * The feature id for the '<em><b>Time</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH__TIME = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 12;
+
+ /**
+ * The number of structural features of the '<em>Graph</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH_FEATURE_COUNT = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 13;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.graph.impl.LabelValueImpl <em>Label Value</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.LabelValueImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getLabelValue()
+ * @generated
+ */
+ int LABEL_VALUE = 5;
+
+ /**
+ * The number of structural features of the '<em>Label Value</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LABEL_VALUE_FEATURE_COUNT = CommonPackage.SANITY_CHECKER_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.graph.impl.NodeImpl <em>Node</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.NodeImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getNode()
+ * @generated
+ */
+ int NODE = 6;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE__URI = CommonPackage.IDENTIFIABLE__URI;
+
+ /**
+ * The feature id for the '<em><b>Type URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE__TYPE_URI = CommonPackage.IDENTIFIABLE__TYPE_URI;
+
+ /**
+ * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE__DUBLIN_CORE = CommonPackage.IDENTIFIABLE__DUBLIN_CORE;
+
+ /**
+ * The feature id for the '<em><b>Edges</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE__EDGES = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Labels</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE__LABELS = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Node</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE_FEATURE_COUNT = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.graph.impl.NodeLabelImpl <em>Node Label</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.NodeLabelImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getNodeLabel()
+ * @generated
+ */
+ int NODE_LABEL = 7;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE_LABEL__URI = LABEL__URI;
+
+ /**
+ * The feature id for the '<em><b>Type URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE_LABEL__TYPE_URI = LABEL__TYPE_URI;
+
+ /**
+ * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE_LABEL__DUBLIN_CORE = LABEL__DUBLIN_CORE;
+
+ /**
+ * The feature id for the '<em><b>URI Of Identifiable To Be Labeled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE_LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED = LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED;
+
+ /**
+ * The feature id for the '<em><b>Current Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE_LABEL__CURRENT_VALUE = LABEL__CURRENT_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Identifiable</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE_LABEL__IDENTIFIABLE = LABEL__IDENTIFIABLE;
+
+ /**
+ * The feature id for the '<em><b>Node</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE_LABEL__NODE = LABEL_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Node Label</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE_LABEL_FEATURE_COUNT = LABEL_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.graph.impl.StaticNodeLabelImpl <em>Static Node Label</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.StaticNodeLabelImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getStaticNodeLabel()
+ * @generated
+ */
+ int STATIC_NODE_LABEL = 8;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.graph.impl.UnresolvedIdentifiableImpl <em>Unresolved Identifiable</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.UnresolvedIdentifiableImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getUnresolvedIdentifiable()
+ * @generated
+ */
+ int UNRESOLVED_IDENTIFIABLE = 9;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.graph.impl.URIToIdentifiableMapEntryImpl <em>URI To Identifiable Map Entry</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.URIToIdentifiableMapEntryImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getURIToIdentifiableMapEntry()
+ * @generated
+ */
+ int URI_TO_IDENTIFIABLE_MAP_ENTRY = 10;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.graph.impl.EdgeLabelImpl <em>Edge Label</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.EdgeLabelImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getEdgeLabel()
+ * @generated
+ */
+ int EDGE_LABEL = 12;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.graph.impl.DynamicEdgeLabelImpl <em>Dynamic Edge Label</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.DynamicEdgeLabelImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getDynamicEdgeLabel()
+ * @generated
+ */
+ int DYNAMIC_EDGE_LABEL = 11;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.graph.impl.StaticEdgeLabelImpl <em>Static Edge Label</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.StaticEdgeLabelImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getStaticEdgeLabel()
+ * @generated
+ */
+ int STATIC_EDGE_LABEL = 13;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.graph.impl.URIToEdgeMapEntryImpl <em>URI To Edge Map Entry</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.URIToEdgeMapEntryImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getURIToEdgeMapEntry()
+ * @generated
+ */
+ int URI_TO_EDGE_MAP_ENTRY = 14;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.graph.impl.URIToNodeMapEntryImpl <em>URI To Node Map Entry</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.URIToNodeMapEntryImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getURIToNodeMapEntry()
+ * @generated
+ */
+ int URI_TO_NODE_MAP_ENTRY = 15;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.graph.impl.URIToLabelMapEntryImpl <em>URI To Label Map Entry</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.URIToLabelMapEntryImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getURIToLabelMapEntry()
+ * @generated
+ */
+ int URI_TO_LABEL_MAP_ENTRY = 16;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.graph.impl.URIToNodeLabelMapEntryImpl <em>URI To Node Label Map Entry</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.URIToNodeLabelMapEntryImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getURIToNodeLabelMapEntry()
+ * @generated
+ */
+ int URI_TO_NODE_LABEL_MAP_ENTRY = 17;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.graph.impl.StaticLabelImpl <em>Static Label</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.StaticLabelImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getStaticLabel()
+ * @generated
+ */
+ int STATIC_LABEL = 18;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATIC_NODE_LABEL__URI = NODE_LABEL__URI;
+
+ /**
+ * The feature id for the '<em><b>Type URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATIC_NODE_LABEL__TYPE_URI = NODE_LABEL__TYPE_URI;
+
+ /**
+ * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATIC_NODE_LABEL__DUBLIN_CORE = NODE_LABEL__DUBLIN_CORE;
+
+ /**
+ * The feature id for the '<em><b>URI Of Identifiable To Be Labeled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATIC_NODE_LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED = NODE_LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED;
+
+ /**
+ * The feature id for the '<em><b>Current Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATIC_NODE_LABEL__CURRENT_VALUE = NODE_LABEL__CURRENT_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Identifiable</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATIC_NODE_LABEL__IDENTIFIABLE = NODE_LABEL__IDENTIFIABLE;
+
+ /**
+ * The feature id for the '<em><b>Node</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATIC_NODE_LABEL__NODE = NODE_LABEL__NODE;
+
+ /**
+ * The number of structural features of the '<em>Static Node Label</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATIC_NODE_LABEL_FEATURE_COUNT = NODE_LABEL_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Scenario</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int UNRESOLVED_IDENTIFIABLE__SCENARIO = 0;
+
+ /**
+ * The feature id for the '<em><b>Model</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int UNRESOLVED_IDENTIFIABLE__MODEL = 1;
+
+ /**
+ * The feature id for the '<em><b>Graph</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int UNRESOLVED_IDENTIFIABLE__GRAPH = 2;
+
+ /**
+ * The feature id for the '<em><b>Identifiable</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int UNRESOLVED_IDENTIFIABLE__IDENTIFIABLE = 3;
+
+ /**
+ * The feature id for the '<em><b>Unresolved URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int UNRESOLVED_IDENTIFIABLE__UNRESOLVED_URI = 4;
+
+ /**
+ * The feature id for the '<em><b>Field Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int UNRESOLVED_IDENTIFIABLE__FIELD_NAME = 5;
+
+ /**
+ * The number of structural features of the '<em>Unresolved Identifiable</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int UNRESOLVED_IDENTIFIABLE_FEATURE_COUNT = 6;
+
+ /**
+ * The feature id for the '<em><b>Key</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int URI_TO_IDENTIFIABLE_MAP_ENTRY__KEY = 0;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int URI_TO_IDENTIFIABLE_MAP_ENTRY__VALUE = 1;
+
+ /**
+ * The number of structural features of the '<em>URI To Identifiable Map Entry</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int URI_TO_IDENTIFIABLE_MAP_ENTRY_FEATURE_COUNT = 2;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DYNAMIC_EDGE_LABEL__URI = DYNAMIC_LABEL__URI;
+
+ /**
+ * The feature id for the '<em><b>Type URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DYNAMIC_EDGE_LABEL__TYPE_URI = DYNAMIC_LABEL__TYPE_URI;
+
+ /**
+ * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DYNAMIC_EDGE_LABEL__DUBLIN_CORE = DYNAMIC_LABEL__DUBLIN_CORE;
+
+ /**
+ * The feature id for the '<em><b>URI Of Identifiable To Be Labeled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DYNAMIC_EDGE_LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED = DYNAMIC_LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED;
+
+ /**
+ * The feature id for the '<em><b>Current Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DYNAMIC_EDGE_LABEL__CURRENT_VALUE = DYNAMIC_LABEL__CURRENT_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Identifiable</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DYNAMIC_EDGE_LABEL__IDENTIFIABLE = DYNAMIC_LABEL__IDENTIFIABLE;
+
+ /**
+ * The feature id for the '<em><b>Next Value Valid</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DYNAMIC_EDGE_LABEL__NEXT_VALUE_VALID = DYNAMIC_LABEL__NEXT_VALUE_VALID;
+
+ /**
+ * The feature id for the '<em><b>Next Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DYNAMIC_EDGE_LABEL__NEXT_VALUE = DYNAMIC_LABEL__NEXT_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Decorator</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DYNAMIC_EDGE_LABEL__DECORATOR = DYNAMIC_LABEL__DECORATOR;
+
+ /**
+ * The feature id for the '<em><b>Edge</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DYNAMIC_EDGE_LABEL__EDGE = DYNAMIC_LABEL_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Dynamic Edge Label</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DYNAMIC_EDGE_LABEL_FEATURE_COUNT = DYNAMIC_LABEL_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE_LABEL__URI = LABEL__URI;
+
+ /**
+ * The feature id for the '<em><b>Type URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE_LABEL__TYPE_URI = LABEL__TYPE_URI;
+
+ /**
+ * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE_LABEL__DUBLIN_CORE = LABEL__DUBLIN_CORE;
+
+ /**
+ * The feature id for the '<em><b>URI Of Identifiable To Be Labeled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE_LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED = LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED;
+
+ /**
+ * The feature id for the '<em><b>Current Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE_LABEL__CURRENT_VALUE = LABEL__CURRENT_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Identifiable</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE_LABEL__IDENTIFIABLE = LABEL__IDENTIFIABLE;
+
+ /**
+ * The feature id for the '<em><b>Edge</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE_LABEL__EDGE = LABEL_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Edge Label</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE_LABEL_FEATURE_COUNT = LABEL_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATIC_EDGE_LABEL__URI = EDGE_LABEL__URI;
+
+ /**
+ * The feature id for the '<em><b>Type URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATIC_EDGE_LABEL__TYPE_URI = EDGE_LABEL__TYPE_URI;
+
+ /**
+ * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATIC_EDGE_LABEL__DUBLIN_CORE = EDGE_LABEL__DUBLIN_CORE;
+
+ /**
+ * The feature id for the '<em><b>URI Of Identifiable To Be Labeled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATIC_EDGE_LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED = EDGE_LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED;
+
+ /**
+ * The feature id for the '<em><b>Current Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATIC_EDGE_LABEL__CURRENT_VALUE = EDGE_LABEL__CURRENT_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Identifiable</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATIC_EDGE_LABEL__IDENTIFIABLE = EDGE_LABEL__IDENTIFIABLE;
+
+ /**
+ * The feature id for the '<em><b>Edge</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATIC_EDGE_LABEL__EDGE = EDGE_LABEL__EDGE;
+
+ /**
+ * The number of structural features of the '<em>Static Edge Label</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATIC_EDGE_LABEL_FEATURE_COUNT = EDGE_LABEL_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Key</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int URI_TO_EDGE_MAP_ENTRY__KEY = 0;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int URI_TO_EDGE_MAP_ENTRY__VALUE = 1;
+
+ /**
+ * The number of structural features of the '<em>URI To Edge Map Entry</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int URI_TO_EDGE_MAP_ENTRY_FEATURE_COUNT = 2;
+
+ /**
+ * The feature id for the '<em><b>Key</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int URI_TO_NODE_MAP_ENTRY__KEY = 0;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int URI_TO_NODE_MAP_ENTRY__VALUE = 1;
+
+ /**
+ * The number of structural features of the '<em>URI To Node Map Entry</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int URI_TO_NODE_MAP_ENTRY_FEATURE_COUNT = 2;
+
+ /**
+ * The feature id for the '<em><b>Key</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int URI_TO_LABEL_MAP_ENTRY__KEY = 0;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int URI_TO_LABEL_MAP_ENTRY__VALUE = 1;
+
+ /**
+ * The number of structural features of the '<em>URI To Label Map Entry</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int URI_TO_LABEL_MAP_ENTRY_FEATURE_COUNT = 2;
+
+ /**
+ * The feature id for the '<em><b>Key</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int URI_TO_NODE_LABEL_MAP_ENTRY__KEY = 0;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int URI_TO_NODE_LABEL_MAP_ENTRY__VALUE = 1;
+
+ /**
+ * The number of structural features of the '<em>URI To Node Label Map Entry</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int URI_TO_NODE_LABEL_MAP_ENTRY_FEATURE_COUNT = 2;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATIC_LABEL__URI = LABEL__URI;
+
+ /**
+ * The feature id for the '<em><b>Type URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATIC_LABEL__TYPE_URI = LABEL__TYPE_URI;
+
+ /**
+ * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATIC_LABEL__DUBLIN_CORE = LABEL__DUBLIN_CORE;
+
+ /**
+ * The feature id for the '<em><b>URI Of Identifiable To Be Labeled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATIC_LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED = LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED;
+
+ /**
+ * The feature id for the '<em><b>Current Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATIC_LABEL__CURRENT_VALUE = LABEL__CURRENT_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Identifiable</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATIC_LABEL__IDENTIFIABLE = LABEL__IDENTIFIABLE;
+
+ /**
+ * The number of structural features of the '<em>Static Label</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STATIC_LABEL_FEATURE_COUNT = LABEL_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.graph.impl.GraphPartitionerImpl <em>Partitioner</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.GraphPartitionerImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getGraphPartitioner()
+ * @generated
+ */
+ int GRAPH_PARTITIONER = 19;
+
+ /**
+ * The feature id for the '<em><b>Num Processes</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH_PARTITIONER__NUM_PROCESSES = 0;
+
+ /**
+ * The number of structural features of the '<em>Partitioner</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH_PARTITIONER_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.graph.impl.SimpleGraphPartitionerImpl <em>Simple Graph Partitioner</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.SimpleGraphPartitionerImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getSimpleGraphPartitioner()
+ * @generated
+ */
+ int SIMPLE_GRAPH_PARTITIONER = 20;
+
+ /**
+ * The feature id for the '<em><b>Num Processes</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIMPLE_GRAPH_PARTITIONER__NUM_PROCESSES = GRAPH_PARTITIONER__NUM_PROCESSES;
+
+ /**
+ * The number of structural features of the '<em>Simple Graph Partitioner</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SIMPLE_GRAPH_PARTITIONER_FEATURE_COUNT = GRAPH_PARTITIONER_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.graph.impl.ExchangeImpl <em>Exchange</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.ExchangeImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getExchange()
+ * @generated
+ */
+ int EXCHANGE = 21;
+
+ /**
+ * The feature id for the '<em><b>Other Label</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXCHANGE__OTHER_LABEL = CommonPackage.COMPARABLE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Count</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXCHANGE__COUNT = CommonPackage.COMPARABLE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXCHANGE__TYPE = CommonPackage.COMPARABLE_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Exchange</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXCHANGE_FEATURE_COUNT = CommonPackage.COMPARABLE_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.graph.impl.IntegrationLabelImpl <em>Integration Label</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.IntegrationLabelImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getIntegrationLabel()
+ * @generated
+ */
+ int INTEGRATION_LABEL = 22;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGRATION_LABEL__URI = DYNAMIC_NODE_LABEL__URI;
+
+ /**
+ * The feature id for the '<em><b>Type URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGRATION_LABEL__TYPE_URI = DYNAMIC_NODE_LABEL__TYPE_URI;
+
+ /**
+ * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGRATION_LABEL__DUBLIN_CORE = DYNAMIC_NODE_LABEL__DUBLIN_CORE;
+
+ /**
+ * The feature id for the '<em><b>URI Of Identifiable To Be Labeled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGRATION_LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED = DYNAMIC_NODE_LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED;
+
+ /**
+ * The feature id for the '<em><b>Current Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGRATION_LABEL__CURRENT_VALUE = DYNAMIC_NODE_LABEL__CURRENT_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Identifiable</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGRATION_LABEL__IDENTIFIABLE = DYNAMIC_NODE_LABEL__IDENTIFIABLE;
+
+ /**
+ * The feature id for the '<em><b>Next Value Valid</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGRATION_LABEL__NEXT_VALUE_VALID = DYNAMIC_NODE_LABEL__NEXT_VALUE_VALID;
+
+ /**
+ * The feature id for the '<em><b>Next Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGRATION_LABEL__NEXT_VALUE = DYNAMIC_NODE_LABEL__NEXT_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Decorator</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGRATION_LABEL__DECORATOR = DYNAMIC_NODE_LABEL__DECORATOR;
+
+ /**
+ * The feature id for the '<em><b>Node</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGRATION_LABEL__NODE = DYNAMIC_NODE_LABEL__NODE;
+
+ /**
+ * The feature id for the '<em><b>Delta Value</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGRATION_LABEL__DELTA_VALUE = DYNAMIC_NODE_LABEL_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Temp Value</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGRATION_LABEL__TEMP_VALUE = DYNAMIC_NODE_LABEL_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Probe Value</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGRATION_LABEL__PROBE_VALUE = DYNAMIC_NODE_LABEL_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Error Scale</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGRATION_LABEL__ERROR_SCALE = DYNAMIC_NODE_LABEL_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Identifier</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGRATION_LABEL__IDENTIFIER = DYNAMIC_NODE_LABEL_FEATURE_COUNT + 4;
+
+ /**
+ * The number of structural features of the '<em>Integration Label</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGRATION_LABEL_FEATURE_COUNT = DYNAMIC_NODE_LABEL_FEATURE_COUNT + 5;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.graph.impl.IntegrationLabelValueImpl <em>Integration Label Value</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.IntegrationLabelValueImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getIntegrationLabelValue()
+ * @generated
+ */
+ int INTEGRATION_LABEL_VALUE = 23;
+
+ /**
+ * The feature id for the '<em><b>Arrivals</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGRATION_LABEL_VALUE__ARRIVALS = LABEL_VALUE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Departures</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGRATION_LABEL_VALUE__DEPARTURES = LABEL_VALUE_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Integration Label Value</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGRATION_LABEL_VALUE_FEATURE_COUNT = LABEL_VALUE_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.graph.ExchangeType <em>Exchange Type</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.ExchangeType
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getExchangeType()
+ * @generated
+ */
+ int EXCHANGE_TYPE = 24;
+
+ /**
+ * The meta object id for the '<em>Illegal Argument Exception</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.IllegalArgumentException
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getIllegalArgumentException()
+ * @generated
+ */
+ int ILLEGAL_ARGUMENT_EXCEPTION = 25;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.graph.DynamicLabel <em>Dynamic Label</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Dynamic Label</em>'.
+ * @see org.eclipse.stem.core.graph.DynamicLabel
+ * @generated
+ */
+ EClass getDynamicLabel();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.graph.DynamicLabel#isNextValueValid <em>Next Value Valid</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Next Value Valid</em>'.
+ * @see org.eclipse.stem.core.graph.DynamicLabel#isNextValueValid()
+ * @see #getDynamicLabel()
+ * @generated
+ */
+ EAttribute getDynamicLabel_NextValueValid();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.stem.core.graph.DynamicLabel#getNextValue <em>Next Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Next Value</em>'.
+ * @see org.eclipse.stem.core.graph.DynamicLabel#getNextValue()
+ * @see #getDynamicLabel()
+ * @generated
+ */
+ EReference getDynamicLabel_NextValue();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.core.graph.DynamicLabel#getDecorator <em>Decorator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Decorator</em>'.
+ * @see org.eclipse.stem.core.graph.DynamicLabel#getDecorator()
+ * @see #getDynamicLabel()
+ * @generated
+ */
+ EReference getDynamicLabel_Decorator();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.graph.DynamicNodeLabel <em>Dynamic Node Label</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Dynamic Node Label</em>'.
+ * @see org.eclipse.stem.core.graph.DynamicNodeLabel
+ * @generated
+ */
+ EClass getDynamicNodeLabel();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.graph.Edge <em>Edge</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Edge</em>'.
+ * @see org.eclipse.stem.core.graph.Edge
+ * @generated
+ */
+ EClass getEdge();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.core.graph.Edge#getA <em>A</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>A</em>'.
+ * @see org.eclipse.stem.core.graph.Edge#getA()
+ * @see #getEdge()
+ * @generated
+ */
+ EReference getEdge_A();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.graph.Edge#getNodeAURI <em>Node AURI</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Node AURI</em>'.
+ * @see org.eclipse.stem.core.graph.Edge#getNodeAURI()
+ * @see #getEdge()
+ * @generated
+ */
+ EAttribute getEdge_NodeAURI();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.core.graph.Edge#getB <em>B</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>B</em>'.
+ * @see org.eclipse.stem.core.graph.Edge#getB()
+ * @see #getEdge()
+ * @generated
+ */
+ EReference getEdge_B();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.graph.Edge#getNodeBURI <em>Node BURI</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Node BURI</em>'.
+ * @see org.eclipse.stem.core.graph.Edge#getNodeBURI()
+ * @see #getEdge()
+ * @generated
+ */
+ EAttribute getEdge_NodeBURI();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.stem.core.graph.Edge#getLabel <em>Label</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Label</em>'.
+ * @see org.eclipse.stem.core.graph.Edge#getLabel()
+ * @see #getEdge()
+ * @generated
+ */
+ EReference getEdge_Label();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.graph.Edge#isDirected <em>Directed</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Directed</em>'.
+ * @see org.eclipse.stem.core.graph.Edge#isDirected()
+ * @see #getEdge()
+ * @generated
+ */
+ EAttribute getEdge_Directed();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.graph.Graph <em>Graph</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Graph</em>'.
+ * @see org.eclipse.stem.core.graph.Graph
+ * @generated
+ */
+ EClass getGraph();
+
+ /**
+ * Returns the meta object for the map '{@link org.eclipse.stem.core.graph.Graph#getGraphLabels <em>Graph Labels</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the map '<em>Graph Labels</em>'.
+ * @see org.eclipse.stem.core.graph.Graph#getGraphLabels()
+ * @see #getGraph()
+ * @generated
+ */
+ EReference getGraph_GraphLabels();
+
+ /**
+ * Returns the meta object for the map '{@link org.eclipse.stem.core.graph.Graph#getNodeLabels <em>Node Labels</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the map '<em>Node Labels</em>'.
+ * @see org.eclipse.stem.core.graph.Graph#getNodeLabels()
+ * @see #getGraph()
+ * @generated
+ */
+ EReference getGraph_NodeLabels();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.stem.core.graph.Graph#getDynamicLabels <em>Dynamic Labels</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Dynamic Labels</em>'.
+ * @see org.eclipse.stem.core.graph.Graph#getDynamicLabels()
+ * @see #getGraph()
+ * @generated
+ */
+ EReference getGraph_DynamicLabels();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.graph.Graph#getNumEdges <em>Num Edges</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Num Edges</em>'.
+ * @see org.eclipse.stem.core.graph.Graph#getNumEdges()
+ * @see #getGraph()
+ * @generated
+ */
+ EAttribute getGraph_NumEdges();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.graph.Graph#getNumNodes <em>Num Nodes</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Num Nodes</em>'.
+ * @see org.eclipse.stem.core.graph.Graph#getNumNodes()
+ * @see #getGraph()
+ * @generated
+ */
+ EAttribute getGraph_NumNodes();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.graph.Graph#getNumGraphLabels <em>Num Graph Labels</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Num Graph Labels</em>'.
+ * @see org.eclipse.stem.core.graph.Graph#getNumGraphLabels()
+ * @see #getGraph()
+ * @generated
+ */
+ EAttribute getGraph_NumGraphLabels();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.graph.Graph#getNumNodeLabels <em>Num Node Labels</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Num Node Labels</em>'.
+ * @see org.eclipse.stem.core.graph.Graph#getNumNodeLabels()
+ * @see #getGraph()
+ * @generated
+ */
+ EAttribute getGraph_NumNodeLabels();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.graph.Graph#getNumDynamicLabels <em>Num Dynamic Labels</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Num Dynamic Labels</em>'.
+ * @see org.eclipse.stem.core.graph.Graph#getNumDynamicLabels()
+ * @see #getGraph()
+ * @generated
+ */
+ EAttribute getGraph_NumDynamicLabels();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.stem.core.graph.Graph#getUnresolvedIdentifiables <em>Unresolved Identifiables</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Unresolved Identifiables</em>'.
+ * @see org.eclipse.stem.core.graph.Graph#getUnresolvedIdentifiables()
+ * @see #getGraph()
+ * @generated
+ */
+ EReference getGraph_UnresolvedIdentifiables();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.stem.core.graph.Graph#getDecorators <em>Decorators</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Decorators</em>'.
+ * @see org.eclipse.stem.core.graph.Graph#getDecorators()
+ * @see #getGraph()
+ * @generated
+ */
+ EReference getGraph_Decorators();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.stem.core.graph.Graph#getTime <em>Time</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Time</em>'.
+ * @see org.eclipse.stem.core.graph.Graph#getTime()
+ * @see #getGraph()
+ * @generated
+ */
+ EReference getGraph_Time();
+
+ /**
+ * Returns the meta object for the map '{@link org.eclipse.stem.core.graph.Graph#getNodes <em>Nodes</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the map '<em>Nodes</em>'.
+ * @see org.eclipse.stem.core.graph.Graph#getNodes()
+ * @see #getGraph()
+ * @generated
+ */
+ EReference getGraph_Nodes();
+
+ /**
+ * Returns the meta object for the map '{@link org.eclipse.stem.core.graph.Graph#getEdges <em>Edges</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the map '<em>Edges</em>'.
+ * @see org.eclipse.stem.core.graph.Graph#getEdges()
+ * @see #getGraph()
+ * @generated
+ */
+ EReference getGraph_Edges();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.graph.Label <em>Label</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Label</em>'.
+ * @see org.eclipse.stem.core.graph.Label
+ * @generated
+ */
+ EClass getLabel();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.graph.Label#getURIOfIdentifiableToBeLabeled <em>URI Of Identifiable To Be Labeled</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>URI Of Identifiable To Be Labeled</em>'.
+ * @see org.eclipse.stem.core.graph.Label#getURIOfIdentifiableToBeLabeled()
+ * @see #getLabel()
+ * @generated
+ */
+ EAttribute getLabel_URIOfIdentifiableToBeLabeled();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.stem.core.graph.Label#getCurrentValue <em>Current Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Current Value</em>'.
+ * @see org.eclipse.stem.core.graph.Label#getCurrentValue()
+ * @see #getLabel()
+ * @generated
+ */
+ EReference getLabel_CurrentValue();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.core.graph.Label#getIdentifiable <em>Identifiable</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Identifiable</em>'.
+ * @see org.eclipse.stem.core.graph.Label#getIdentifiable()
+ * @see #getLabel()
+ * @generated
+ */
+ EReference getLabel_Identifiable();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.graph.LabelValue <em>Label Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Label Value</em>'.
+ * @see org.eclipse.stem.core.graph.LabelValue
+ * @generated
+ */
+ EClass getLabelValue();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.graph.Node <em>Node</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Node</em>'.
+ * @see org.eclipse.stem.core.graph.Node
+ * @generated
+ */
+ EClass getNode();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.stem.core.graph.Node#getEdges <em>Edges</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Edges</em>'.
+ * @see org.eclipse.stem.core.graph.Node#getEdges()
+ * @see #getNode()
+ * @generated
+ */
+ EReference getNode_Edges();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.stem.core.graph.Node#getLabels <em>Labels</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Labels</em>'.
+ * @see org.eclipse.stem.core.graph.Node#getLabels()
+ * @see #getNode()
+ * @generated
+ */
+ EReference getNode_Labels();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.graph.NodeLabel <em>Node Label</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Node Label</em>'.
+ * @see org.eclipse.stem.core.graph.NodeLabel
+ * @generated
+ */
+ EClass getNodeLabel();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.core.graph.NodeLabel#getNode <em>Node</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Node</em>'.
+ * @see org.eclipse.stem.core.graph.NodeLabel#getNode()
+ * @see #getNodeLabel()
+ * @generated
+ */
+ EReference getNodeLabel_Node();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.graph.StaticNodeLabel <em>Static Node Label</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Static Node Label</em>'.
+ * @see org.eclipse.stem.core.graph.StaticNodeLabel
+ * @generated
+ */
+ EClass getStaticNodeLabel();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.graph.UnresolvedIdentifiable <em>Unresolved Identifiable</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Unresolved Identifiable</em>'.
+ * @see org.eclipse.stem.core.graph.UnresolvedIdentifiable
+ * @generated
+ */
+ EClass getUnresolvedIdentifiable();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.core.graph.UnresolvedIdentifiable#getScenario <em>Scenario</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Scenario</em>'.
+ * @see org.eclipse.stem.core.graph.UnresolvedIdentifiable#getScenario()
+ * @see #getUnresolvedIdentifiable()
+ * @generated
+ */
+ EReference getUnresolvedIdentifiable_Scenario();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.core.graph.UnresolvedIdentifiable#getModel <em>Model</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Model</em>'.
+ * @see org.eclipse.stem.core.graph.UnresolvedIdentifiable#getModel()
+ * @see #getUnresolvedIdentifiable()
+ * @generated
+ */
+ EReference getUnresolvedIdentifiable_Model();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.core.graph.UnresolvedIdentifiable#getGraph <em>Graph</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Graph</em>'.
+ * @see org.eclipse.stem.core.graph.UnresolvedIdentifiable#getGraph()
+ * @see #getUnresolvedIdentifiable()
+ * @generated
+ */
+ EReference getUnresolvedIdentifiable_Graph();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.core.graph.UnresolvedIdentifiable#getIdentifiable <em>Identifiable</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Identifiable</em>'.
+ * @see org.eclipse.stem.core.graph.UnresolvedIdentifiable#getIdentifiable()
+ * @see #getUnresolvedIdentifiable()
+ * @generated
+ */
+ EReference getUnresolvedIdentifiable_Identifiable();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.graph.UnresolvedIdentifiable#getUnresolvedURI <em>Unresolved URI</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Unresolved URI</em>'.
+ * @see org.eclipse.stem.core.graph.UnresolvedIdentifiable#getUnresolvedURI()
+ * @see #getUnresolvedIdentifiable()
+ * @generated
+ */
+ EAttribute getUnresolvedIdentifiable_UnresolvedURI();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.graph.UnresolvedIdentifiable#getFieldName <em>Field Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Field Name</em>'.
+ * @see org.eclipse.stem.core.graph.UnresolvedIdentifiable#getFieldName()
+ * @see #getUnresolvedIdentifiable()
+ * @generated
+ */
+ EAttribute getUnresolvedIdentifiable_FieldName();
+
+ /**
+ * Returns the meta object for class '{@link java.util.Map.Entry <em>URI To Identifiable Map Entry</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>URI To Identifiable Map Entry</em>'.
+ * @see java.util.Map.Entry
+ * @model keyDataType="org.eclipse.stem.core.common.URI"
+ * valueType="org.eclipse.stem.core.common.Identifiable" valueContainment="true"
+ * @generated
+ */
+ EClass getURIToIdentifiableMapEntry();
+
+ /**
+ * Returns the meta object for the attribute '{@link java.util.Map.Entry <em>Key</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Key</em>'.
+ * @see java.util.Map.Entry
+ * @see #getURIToIdentifiableMapEntry()
+ * @generated
+ */
+ EAttribute getURIToIdentifiableMapEntry_Key();
+
+ /**
+ * Returns the meta object for the containment reference '{@link java.util.Map.Entry <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Value</em>'.
+ * @see java.util.Map.Entry
+ * @see #getURIToIdentifiableMapEntry()
+ * @generated
+ */
+ EReference getURIToIdentifiableMapEntry_Value();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.graph.DynamicEdgeLabel <em>Dynamic Edge Label</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Dynamic Edge Label</em>'.
+ * @see org.eclipse.stem.core.graph.DynamicEdgeLabel
+ * @generated
+ */
+ EClass getDynamicEdgeLabel();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.graph.EdgeLabel <em>Edge Label</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Edge Label</em>'.
+ * @see org.eclipse.stem.core.graph.EdgeLabel
+ * @generated
+ */
+ EClass getEdgeLabel();
+
+ /**
+ * Returns the meta object for the container reference '{@link org.eclipse.stem.core.graph.EdgeLabel#getEdge <em>Edge</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the container reference '<em>Edge</em>'.
+ * @see org.eclipse.stem.core.graph.EdgeLabel#getEdge()
+ * @see #getEdgeLabel()
+ * @generated
+ */
+ EReference getEdgeLabel_Edge();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.graph.StaticEdgeLabel <em>Static Edge Label</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Static Edge Label</em>'.
+ * @see org.eclipse.stem.core.graph.StaticEdgeLabel
+ * @generated
+ */
+ EClass getStaticEdgeLabel();
+
+ /**
+ * Returns the meta object for class '{@link java.util.Map.Entry <em>URI To Edge Map Entry</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>URI To Edge Map Entry</em>'.
+ * @see java.util.Map.Entry
+ * @model keyDataType="org.eclipse.stem.core.common.URI"
+ * valueType="org.eclipse.stem.core.graph.Edge" valueContainment="true"
+ * @generated
+ */
+ EClass getURIToEdgeMapEntry();
+
+ /**
+ * Returns the meta object for the attribute '{@link java.util.Map.Entry <em>Key</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Key</em>'.
+ * @see java.util.Map.Entry
+ * @see #getURIToEdgeMapEntry()
+ * @generated
+ */
+ EAttribute getURIToEdgeMapEntry_Key();
+
+ /**
+ * Returns the meta object for the containment reference '{@link java.util.Map.Entry <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Value</em>'.
+ * @see java.util.Map.Entry
+ * @see #getURIToEdgeMapEntry()
+ * @generated
+ */
+ EReference getURIToEdgeMapEntry_Value();
+
+ /**
+ * Returns the meta object for class '{@link java.util.Map.Entry <em>URI To Node Map Entry</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>URI To Node Map Entry</em>'.
+ * @see java.util.Map.Entry
+ * @model keyDataType="org.eclipse.stem.core.common.URI"
+ * valueType="org.eclipse.stem.core.graph.Node" valueContainment="true"
+ * @generated
+ */
+ EClass getURIToNodeMapEntry();
+
+ /**
+ * Returns the meta object for the attribute '{@link java.util.Map.Entry <em>Key</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Key</em>'.
+ * @see java.util.Map.Entry
+ * @see #getURIToNodeMapEntry()
+ * @generated
+ */
+ EAttribute getURIToNodeMapEntry_Key();
+
+ /**
+ * Returns the meta object for the containment reference '{@link java.util.Map.Entry <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Value</em>'.
+ * @see java.util.Map.Entry
+ * @see #getURIToNodeMapEntry()
+ * @generated
+ */
+ EReference getURIToNodeMapEntry_Value();
+
+ /**
+ * Returns the meta object for class '{@link java.util.Map.Entry <em>URI To Label Map Entry</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>URI To Label Map Entry</em>'.
+ * @see java.util.Map.Entry
+ * @model keyDataType="org.eclipse.stem.core.common.URI"
+ * valueType="org.eclipse.stem.core.graph.Label" valueContainment="true"
+ * @generated
+ */
+ EClass getURIToLabelMapEntry();
+
+ /**
+ * Returns the meta object for the attribute '{@link java.util.Map.Entry <em>Key</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Key</em>'.
+ * @see java.util.Map.Entry
+ * @see #getURIToLabelMapEntry()
+ * @generated
+ */
+ EAttribute getURIToLabelMapEntry_Key();
+
+ /**
+ * Returns the meta object for the containment reference '{@link java.util.Map.Entry <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Value</em>'.
+ * @see java.util.Map.Entry
+ * @see #getURIToLabelMapEntry()
+ * @generated
+ */
+ EReference getURIToLabelMapEntry_Value();
+
+ /**
+ * Returns the meta object for class '{@link java.util.Map.Entry <em>URI To Node Label Map Entry</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>URI To Node Label Map Entry</em>'.
+ * @see java.util.Map.Entry
+ * @model keyDataType="org.eclipse.stem.core.common.URI"
+ * valueType="org.eclipse.stem.core.graph.NodeLabel" valueContainment="true"
+ * @generated
+ */
+ EClass getURIToNodeLabelMapEntry();
+
+ /**
+ * Returns the meta object for the attribute '{@link java.util.Map.Entry <em>Key</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Key</em>'.
+ * @see java.util.Map.Entry
+ * @see #getURIToNodeLabelMapEntry()
+ * @generated
+ */
+ EAttribute getURIToNodeLabelMapEntry_Key();
+
+ /**
+ * Returns the meta object for the containment reference '{@link java.util.Map.Entry <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Value</em>'.
+ * @see java.util.Map.Entry
+ * @see #getURIToNodeLabelMapEntry()
+ * @generated
+ */
+ EReference getURIToNodeLabelMapEntry_Value();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.graph.StaticLabel <em>Static Label</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Static Label</em>'.
+ * @see org.eclipse.stem.core.graph.StaticLabel
+ * @generated
+ */
+ EClass getStaticLabel();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.graph.GraphPartitioner <em>Partitioner</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Partitioner</em>'.
+ * @see org.eclipse.stem.core.graph.GraphPartitioner
+ * @generated
+ */
+ EClass getGraphPartitioner();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.graph.GraphPartitioner#getNumProcesses <em>Num Processes</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Num Processes</em>'.
+ * @see org.eclipse.stem.core.graph.GraphPartitioner#getNumProcesses()
+ * @see #getGraphPartitioner()
+ * @generated
+ */
+ EAttribute getGraphPartitioner_NumProcesses();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.graph.SimpleGraphPartitioner <em>Simple Graph Partitioner</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Simple Graph Partitioner</em>'.
+ * @see org.eclipse.stem.core.graph.SimpleGraphPartitioner
+ * @generated
+ */
+ EClass getSimpleGraphPartitioner();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.graph.Exchange <em>Exchange</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Exchange</em>'.
+ * @see org.eclipse.stem.core.graph.Exchange
+ * @generated
+ */
+ EClass getExchange();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.core.graph.Exchange#getOtherLabel <em>Other Label</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Other Label</em>'.
+ * @see org.eclipse.stem.core.graph.Exchange#getOtherLabel()
+ * @see #getExchange()
+ * @generated
+ */
+ EReference getExchange_OtherLabel();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.graph.Exchange#getCount <em>Count</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Count</em>'.
+ * @see org.eclipse.stem.core.graph.Exchange#getCount()
+ * @see #getExchange()
+ * @generated
+ */
+ EAttribute getExchange_Count();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.graph.Exchange#getType <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Type</em>'.
+ * @see org.eclipse.stem.core.graph.Exchange#getType()
+ * @see #getExchange()
+ * @generated
+ */
+ EAttribute getExchange_Type();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.graph.IntegrationLabel <em>Integration Label</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Integration Label</em>'.
+ * @see org.eclipse.stem.core.graph.IntegrationLabel
+ * @generated
+ */
+ EClass getIntegrationLabel();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.core.graph.IntegrationLabel#getDeltaValue <em>Delta Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Delta Value</em>'.
+ * @see org.eclipse.stem.core.graph.IntegrationLabel#getDeltaValue()
+ * @see #getIntegrationLabel()
+ * @generated
+ */
+ EReference getIntegrationLabel_DeltaValue();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.core.graph.IntegrationLabel#getTempValue <em>Temp Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Temp Value</em>'.
+ * @see org.eclipse.stem.core.graph.IntegrationLabel#getTempValue()
+ * @see #getIntegrationLabel()
+ * @generated
+ */
+ EReference getIntegrationLabel_TempValue();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.core.graph.IntegrationLabel#getProbeValue <em>Probe Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Probe Value</em>'.
+ * @see org.eclipse.stem.core.graph.IntegrationLabel#getProbeValue()
+ * @see #getIntegrationLabel()
+ * @generated
+ */
+ EReference getIntegrationLabel_ProbeValue();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.core.graph.IntegrationLabel#getErrorScale <em>Error Scale</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Error Scale</em>'.
+ * @see org.eclipse.stem.core.graph.IntegrationLabel#getErrorScale()
+ * @see #getIntegrationLabel()
+ * @generated
+ */
+ EReference getIntegrationLabel_ErrorScale();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.graph.IntegrationLabel#getIdentifier <em>Identifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Identifier</em>'.
+ * @see org.eclipse.stem.core.graph.IntegrationLabel#getIdentifier()
+ * @see #getIntegrationLabel()
+ * @generated
+ */
+ EAttribute getIntegrationLabel_Identifier();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.graph.IntegrationLabelValue <em>Integration Label Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Integration Label Value</em>'.
+ * @see org.eclipse.stem.core.graph.IntegrationLabelValue
+ * @generated
+ */
+ EClass getIntegrationLabelValue();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.stem.core.graph.IntegrationLabelValue#getArrivals <em>Arrivals</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Arrivals</em>'.
+ * @see org.eclipse.stem.core.graph.IntegrationLabelValue#getArrivals()
+ * @see #getIntegrationLabelValue()
+ * @generated
+ */
+ EReference getIntegrationLabelValue_Arrivals();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.stem.core.graph.IntegrationLabelValue#getDepartures <em>Departures</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Departures</em>'.
+ * @see org.eclipse.stem.core.graph.IntegrationLabelValue#getDepartures()
+ * @see #getIntegrationLabelValue()
+ * @generated
+ */
+ EReference getIntegrationLabelValue_Departures();
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.stem.core.graph.ExchangeType <em>Exchange Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Exchange Type</em>'.
+ * @see org.eclipse.stem.core.graph.ExchangeType
+ * @generated
+ */
+ EEnum getExchangeType();
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.IllegalArgumentException <em>Illegal Argument Exception</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Illegal Argument Exception</em>'.
+ * @see java.lang.IllegalArgumentException
+ * @model instanceClass="java.lang.IllegalArgumentException"
+ * @generated
+ */
+ EDataType getIllegalArgumentException();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ GraphFactory getGraphFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.graph.impl.DynamicLabelImpl <em>Dynamic Label</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.DynamicLabelImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getDynamicLabel()
+ * @generated
+ */
+ EClass DYNAMIC_LABEL = eINSTANCE.getDynamicLabel();
+
+ /**
+ * The meta object literal for the '<em><b>Next Value Valid</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DYNAMIC_LABEL__NEXT_VALUE_VALID = eINSTANCE.getDynamicLabel_NextValueValid();
+
+ /**
+ * The meta object literal for the '<em><b>Next Value</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DYNAMIC_LABEL__NEXT_VALUE = eINSTANCE.getDynamicLabel_NextValue();
+
+ /**
+ * The meta object literal for the '<em><b>Decorator</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DYNAMIC_LABEL__DECORATOR = eINSTANCE.getDynamicLabel_Decorator();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.graph.impl.DynamicNodeLabelImpl <em>Dynamic Node Label</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.DynamicNodeLabelImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getDynamicNodeLabel()
+ * @generated
+ */
+ EClass DYNAMIC_NODE_LABEL = eINSTANCE.getDynamicNodeLabel();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.graph.impl.EdgeImpl <em>Edge</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.EdgeImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getEdge()
+ * @generated
+ */
+ EClass EDGE = eINSTANCE.getEdge();
+
+ /**
+ * The meta object literal for the '<em><b>A</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference EDGE__A = eINSTANCE.getEdge_A();
+
+ /**
+ * The meta object literal for the '<em><b>Node AURI</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute EDGE__NODE_AURI = eINSTANCE.getEdge_NodeAURI();
+
+ /**
+ * The meta object literal for the '<em><b>B</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference EDGE__B = eINSTANCE.getEdge_B();
+
+ /**
+ * The meta object literal for the '<em><b>Node BURI</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute EDGE__NODE_BURI = eINSTANCE.getEdge_NodeBURI();
+
+ /**
+ * The meta object literal for the '<em><b>Label</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference EDGE__LABEL = eINSTANCE.getEdge_Label();
+
+ /**
+ * The meta object literal for the '<em><b>Directed</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute EDGE__DIRECTED = eINSTANCE.getEdge_Directed();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.graph.impl.GraphImpl <em>Graph</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.GraphImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getGraph()
+ * @generated
+ */
+ EClass GRAPH = eINSTANCE.getGraph();
+
+ /**
+ * The meta object literal for the '<em><b>Graph Labels</b></em>' map feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference GRAPH__GRAPH_LABELS = eINSTANCE.getGraph_GraphLabels();
+
+ /**
+ * The meta object literal for the '<em><b>Node Labels</b></em>' map feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference GRAPH__NODE_LABELS = eINSTANCE.getGraph_NodeLabels();
+
+ /**
+ * The meta object literal for the '<em><b>Dynamic Labels</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference GRAPH__DYNAMIC_LABELS = eINSTANCE.getGraph_DynamicLabels();
+
+ /**
+ * The meta object literal for the '<em><b>Num Edges</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute GRAPH__NUM_EDGES = eINSTANCE.getGraph_NumEdges();
+
+ /**
+ * The meta object literal for the '<em><b>Num Nodes</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute GRAPH__NUM_NODES = eINSTANCE.getGraph_NumNodes();
+
+ /**
+ * The meta object literal for the '<em><b>Num Graph Labels</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute GRAPH__NUM_GRAPH_LABELS = eINSTANCE.getGraph_NumGraphLabels();
+
+ /**
+ * The meta object literal for the '<em><b>Num Node Labels</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute GRAPH__NUM_NODE_LABELS = eINSTANCE.getGraph_NumNodeLabels();
+
+ /**
+ * The meta object literal for the '<em><b>Num Dynamic Labels</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute GRAPH__NUM_DYNAMIC_LABELS = eINSTANCE.getGraph_NumDynamicLabels();
+
+ /**
+ * The meta object literal for the '<em><b>Unresolved Identifiables</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference GRAPH__UNRESOLVED_IDENTIFIABLES = eINSTANCE.getGraph_UnresolvedIdentifiables();
+
+ /**
+ * The meta object literal for the '<em><b>Decorators</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference GRAPH__DECORATORS = eINSTANCE.getGraph_Decorators();
+
+ /**
+ * The meta object literal for the '<em><b>Time</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference GRAPH__TIME = eINSTANCE.getGraph_Time();
+
+ /**
+ * The meta object literal for the '<em><b>Nodes</b></em>' map feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference GRAPH__NODES = eINSTANCE.getGraph_Nodes();
+
+ /**
+ * The meta object literal for the '<em><b>Edges</b></em>' map feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference GRAPH__EDGES = eINSTANCE.getGraph_Edges();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.graph.impl.LabelImpl <em>Label</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.LabelImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getLabel()
+ * @generated
+ */
+ EClass LABEL = eINSTANCE.getLabel();
+
+ /**
+ * The meta object literal for the '<em><b>URI Of Identifiable To Be Labeled</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED = eINSTANCE.getLabel_URIOfIdentifiableToBeLabeled();
+
+ /**
+ * The meta object literal for the '<em><b>Current Value</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LABEL__CURRENT_VALUE = eINSTANCE.getLabel_CurrentValue();
+
+ /**
+ * The meta object literal for the '<em><b>Identifiable</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference LABEL__IDENTIFIABLE = eINSTANCE.getLabel_Identifiable();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.graph.impl.LabelValueImpl <em>Label Value</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.LabelValueImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getLabelValue()
+ * @generated
+ */
+ EClass LABEL_VALUE = eINSTANCE.getLabelValue();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.graph.impl.NodeImpl <em>Node</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.NodeImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getNode()
+ * @generated
+ */
+ EClass NODE = eINSTANCE.getNode();
+
+ /**
+ * The meta object literal for the '<em><b>Edges</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference NODE__EDGES = eINSTANCE.getNode_Edges();
+
+ /**
+ * The meta object literal for the '<em><b>Labels</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference NODE__LABELS = eINSTANCE.getNode_Labels();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.graph.impl.NodeLabelImpl <em>Node Label</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.NodeLabelImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getNodeLabel()
+ * @generated
+ */
+ EClass NODE_LABEL = eINSTANCE.getNodeLabel();
+
+ /**
+ * The meta object literal for the '<em><b>Node</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference NODE_LABEL__NODE = eINSTANCE.getNodeLabel_Node();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.graph.impl.StaticNodeLabelImpl <em>Static Node Label</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.StaticNodeLabelImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getStaticNodeLabel()
+ * @generated
+ */
+ EClass STATIC_NODE_LABEL = eINSTANCE.getStaticNodeLabel();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.graph.impl.UnresolvedIdentifiableImpl <em>Unresolved Identifiable</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.UnresolvedIdentifiableImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getUnresolvedIdentifiable()
+ * @generated
+ */
+ EClass UNRESOLVED_IDENTIFIABLE = eINSTANCE.getUnresolvedIdentifiable();
+
+ /**
+ * The meta object literal for the '<em><b>Scenario</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference UNRESOLVED_IDENTIFIABLE__SCENARIO = eINSTANCE.getUnresolvedIdentifiable_Scenario();
+
+ /**
+ * The meta object literal for the '<em><b>Model</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference UNRESOLVED_IDENTIFIABLE__MODEL = eINSTANCE.getUnresolvedIdentifiable_Model();
+
+ /**
+ * The meta object literal for the '<em><b>Graph</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference UNRESOLVED_IDENTIFIABLE__GRAPH = eINSTANCE.getUnresolvedIdentifiable_Graph();
+
+ /**
+ * The meta object literal for the '<em><b>Identifiable</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference UNRESOLVED_IDENTIFIABLE__IDENTIFIABLE = eINSTANCE.getUnresolvedIdentifiable_Identifiable();
+
+ /**
+ * The meta object literal for the '<em><b>Unresolved URI</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute UNRESOLVED_IDENTIFIABLE__UNRESOLVED_URI = eINSTANCE.getUnresolvedIdentifiable_UnresolvedURI();
+
+ /**
+ * The meta object literal for the '<em><b>Field Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute UNRESOLVED_IDENTIFIABLE__FIELD_NAME = eINSTANCE.getUnresolvedIdentifiable_FieldName();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.graph.impl.URIToIdentifiableMapEntryImpl <em>URI To Identifiable Map Entry</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.URIToIdentifiableMapEntryImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getURIToIdentifiableMapEntry()
+ * @generated
+ */
+ EClass URI_TO_IDENTIFIABLE_MAP_ENTRY = eINSTANCE.getURIToIdentifiableMapEntry();
+
+ /**
+ * The meta object literal for the '<em><b>Key</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute URI_TO_IDENTIFIABLE_MAP_ENTRY__KEY = eINSTANCE.getURIToIdentifiableMapEntry_Key();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference URI_TO_IDENTIFIABLE_MAP_ENTRY__VALUE = eINSTANCE.getURIToIdentifiableMapEntry_Value();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.graph.impl.DynamicEdgeLabelImpl <em>Dynamic Edge Label</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.DynamicEdgeLabelImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getDynamicEdgeLabel()
+ * @generated
+ */
+ EClass DYNAMIC_EDGE_LABEL = eINSTANCE.getDynamicEdgeLabel();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.graph.impl.EdgeLabelImpl <em>Edge Label</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.EdgeLabelImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getEdgeLabel()
+ * @generated
+ */
+ EClass EDGE_LABEL = eINSTANCE.getEdgeLabel();
+
+ /**
+ * The meta object literal for the '<em><b>Edge</b></em>' container reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference EDGE_LABEL__EDGE = eINSTANCE.getEdgeLabel_Edge();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.graph.impl.StaticEdgeLabelImpl <em>Static Edge Label</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.StaticEdgeLabelImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getStaticEdgeLabel()
+ * @generated
+ */
+ EClass STATIC_EDGE_LABEL = eINSTANCE.getStaticEdgeLabel();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.graph.impl.URIToEdgeMapEntryImpl <em>URI To Edge Map Entry</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.URIToEdgeMapEntryImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getURIToEdgeMapEntry()
+ * @generated
+ */
+ EClass URI_TO_EDGE_MAP_ENTRY = eINSTANCE.getURIToEdgeMapEntry();
+
+ /**
+ * The meta object literal for the '<em><b>Key</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute URI_TO_EDGE_MAP_ENTRY__KEY = eINSTANCE.getURIToEdgeMapEntry_Key();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference URI_TO_EDGE_MAP_ENTRY__VALUE = eINSTANCE.getURIToEdgeMapEntry_Value();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.graph.impl.URIToNodeMapEntryImpl <em>URI To Node Map Entry</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.URIToNodeMapEntryImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getURIToNodeMapEntry()
+ * @generated
+ */
+ EClass URI_TO_NODE_MAP_ENTRY = eINSTANCE.getURIToNodeMapEntry();
+
+ /**
+ * The meta object literal for the '<em><b>Key</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute URI_TO_NODE_MAP_ENTRY__KEY = eINSTANCE.getURIToNodeMapEntry_Key();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference URI_TO_NODE_MAP_ENTRY__VALUE = eINSTANCE.getURIToNodeMapEntry_Value();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.graph.impl.URIToLabelMapEntryImpl <em>URI To Label Map Entry</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.URIToLabelMapEntryImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getURIToLabelMapEntry()
+ * @generated
+ */
+ EClass URI_TO_LABEL_MAP_ENTRY = eINSTANCE.getURIToLabelMapEntry();
+
+ /**
+ * The meta object literal for the '<em><b>Key</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute URI_TO_LABEL_MAP_ENTRY__KEY = eINSTANCE.getURIToLabelMapEntry_Key();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference URI_TO_LABEL_MAP_ENTRY__VALUE = eINSTANCE.getURIToLabelMapEntry_Value();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.graph.impl.URIToNodeLabelMapEntryImpl <em>URI To Node Label Map Entry</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.URIToNodeLabelMapEntryImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getURIToNodeLabelMapEntry()
+ * @generated
+ */
+ EClass URI_TO_NODE_LABEL_MAP_ENTRY = eINSTANCE.getURIToNodeLabelMapEntry();
+
+ /**
+ * The meta object literal for the '<em><b>Key</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute URI_TO_NODE_LABEL_MAP_ENTRY__KEY = eINSTANCE.getURIToNodeLabelMapEntry_Key();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference URI_TO_NODE_LABEL_MAP_ENTRY__VALUE = eINSTANCE.getURIToNodeLabelMapEntry_Value();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.graph.impl.StaticLabelImpl <em>Static Label</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.StaticLabelImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getStaticLabel()
+ * @generated
+ */
+ EClass STATIC_LABEL = eINSTANCE.getStaticLabel();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.graph.impl.GraphPartitionerImpl <em>Partitioner</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.GraphPartitionerImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getGraphPartitioner()
+ * @generated
+ */
+ EClass GRAPH_PARTITIONER = eINSTANCE.getGraphPartitioner();
+
+ /**
+ * The meta object literal for the '<em><b>Num Processes</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute GRAPH_PARTITIONER__NUM_PROCESSES = eINSTANCE.getGraphPartitioner_NumProcesses();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.graph.impl.SimpleGraphPartitionerImpl <em>Simple Graph Partitioner</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.SimpleGraphPartitionerImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getSimpleGraphPartitioner()
+ * @generated
+ */
+ EClass SIMPLE_GRAPH_PARTITIONER = eINSTANCE.getSimpleGraphPartitioner();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.graph.impl.ExchangeImpl <em>Exchange</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.ExchangeImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getExchange()
+ * @generated
+ */
+ EClass EXCHANGE = eINSTANCE.getExchange();
+
+ /**
+ * The meta object literal for the '<em><b>Other Label</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference EXCHANGE__OTHER_LABEL = eINSTANCE.getExchange_OtherLabel();
+
+ /**
+ * The meta object literal for the '<em><b>Count</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute EXCHANGE__COUNT = eINSTANCE.getExchange_Count();
+
+ /**
+ * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute EXCHANGE__TYPE = eINSTANCE.getExchange_Type();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.graph.impl.IntegrationLabelImpl <em>Integration Label</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.IntegrationLabelImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getIntegrationLabel()
+ * @generated
+ */
+ EClass INTEGRATION_LABEL = eINSTANCE.getIntegrationLabel();
+
+ /**
+ * The meta object literal for the '<em><b>Delta Value</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference INTEGRATION_LABEL__DELTA_VALUE = eINSTANCE.getIntegrationLabel_DeltaValue();
+
+ /**
+ * The meta object literal for the '<em><b>Temp Value</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference INTEGRATION_LABEL__TEMP_VALUE = eINSTANCE.getIntegrationLabel_TempValue();
+
+ /**
+ * The meta object literal for the '<em><b>Probe Value</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference INTEGRATION_LABEL__PROBE_VALUE = eINSTANCE.getIntegrationLabel_ProbeValue();
+
+ /**
+ * The meta object literal for the '<em><b>Error Scale</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference INTEGRATION_LABEL__ERROR_SCALE = eINSTANCE.getIntegrationLabel_ErrorScale();
+
+ /**
+ * The meta object literal for the '<em><b>Identifier</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute INTEGRATION_LABEL__IDENTIFIER = eINSTANCE.getIntegrationLabel_Identifier();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.graph.impl.IntegrationLabelValueImpl <em>Integration Label Value</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.impl.IntegrationLabelValueImpl
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getIntegrationLabelValue()
+ * @generated
+ */
+ EClass INTEGRATION_LABEL_VALUE = eINSTANCE.getIntegrationLabelValue();
+
+ /**
+ * The meta object literal for the '<em><b>Arrivals</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference INTEGRATION_LABEL_VALUE__ARRIVALS = eINSTANCE.getIntegrationLabelValue_Arrivals();
+
+ /**
+ * The meta object literal for the '<em><b>Departures</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference INTEGRATION_LABEL_VALUE__DEPARTURES = eINSTANCE.getIntegrationLabelValue_Departures();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.graph.ExchangeType <em>Exchange Type</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.ExchangeType
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getExchangeType()
+ * @generated
+ */
+ EEnum EXCHANGE_TYPE = eINSTANCE.getExchangeType();
+
+ /**
+ * The meta object literal for the '<em>Illegal Argument Exception</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.IllegalArgumentException
+ * @see org.eclipse.stem.core.graph.impl.GraphPackageImpl#getIllegalArgumentException()
+ * @generated
+ */
+ EDataType ILLEGAL_ARGUMENT_EXCEPTION = eINSTANCE.getIllegalArgumentException();
+
+ }
+
+} //GraphPackage
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/GraphPartitioner.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/GraphPartitioner.java
new file mode 100644
index 000000000..52d851421
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/GraphPartitioner.java
@@ -0,0 +1,86 @@
+package org.eclipse.stem.core.graph;
+/*******************************************************************************
+ * Copyright (c) 2011 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.model.Decorator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Partitioner</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.graph.GraphPartitioner#getNumProcesses <em>Num Processes</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.core.graph.GraphPackage#getGraphPartitioner()
+ * @model abstract="true"
+ * @generated
+ */
+public interface GraphPartitioner extends EObject {
+ /**
+ * Returns the value of the '<em><b>Num Processes</b></em>' attribute.
+ * The default value is <code>"1"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Num Processes</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Num Processes</em>' attribute.
+ * @see #setNumProcesses(int)
+ * @see org.eclipse.stem.core.graph.GraphPackage#getGraphPartitioner_NumProcesses()
+ * @model default="1"
+ * @generated
+ */
+ int getNumProcesses();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.graph.GraphPartitioner#getNumProcesses <em>Num Processes</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Num Processes</em>' attribute.
+ * @see #getNumProcesses()
+ * @generated
+ */
+ void setNumProcesses(int value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model many="false"
+ * @generated
+ */
+ EList<DynamicLabel> partitionDecoratorLabels(Decorator decorator, int processRank);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model many="false"
+ * @generated
+ */
+ EList<DynamicLabel> partitionDecoratorLabels(Decorator decorator);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ boolean isManaged(Identifiable identifiable);
+
+} // GraphPartitioner
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/IntegrationLabel.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/IntegrationLabel.java
new file mode 100644
index 000000000..a7be73ecc
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/IntegrationLabel.java
@@ -0,0 +1,163 @@
+package org.eclipse.stem.core.graph;
+/*******************************************************************************
+ * Copyright (c) 2011 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
+ *******************************************************************************/
+
+import org.eclipse.stem.core.model.STEMTime;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Integration Label</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.graph.IntegrationLabel#getDeltaValue <em>Delta Value</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.IntegrationLabel#getTempValue <em>Temp Value</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.IntegrationLabel#getProbeValue <em>Probe Value</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.IntegrationLabel#getErrorScale <em>Error Scale</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.IntegrationLabel#getIdentifier <em>Identifier</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.core.graph.GraphPackage#getIntegrationLabel()
+ * @model abstract="true"
+ * @generated
+ */
+public interface IntegrationLabel extends DynamicNodeLabel {
+ /**
+ * Returns the value of the '<em><b>Delta Value</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Delta Value</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Delta Value</em>' reference.
+ * @see #setDeltaValue(IntegrationLabelValue)
+ * @see org.eclipse.stem.core.graph.GraphPackage#getIntegrationLabel_DeltaValue()
+ * @model
+ * @generated
+ */
+ IntegrationLabelValue getDeltaValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.graph.IntegrationLabel#getDeltaValue <em>Delta Value</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Delta Value</em>' reference.
+ * @see #getDeltaValue()
+ * @generated
+ */
+ void setDeltaValue(IntegrationLabelValue value);
+
+ /**
+ * Returns the value of the '<em><b>Temp Value</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Temp Value</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Temp Value</em>' reference.
+ * @see #setTempValue(IntegrationLabelValue)
+ * @see org.eclipse.stem.core.graph.GraphPackage#getIntegrationLabel_TempValue()
+ * @model
+ * @generated
+ */
+ IntegrationLabelValue getTempValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.graph.IntegrationLabel#getTempValue <em>Temp Value</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Temp Value</em>' reference.
+ * @see #getTempValue()
+ * @generated
+ */
+ void setTempValue(IntegrationLabelValue value);
+
+ /**
+ * Returns the value of the '<em><b>Probe Value</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Probe Value</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Probe Value</em>' reference.
+ * @see #setProbeValue(IntegrationLabelValue)
+ * @see org.eclipse.stem.core.graph.GraphPackage#getIntegrationLabel_ProbeValue()
+ * @model
+ * @generated
+ */
+ IntegrationLabelValue getProbeValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.graph.IntegrationLabel#getProbeValue <em>Probe Value</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Probe Value</em>' reference.
+ * @see #getProbeValue()
+ * @generated
+ */
+ void setProbeValue(IntegrationLabelValue value);
+
+ /**
+ * Returns the value of the '<em><b>Error Scale</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Error Scale</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Error Scale</em>' reference.
+ * @see #setErrorScale(IntegrationLabelValue)
+ * @see org.eclipse.stem.core.graph.GraphPackage#getIntegrationLabel_ErrorScale()
+ * @model
+ * @generated
+ */
+ IntegrationLabelValue getErrorScale();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.graph.IntegrationLabel#getErrorScale <em>Error Scale</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Error Scale</em>' reference.
+ * @see #getErrorScale()
+ * @generated
+ */
+ void setErrorScale(IntegrationLabelValue value);
+
+ /**
+ * Returns the value of the '<em><b>Identifier</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Identifier</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Identifier</em>' attribute.
+ * @see org.eclipse.stem.core.graph.GraphPackage#getIntegrationLabel_Identifier()
+ * @model changeable="false"
+ * @generated
+ */
+ String getIdentifier();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ void reset(STEMTime time);
+
+} // IntegrationLabel
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/IntegrationLabelValue.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/IntegrationLabelValue.java
new file mode 100644
index 000000000..4d5c41e84
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/IntegrationLabelValue.java
@@ -0,0 +1,155 @@
+package org.eclipse.stem.core.graph;
+/*******************************************************************************
+ * Copyright (c) 2011 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Integration Label Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.graph.IntegrationLabelValue#getArrivals <em>Arrivals</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.IntegrationLabelValue#getDepartures <em>Departures</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.core.graph.GraphPackage#getIntegrationLabelValue()
+ * @model abstract="true"
+ * @generated
+ */
+public interface IntegrationLabelValue extends LabelValue {
+ /**
+ * Returns the value of the '<em><b>Arrivals</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.stem.core.graph.Exchange}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Arrivals</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Arrivals</em>' reference list.
+ * @see org.eclipse.stem.core.graph.GraphPackage#getIntegrationLabelValue_Arrivals()
+ * @model changeable="false"
+ * @generated
+ */
+ EList<Exchange> getArrivals();
+
+ /**
+ * Returns the value of the '<em><b>Departures</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.stem.core.graph.Exchange}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Departures</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Departures</em>' reference list.
+ * @see org.eclipse.stem.core.graph.GraphPackage#getIntegrationLabelValue_Departures()
+ * @model changeable="false"
+ * @generated
+ */
+ EList<Exchange> getDepartures();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ IntegrationLabelValue set(IntegrationLabelValue value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ IntegrationLabelValue add(IntegrationLabelValue value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ IntegrationLabelValue sub(IntegrationLabelValue value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ IntegrationLabelValue scale(double scaleFactor);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ IntegrationLabelValue add(double addition);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ IntegrationLabelValue abs();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ boolean avoidNegative(IntegrationLabelValue value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ double computeDeltaAdjustment(IntegrationLabelValue value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ IntegrationLabelValue divide(IntegrationLabelValue value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ double max();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ void prepareCycle();
+
+ static double MINIMUM_VALUE = -0.1;
+
+} // IntegrationLabelValue
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/Label.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/Label.java
new file mode 100644
index 000000000..0709b228b
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/Label.java
@@ -0,0 +1,98 @@
+// Label.java
+package org.eclipse.stem.core.graph;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.stem.core.STEMURI;
+import org.eclipse.stem.core.common.Identifiable;
+
+/**
+ * A <code>Label</code> represents attributes of either a {@link Node},
+ * {@link Edge}, or {@link Graph}. The attributes are represented by a
+ * {@link LabelValue}.
+ *
+ * @see Node
+ * @see Edge
+ * @see Graph
+ * @see NodeLabel
+ * @see DynamicLabel
+ * @see StaticNodeLabel
+ * @see DynamicNodeLabel
+ *
+ *
+ * @model abstract="true"
+ */
+public interface Label extends Identifiable {
+
+ /**
+ * This is the top-level segment for all type URI's for labels.
+ */
+ String URI_TYPE_LABEL_SEGMENT = "label";
+
+ /**
+ * This is the type URI for a Label
+ */
+ URI URI_TYPE_LABEL = STEMURI.createTypeURI(URI_TYPE_LABEL_SEGMENT);
+
+ /**
+ * @return the {@link Identifiable} labeled by this <code>Label</code>
+ * @model volatile="true" transient="true"
+ */
+ Identifiable getIdentifiable();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.graph.Label#getIdentifiable <em>Identifiable</em>}' reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @param value the new value of the '<em>Identifiable</em>' reference.
+ * @see #getIdentifiable()
+ * @generated
+ */
+ void setIdentifiable(Identifiable value);
+
+ /**
+ * @return the {@link URI} of the {@link Identifiable} that this
+ * <code>Label</code> labels. This value is typically used when
+ * combining "graph fragments" to resolve the connection between the
+ * <code>Label</code> and the {@link Identifiable} it labels.
+ * @see Graph#addGraph(Graph)
+ * @see UnresolvedIdentifiable
+ * @see #getIdentifiable()
+ *
+ * @model
+ */
+ URI getURIOfIdentifiableToBeLabeled();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.graph.Label#getURIOfIdentifiableToBeLabeled <em>URI Of Identifiable To Be Labeled</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @param value the new value of the '<em>URI Of Identifiable To Be Labeled</em>' attribute.
+ * @see #getURIOfIdentifiableToBeLabeled()
+ * @generated
+ */
+ void setURIOfIdentifiableToBeLabeled(URI value);
+
+ /**
+ * @model containment="true" required="true"
+ */
+ LabelValue getCurrentValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.graph.Label#getCurrentValue <em>Current Value</em>}' containment reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @param value the new value of the '<em>Current Value</em>' containment reference.
+ * @see #getCurrentValue()
+ * @generated
+ */
+ void setCurrentValue(LabelValue value);
+
+} // Label
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/LabelValue.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/LabelValue.java
new file mode 100644
index 000000000..33e477fe3
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/LabelValue.java
@@ -0,0 +1,41 @@
+// LabelValue.java
+package org.eclipse.stem.core.graph;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import org.eclipse.stem.core.common.SanityChecker;
+
+/**
+ * A <code>LabelValue</code> stores the attributes of a {@link Label}.
+ *
+ * @see Label
+ * @see DynamicLabel
+ * @see DynamicNodeLabel
+ *
+ * @model abstract="true"
+ */
+public interface LabelValue extends SanityChecker {
+
+ /**
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ void reset();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ boolean sameValue(LabelValue otherLabelValue);
+
+} // LabelValue
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/Node.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/Node.java
new file mode 100644
index 000000000..e1cd3d9b2
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/Node.java
@@ -0,0 +1,66 @@
+// Node.java
+package org.eclipse.stem.core.graph;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.stem.core.common.Identifiable;
+
+/**
+ * A <code>Node</code> represents a real or abstract entity.
+ * <p>
+ * A <code>Node</code> can have "attributes". The attributes are represented
+ * by zero or more {@link NodeLabel}s.
+ * </p>
+ * <p>
+ * A <code>Node</code> can have zero or more "relationships" with one or more
+ * other <code>Node</code>s. These relationships can be with the same
+ * <code>Node</code> or with multiple different <code>Node</code>s. A
+ * single relationship is represented by an {@link Edge}.
+ * </p>
+ *
+ * @see Edge
+ * @see Label
+ * @see NodeLabel
+ * @see Graph
+ *
+ * @model
+ */
+public interface Node extends Identifiable {
+
+ /**
+ * This is the segment of the type URI that prefixes all other segments in a
+ * node type URI.
+ */
+ String URI_TYPE_NODE_SEGMENT = "node";
+
+ // /**
+ // * This is the type URI for area labels
+ // */
+ // URI URI_TYPE_GEOGRAPHIC_FEATURE_NODE = STEMURI
+ // .createTypeURI(URI_TYPE_NODE_SEGMENT);
+
+ /**
+ * @return the {@link Edge}s that represent the relationships of this
+ * <code>Node</code>.
+ * @model type="Edge" containment="false"
+ */
+ EList<Edge> getEdges();
+
+ /**
+ * the {@link Label}s that represent attributes of this <code>Node</code>.
+ *
+ * @model type="NodeLabel" containment="false" opposite="node"
+ */
+ EList<NodeLabel> getLabels();
+
+} // Node
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/NodeLabel.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/NodeLabel.java
new file mode 100644
index 000000000..b9f4533f1
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/NodeLabel.java
@@ -0,0 +1,40 @@
+// NodeLabel.java
+package org.eclipse.stem.core.graph;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+/**
+ * A <code>NodeLabel</code> is a {@link Label} that provides attributes to a
+ * {@link Node}.
+ *
+ * @model abstract="true"
+ */
+public interface NodeLabel extends Label {
+
+ /**
+ * @return the {@link Node} that this <code>NodeLabel</code> labels. This
+ * value can be null in a graph fragment.
+ *
+ * @model containment="false"
+ */
+ Node getNode();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.graph.NodeLabel#getNode <em>Node</em>}' reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @param value the new value of the '<em>Node</em>' reference.
+ * @see #getNode()
+ * @generated
+ */
+ void setNode(Node value);
+
+} // NodeLabel
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/ResettableAdapter.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/ResettableAdapter.java
new file mode 100644
index 000000000..c7f151001
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/ResettableAdapter.java
@@ -0,0 +1,25 @@
+// ResettableAdapter.java
+package org.eclipse.stem.core.graph;
+
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+
+/**
+ * This interface is implemented by classes that are <code>Adapter</code>s
+ * that can be reset. This is typically needed when the adapter maintains some
+ * kind of state information that needs to be reset when the value of the
+ * {@link DynamicLabel} is reset. The method {@link DynamicLabel#reset()} scans
+ * through all of the adapters attached to {@link DynamicLabel} and resets all
+ * that implement this interface.
+ */
+public interface ResettableAdapter {
+ void reset();
+} // ResettableAdapter
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/SimpleGraphPartitioner.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/SimpleGraphPartitioner.java
new file mode 100644
index 000000000..a47fdf7ac
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/SimpleGraphPartitioner.java
@@ -0,0 +1,24 @@
+package org.eclipse.stem.core.graph;
+/*******************************************************************************
+ * Copyright (c) 2011 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
+ *******************************************************************************/
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Simple Graph Partitioner</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.stem.core.graph.GraphPackage#getSimpleGraphPartitioner()
+ * @model
+ * @generated
+ */
+public interface SimpleGraphPartitioner extends GraphPartitioner {
+} // SimpleGraphPartitioner
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/StaticEdgeLabel.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/StaticEdgeLabel.java
new file mode 100644
index 000000000..9dc63cf4e
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/StaticEdgeLabel.java
@@ -0,0 +1,33 @@
+// StaticEdgeLabel.java
+package org.eclipse.stem.core.graph;
+
+/*******************************************************************************
+ * Copyright (c) 2006, 2008 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
+ *******************************************************************************/
+import java.lang.reflect.Modifier;
+
+import org.eclipse.stem.core.modifier.Modifiable;
+import org.eclipse.stem.core.trigger.Trigger;
+
+/**
+ * A <code>StaticEdgeLabel</code> is an {@link EdgeLabel} that only has a single
+ * "current" {@link LabelValue}. It is typically used for {@link Edge}
+ * attributes that rarely change in a <code>Simulation</code>. An example would
+ * be the relationship between two regions sharing a common border.
+ * <p>
+ * By implementing the {@link Modifiable} interface, a
+ * <code>StaticEdgeLabel</code> is identified as being something that can be
+ * altered by a {@link Modifier} activated by a {@link Trigger}.
+ *
+ * @model abstract="true"
+ */
+public interface StaticEdgeLabel extends EdgeLabel, StaticLabel {
+ // Nothing
+} // StaticEdgeLabel
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/StaticLabel.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/StaticLabel.java
new file mode 100644
index 000000000..96e5bb5ba
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/StaticLabel.java
@@ -0,0 +1,27 @@
+// StaticLabel
+package org.eclipse.stem.core.graph;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.stem.core.modifier.Modifiable;
+
+/**
+ * A <code>StaticLabel</code> is a marker class.
+ *
+ * @see StaticNodeLabel
+ * @see StaticEdgeLabel
+ *
+ * @model abstract="true"
+ */
+public interface StaticLabel extends Label, Modifiable {
+ // Nothing
+} // StaticLabel
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/StaticNodeLabel.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/StaticNodeLabel.java
new file mode 100644
index 000000000..ae05f967d
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/StaticNodeLabel.java
@@ -0,0 +1,34 @@
+// StaticNodeLabel.java
+package org.eclipse.stem.core.graph;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import java.lang.reflect.Modifier;
+
+import org.eclipse.stem.core.modifier.Modifiable;
+import org.eclipse.stem.core.trigger.Trigger;
+
+/**
+ * A <code>StaticNodeLabel</code> is a {@link NodeLabel} that only has a single
+ * "current" {@link LabelValue}. It is typically used for {@link Node}
+ * attributes that rarely change in a <code>Simulation</code>. An example would
+ * be the area of a geographic location.
+ * <p>
+ * By implementing the {@link Modifiable} interface, a
+ * <code>StaticNodeLabel</code> is identified as being something that can be
+ * altered by a {@link Modifier} activated by a {@link Trigger}.
+ *
+ * @model abstract="true"
+ */
+public interface StaticNodeLabel extends NodeLabel, StaticLabel {
+ // Nothing
+} // StaticNodeLabel
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/UnresolvedIdentifiable.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/UnresolvedIdentifiable.java
new file mode 100644
index 000000000..027b6a67c
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/UnresolvedIdentifiable.java
@@ -0,0 +1,138 @@
+// UnresolvedIdentifiable.java
+package org.eclipse.stem.core.graph;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.core.common.Identifiable;
+
+/**
+ * An <code>UnresolvedIdentifiable</code> is created during the generation of
+ * the canonical {@link Graph} (see
+ * {@link org.eclipse.stem.core.model.Model#getCanonicalGraph(URI)) when an {{@link Edge}
+ * or a {@link Label} cannot be matched with the {@link Node} or {@link Graph}
+ * that its target {@link URI} specifies.
+ * <p>
+ * Instances of <code>UnresolvedIdentifiable</code> are used to report the
+ * inability to resolve the {@link URI}.
+ * </p>
+ *
+ * @model
+ */
+public interface UnresolvedIdentifiable extends EObject {
+
+ /**
+ * This is the {@link org.eclipse.stem.core.scenario.Scenario} that
+ * contains the {@link org.eclipse.stem.core.model.Model} that is
+ * creating the canonical {@link Graph}.
+ *
+ * TODO shouldn't the return value be Scenario?
+ *
+ * @model containment="false"
+ */
+ Identifiable getScenario();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.graph.UnresolvedIdentifiable#getScenario <em>Scenario</em>}' reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @param value the new value of the '<em>Scenario</em>' reference.
+ * @see #getScenario()
+ * @generated
+ */
+ void setScenario(Identifiable value);
+
+ /**
+ * This is the {@link Model} that was creating the canonical {@link Graph}
+ * when the unresolved {@link URI} was encountered.
+ *
+ * @model containment="false"
+ */
+ Identifiable getModel();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.graph.UnresolvedIdentifiable#getModel <em>Model</em>}' reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @param value the new value of the '<em>Model</em>' reference.
+ * @see #getModel()
+ * @generated
+ */
+ void setModel(Identifiable value);
+
+ /**
+ * This is the {@link Graph} that contains the {@link Edge} or {@link Label}
+ * that has the unresolved {@link URI}.
+ *
+ * TODO BUG this value is always null.
+ *
+ * @model containment="false"
+ */
+ Identifiable getGraph();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.graph.UnresolvedIdentifiable#getGraph <em>Graph</em>}' reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @param value the new value of the '<em>Graph</em>' reference.
+ * @see #getGraph()
+ * @generated
+ */
+ void setGraph(Identifiable value);
+
+ /**
+ * @return the {@link Edge} or {@link Label} that has the unresolved target
+ * {@link URI}.
+ * @model containment="false"
+ */
+ Identifiable getIdentifiable();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.graph.UnresolvedIdentifiable#getIdentifiable <em>Identifiable</em>}' reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @param value the new value of the '<em>Identifiable</em>' reference.
+ * @see #getIdentifiable()
+ * @generated
+ */
+ void setIdentifiable(Identifiable value);
+
+ /**
+ * @return the unresolved {@link URI}.
+ *
+ * @model
+ */
+ URI getUnresolvedURI();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.graph.UnresolvedIdentifiable#getUnresolvedURI <em>Unresolved URI</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @param value the new value of the '<em>Unresolved URI</em>' attribute.
+ * @see #getUnresolvedURI()
+ * @generated
+ */
+ void setUnresolvedURI(URI value);
+
+ /**
+ * @return either "NODE A" or "NODE B" for an {@link Edge}, or "NODE" for a
+ * {@link Label}.
+ * @model
+ */
+ String getFieldName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.graph.UnresolvedIdentifiable#getFieldName <em>Field Name</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @param value the new value of the '<em>Field Name</em>' attribute.
+ * @see #getFieldName()
+ * @generated
+ */
+ void setFieldName(String value);
+
+} // UnresolvedIdentifiable
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/DynamicEdgeLabelImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/DynamicEdgeLabelImpl.java
new file mode 100644
index 000000000..8a98c9b9d
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/DynamicEdgeLabelImpl.java
@@ -0,0 +1,254 @@
+package org.eclipse.stem.core.graph.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.graph.DynamicEdgeLabel;
+import org.eclipse.stem.core.graph.Edge;
+import org.eclipse.stem.core.graph.EdgeLabel;
+import org.eclipse.stem.core.graph.GraphPackage;
+
+//import org.eclipse.stem.core.model.Decorator;
+//import org.eclipse.stem.core.model.ModelPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Dynamic Edge Label</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.graph.impl.DynamicEdgeLabelImpl#getEdge <em>Edge</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class DynamicEdgeLabelImpl extends DynamicLabelImpl implements DynamicEdgeLabel {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DynamicEdgeLabelImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return GraphPackage.Literals.DYNAMIC_EDGE_LABEL;
+ }
+
+ /**
+ * @see org.eclipse.stem.core.graph.impl.LabelImpl#getIdentifiable()
+ */
+ @Override
+ public Identifiable getIdentifiable() {
+ return getEdge();
+ } // getIdentifiable
+
+
+ /**
+ * @see org.eclipse.stem.core.graph.impl.LabelImpl#setIdentifiable(org.eclipse.stem.core.common.Identifiable)
+ */
+ @Override
+ public void setIdentifiable(Identifiable newIdentifiable) {
+ setEdge((Edge)newIdentifiable);
+ } // setIdentifiable
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Edge getEdge() {
+ if (eContainerFeatureID() != GraphPackage.DYNAMIC_EDGE_LABEL__EDGE) return null;
+ return (Edge)eContainer();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetEdge(Edge newEdge, NotificationChain msgs) {
+ msgs = eBasicSetContainer((InternalEObject)newEdge, GraphPackage.DYNAMIC_EDGE_LABEL__EDGE, msgs);
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setEdge(Edge newEdge) {
+ if (newEdge != eInternalContainer() || (eContainerFeatureID() != GraphPackage.DYNAMIC_EDGE_LABEL__EDGE && newEdge != null)) {
+ if (EcoreUtil.isAncestor(this, newEdge))
+ throw new IllegalArgumentException("Recursive containment not allowed for " + toString()); //$NON-NLS-1$
+ NotificationChain msgs = null;
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ if (newEdge != null)
+ msgs = ((InternalEObject)newEdge).eInverseAdd(this, GraphPackage.EDGE__LABEL, Edge.class, msgs);
+ msgs = basicSetEdge(newEdge, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.DYNAMIC_EDGE_LABEL__EDGE, newEdge, newEdge));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case GraphPackage.DYNAMIC_EDGE_LABEL__EDGE:
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ return basicSetEdge((Edge)otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case GraphPackage.DYNAMIC_EDGE_LABEL__EDGE:
+ return basicSetEdge(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
+ switch (eContainerFeatureID()) {
+ case GraphPackage.DYNAMIC_EDGE_LABEL__EDGE:
+ return eInternalContainer().eInverseRemove(this, GraphPackage.EDGE__LABEL, Edge.class, msgs);
+ }
+ return super.eBasicRemoveFromContainerFeature(msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case GraphPackage.DYNAMIC_EDGE_LABEL__EDGE:
+ return getEdge();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case GraphPackage.DYNAMIC_EDGE_LABEL__EDGE:
+ setEdge((Edge)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case GraphPackage.DYNAMIC_EDGE_LABEL__EDGE:
+ setEdge((Edge)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case GraphPackage.DYNAMIC_EDGE_LABEL__EDGE:
+ return getEdge() != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == EdgeLabel.class) {
+ switch (derivedFeatureID) {
+ case GraphPackage.DYNAMIC_EDGE_LABEL__EDGE: return GraphPackage.EDGE_LABEL__EDGE;
+ default: return -1;
+ }
+ }
+ return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+ if (baseClass == EdgeLabel.class) {
+ switch (baseFeatureID) {
+ case GraphPackage.EDGE_LABEL__EDGE: return GraphPackage.DYNAMIC_EDGE_LABEL__EDGE;
+ default: return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+} //DynamicEdgeLabelImpl \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/DynamicLabelImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/DynamicLabelImpl.java
new file mode 100644
index 000000000..8e8c87d89
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/DynamicLabelImpl.java
@@ -0,0 +1,403 @@
+package org.eclipse.stem.core.graph.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.stem.core.graph.DynamicLabel;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.LabelValue;
+import org.eclipse.stem.core.graph.ResettableAdapter;
+import org.eclipse.stem.core.model.Decorator;
+import org.eclipse.stem.core.model.ModelPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Dynamic Label</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.graph.impl.DynamicLabelImpl#isNextValueValid <em>Next Value Valid</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.DynamicLabelImpl#getNextValue <em>Next Value</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.DynamicLabelImpl#getDecorator <em>Decorator</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class DynamicLabelImpl extends LabelImpl implements DynamicLabel {
+ /**
+ * The default value of the '{@link #isNextValueValid() <em>Next Value Valid</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #isNextValueValid()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean NEXT_VALUE_VALID_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isNextValueValid() <em>Next Value Valid</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #isNextValueValid()
+ * @generated
+ * @ordered
+ */
+ protected boolean nextValueValid = NEXT_VALUE_VALID_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getNextValue() <em>Next Value</em>}' containment reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getNextValue()
+ * @generated
+ * @ordered
+ */
+ protected LabelValue nextValue;
+
+ /**
+ * The cached value of the '{@link #getDecorator() <em>Decorator</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDecorator()
+ * @generated
+ * @ordered
+ */
+ protected Decorator decorator;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ protected DynamicLabelImpl() {
+ super();
+ setTypeURI(DynamicLabel.URI_TYPE_DYNAMIC_LABEL);
+ } // DynamicLabelImpl
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return GraphPackage.Literals.DYNAMIC_LABEL;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public LabelValue getNextValue() {
+ return nextValue;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetNextValue(LabelValue newNextValue, NotificationChain msgs) {
+ LabelValue oldNextValue = nextValue;
+ nextValue = newNextValue;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, GraphPackage.DYNAMIC_LABEL__NEXT_VALUE, oldNextValue, newNextValue);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setNextValue(LabelValue newNextValue) {
+ if (newNextValue != nextValue) {
+ NotificationChain msgs = null;
+ if (nextValue != null)
+ msgs = ((InternalEObject)nextValue).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - GraphPackage.DYNAMIC_LABEL__NEXT_VALUE, null, msgs);
+ if (newNextValue != null)
+ msgs = ((InternalEObject)newNextValue).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - GraphPackage.DYNAMIC_LABEL__NEXT_VALUE, null, msgs);
+ msgs = basicSetNextValue(newNextValue, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.DYNAMIC_LABEL__NEXT_VALUE, newNextValue, newNextValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Decorator getDecorator() {
+ if (decorator != null && decorator.eIsProxy()) {
+ InternalEObject oldDecorator = (InternalEObject)decorator;
+ decorator = (Decorator)eResolveProxy(oldDecorator);
+ if (decorator != oldDecorator) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, GraphPackage.DYNAMIC_LABEL__DECORATOR, oldDecorator, decorator));
+ }
+ }
+ return decorator;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Decorator basicGetDecorator() {
+ return decorator;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetDecorator(Decorator newDecorator, NotificationChain msgs) {
+ Decorator oldDecorator = decorator;
+ decorator = newDecorator;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, GraphPackage.DYNAMIC_LABEL__DECORATOR, oldDecorator, newDecorator);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDecorator(Decorator newDecorator) {
+ if (newDecorator != decorator) {
+ NotificationChain msgs = null;
+ if (decorator != null)
+ msgs = ((InternalEObject)decorator).eInverseRemove(this, ModelPackage.DECORATOR__LABELS_TO_UPDATE, Decorator.class, msgs);
+ if (newDecorator != null)
+ msgs = ((InternalEObject)newDecorator).eInverseAdd(this, ModelPackage.DECORATOR__LABELS_TO_UPDATE, Decorator.class, msgs);
+ msgs = basicSetDecorator(newDecorator, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.DYNAMIC_LABEL__DECORATOR, newDecorator, newDecorator));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isNextValueValid() {
+ return nextValueValid;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setNextValueValid(boolean newNextValueValid) {
+ boolean oldNextValueValid = nextValueValid;
+ nextValueValid = newNextValueValid;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.DYNAMIC_LABEL__NEXT_VALUE_VALID, oldNextValueValid, nextValueValid));
+ }
+
+ /**
+ * <!-- begin-user-doc --> Set the next value valid flag to false. <!--
+ * end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public void reset() {
+ getCurrentValue().reset();
+ getNextValue().reset();
+ setNextValueValid(false);
+ // Reset any adapters that are attached to this instance
+ for (Adapter adapter : eAdapters()) {
+ // Is it resettable?
+ if (adapter instanceof ResettableAdapter) {
+ // Yes
+ final ResettableAdapter resettableAdapter = (ResettableAdapter) adapter;
+ resettableAdapter.reset();
+ } // if ResettableAdapter
+ } // for each Adapter
+ } // reset
+
+ /**
+ * <!-- begin-user-doc -->
+ *
+ * Exchange the current value for the next value.
+ *
+ * <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public void switchToNextValue() {
+ assert isNextValueValid();
+
+ final LabelValue temp = getCurrentValue();
+ setCurrentValue(getNextValue());
+ setNextValue(temp);
+ setNextValueValid(false);
+ } // switchToNextValue
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case GraphPackage.DYNAMIC_LABEL__DECORATOR:
+ if (decorator != null)
+ msgs = ((InternalEObject)decorator).eInverseRemove(this, ModelPackage.DECORATOR__LABELS_TO_UPDATE, Decorator.class, msgs);
+ return basicSetDecorator((Decorator)otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case GraphPackage.DYNAMIC_LABEL__NEXT_VALUE:
+ return basicSetNextValue(null, msgs);
+ case GraphPackage.DYNAMIC_LABEL__DECORATOR:
+ return basicSetDecorator(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case GraphPackage.DYNAMIC_LABEL__NEXT_VALUE_VALID:
+ return isNextValueValid();
+ case GraphPackage.DYNAMIC_LABEL__NEXT_VALUE:
+ return getNextValue();
+ case GraphPackage.DYNAMIC_LABEL__DECORATOR:
+ if (resolve) return getDecorator();
+ return basicGetDecorator();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case GraphPackage.DYNAMIC_LABEL__NEXT_VALUE_VALID:
+ setNextValueValid((Boolean)newValue);
+ return;
+ case GraphPackage.DYNAMIC_LABEL__NEXT_VALUE:
+ setNextValue((LabelValue)newValue);
+ return;
+ case GraphPackage.DYNAMIC_LABEL__DECORATOR:
+ setDecorator((Decorator)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case GraphPackage.DYNAMIC_LABEL__NEXT_VALUE_VALID:
+ setNextValueValid(NEXT_VALUE_VALID_EDEFAULT);
+ return;
+ case GraphPackage.DYNAMIC_LABEL__NEXT_VALUE:
+ setNextValue((LabelValue)null);
+ return;
+ case GraphPackage.DYNAMIC_LABEL__DECORATOR:
+ setDecorator((Decorator)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case GraphPackage.DYNAMIC_LABEL__NEXT_VALUE_VALID:
+ return nextValueValid != NEXT_VALUE_VALID_EDEFAULT;
+ case GraphPackage.DYNAMIC_LABEL__NEXT_VALUE:
+ return nextValue != null;
+ case GraphPackage.DYNAMIC_LABEL__DECORATOR:
+ return decorator != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+
+ result.append(" [");
+ result.append(getNextValue().toString());
+ result.append(" (");
+ result.append(isNextValueValid() ? "valid" : "invalid");
+ result.append(")");
+ result.append("]");
+
+ return result.toString();
+ } // toString
+
+ /**
+ * @see org.eclipse.stem.graph.impl.LabelImpl#sane()
+ * @generated NOT
+ */
+ @Override
+ public boolean sane() {
+ boolean retValue = super.sane();
+ retValue = retValue && nextValue != null;
+ assert retValue;
+
+ retValue = retValue && (isNextValueValid() ? nextValue.sane() : true);
+ assert retValue;
+
+ retValue = retValue && getDecorator() != null;
+ assert retValue;
+
+ return retValue;
+ } // sane
+
+} // DynamicLabelImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/DynamicNodeLabelImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/DynamicNodeLabelImpl.java
new file mode 100644
index 000000000..976bec003
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/DynamicNodeLabelImpl.java
@@ -0,0 +1,284 @@
+package org.eclipse.stem.core.graph.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.graph.DynamicNodeLabel;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.Node;
+import org.eclipse.stem.core.graph.NodeLabel;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Dynamic Node Label</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.graph.impl.DynamicNodeLabelImpl#getNode <em>Node</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class DynamicNodeLabelImpl extends DynamicLabelImpl implements
+ DynamicNodeLabel {
+ /**
+ * The cached value of the '{@link #getNode() <em>Node</em>}' reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getNode()
+ * @generated
+ * @ordered
+ */
+ protected Node node;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ protected DynamicNodeLabelImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return GraphPackage.Literals.DYNAMIC_NODE_LABEL;
+ }
+
+ /**
+ * @see org.eclipse.stem.core.graph.impl.LabelImpl#getIdentifiable()
+ */
+ @Override
+ public Identifiable getIdentifiable() {
+ return getNode();
+ } // getIdentifiable
+
+
+ /**
+ * @see org.eclipse.stem.core.graph.impl.LabelImpl#setIdentifiable(org.eclipse.stem.core.common.Identifiable)
+ */
+ @Override
+ public void setIdentifiable(Identifiable newIdentifiable) {
+ setNode((Node)newIdentifiable);
+ } // setIdentifiable
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public Node getNode() {
+ if (node != null && node.eIsProxy()) {
+ InternalEObject oldNode = (InternalEObject)node;
+ node = (Node)eResolveProxy(oldNode);
+ if (node != oldNode) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, GraphPackage.DYNAMIC_NODE_LABEL__NODE, oldNode, node));
+ }
+ }
+ return node;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public Node basicGetNode() {
+ return node;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetNode(Node newNode, NotificationChain msgs) {
+ Node oldNode = node;
+ node = newNode;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, GraphPackage.DYNAMIC_NODE_LABEL__NODE, oldNode, newNode);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setNode(Node newNode) {
+ if (newNode != node) {
+ NotificationChain msgs = null;
+ if (node != null)
+ msgs = ((InternalEObject)node).eInverseRemove(this, GraphPackage.NODE__LABELS, Node.class, msgs);
+ if (newNode != null)
+ msgs = ((InternalEObject)newNode).eInverseAdd(this, GraphPackage.NODE__LABELS, Node.class, msgs);
+ msgs = basicSetNode(newNode, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.DYNAMIC_NODE_LABEL__NODE, newNode, newNode));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case GraphPackage.DYNAMIC_NODE_LABEL__NODE:
+ if (node != null)
+ msgs = ((InternalEObject)node).eInverseRemove(this, GraphPackage.NODE__LABELS, Node.class, msgs);
+ return basicSetNode((Node)otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case GraphPackage.DYNAMIC_NODE_LABEL__NODE:
+ return basicSetNode(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * @see org.eclipse.stem.graph.impl.DynamicLabelImpl#toString()
+ */
+ @Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder(super.toString());
+
+ sb.append(" Node:");
+ sb.append(getNode() == null ? "null" : getNode().toString());
+ return sb.toString();
+ } // toString
+
+ /**
+ * @see org.eclipse.stem.graph.impl.DynamicLabelImpl#sane()
+ */
+ @Override
+ public boolean sane() {
+ boolean retValue = super.sane();
+
+ retValue = retValue && getNode() != null ? getURIOfIdentifiableToBeLabeled()
+ .equals(getNode().getURI())
+ : true;
+ assert retValue;
+
+ retValue = retValue && getNode() == getIdentifiable();
+ assert retValue;
+
+ return retValue;
+ } // sane
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case GraphPackage.DYNAMIC_NODE_LABEL__NODE:
+ if (resolve) return getNode();
+ return basicGetNode();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case GraphPackage.DYNAMIC_NODE_LABEL__NODE:
+ setNode((Node)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case GraphPackage.DYNAMIC_NODE_LABEL__NODE:
+ setNode((Node)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case GraphPackage.DYNAMIC_NODE_LABEL__NODE:
+ return node != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == NodeLabel.class) {
+ switch (derivedFeatureID) {
+ case GraphPackage.DYNAMIC_NODE_LABEL__NODE: return GraphPackage.NODE_LABEL__NODE;
+ default: return -1;
+ }
+ }
+ return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+ if (baseClass == NodeLabel.class) {
+ switch (baseFeatureID) {
+ case GraphPackage.NODE_LABEL__NODE: return GraphPackage.DYNAMIC_NODE_LABEL__NODE;
+ default: return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+} // DynamicNodeLabelImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/EdgeImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/EdgeImpl.java
new file mode 100644
index 000000000..cfd2040d3
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/EdgeImpl.java
@@ -0,0 +1,727 @@
+package org.eclipse.stem.core.graph.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.stem.core.STEMURI;
+import org.eclipse.stem.core.common.impl.IdentifiableImpl;
+import org.eclipse.stem.core.graph.Edge;
+import org.eclipse.stem.core.graph.EdgeLabel;
+import org.eclipse.stem.core.graph.GraphFactory;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.Node;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Edge</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.graph.impl.EdgeImpl#getA <em>A</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.EdgeImpl#getNodeAURI <em>Node AURI</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.EdgeImpl#getB <em>B</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.EdgeImpl#getNodeBURI <em>Node BURI</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.EdgeImpl#getLabel <em>Label</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.EdgeImpl#isDirected <em>Directed</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class EdgeImpl extends IdentifiableImpl implements Edge {
+
+
+ /**
+ * The cached value of the '{@link #getA() <em>A</em>}' reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getA()
+ * @generated
+ * @ordered
+ */
+ protected Node a;
+
+ /**
+ * The default value of the '{@link #getNodeAURI() <em>Node AURI</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getNodeAURI()
+ * @generated
+ * @ordered
+ */
+ protected static final URI NODE_AURI_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getNodeAURI() <em>Node AURI</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getNodeAURI()
+ * @generated
+ * @ordered
+ */
+ protected URI nodeAURI = NODE_AURI_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getB() <em>B</em>}' reference. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getB()
+ * @generated
+ * @ordered
+ */
+ protected Node b;
+
+ /**
+ * The default value of the '{@link #getNodeBURI() <em>Node BURI</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getNodeBURI()
+ * @generated
+ * @ordered
+ */
+ protected static final URI NODE_BURI_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getNodeBURI() <em>Node BURI</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getNodeBURI()
+ * @generated
+ * @ordered
+ */
+ protected URI nodeBURI = NODE_BURI_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getLabel() <em>Label</em>}' containment reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getLabel()
+ * @generated
+ * @ordered
+ */
+ protected EdgeLabel label;
+
+ /**
+ * The default value of the '{@link #isDirected() <em>Directed</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #isDirected()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean DIRECTED_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isDirected() <em>Directed</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #isDirected()
+ * @generated
+ * @ordered
+ */
+ protected boolean directed = DIRECTED_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ protected EdgeImpl() {
+ super();
+// setURI(STEMURI.createURI(URI_TYPE_EDGE_SEGMENT + "/"
+// + STEMURI.generateUniquePart()));
+ setTypeURI(STEMURI.EDGE_TYPE_URI);
+ } // EdgeImpl
+
+ /**
+ * Create an undirected edge between two nodes
+ *
+ * @param nodeA
+ * the first node
+ * @param nodeB
+ * the second node
+ * @return an edge between nodeA and nodeB, if directed then from nodeA to
+ * nodeB
+ */
+ public static Edge createEdge(final Node nodeA, final Node nodeB) {
+ return createEdge(nodeA, nodeB, false, null);
+ } // createEdge
+
+ /**
+ * Create an undirected edge between two nodes
+ *
+ * @param nodeA
+ * the first node
+ * @param nodeB
+ * the second node
+ * @param edgeURI
+ * if non-null then the URI to use for the edge, if null then the
+ * default is used.
+ *
+ * @return an edge between nodeA and nodeB, if directed then from nodeA to
+ * nodeB
+ */
+ public static Edge createEdge(final Node nodeA, final Node nodeB,
+ final URI edgeURI) {
+ return createEdge(nodeA, nodeB, false, edgeURI);
+ } // createEdge
+
+ /**
+ * Create an edge between the two nodes
+ *
+ * @param nodeA
+ * the first node
+ * @param nodeB
+ * the second node
+ * @return an edge between nodeA and nodeB, if directed then from nodeA to
+ * nodeB
+ */
+ public static Edge createEdge(final Node nodeA, final Node nodeB,
+ final boolean directed) {
+ return createEdge(nodeA, nodeB, directed, null);
+ } // createEdge
+
+ /**
+ * Create an edge between the two nodes
+ *
+ * @param nodeA
+ * the first node
+ * @param nodeB
+ * the second node
+ * @param edgeURI
+ * if non-null then the URI to use for the edge, if null then the
+ * default is used.
+ *
+ * @return an edge between nodeA and nodeB, if directed then from nodeA to
+ * nodeB
+ */
+ public static Edge createEdge(final Node nodeA, final Node nodeB,
+ final boolean directed, final URI edgeURI) {
+ final Edge retValue = createEdge(nodeA.getURI(), nodeB.getURI(),
+ directed, edgeURI);
+ retValue.setA(nodeA);
+ retValue.setB(nodeB);
+
+ nodeA.getEdges().add(retValue);
+ nodeB.getEdges().add(retValue);
+
+ return retValue;
+ } // createEdge
+
+ /**
+ * Create an undirected edge with two node URI's
+ *
+ * @param nodeAURI
+ * the first node's URI
+ * @param nodeBURI
+ * the second node's URI
+ *
+ * @return an edge with two URI's, if directed then from nodeAURI to
+ * nodeBURI
+ */
+ public static Edge createEdge(final URI nodeAURI, final URI nodeBURI) {
+ return createEdge(nodeAURI, nodeBURI, false, null);
+ } // createEdge
+
+ /**
+ * Create an undirected edge with two node URI's
+ *
+ * @param nodeAURI
+ * the first node's URI
+ * @param nodeBURI
+ * the second node's URI
+ * @param edgeURI
+ * if non-null then the URI to use for the edge, if null then the
+ * default is used.
+ *
+ * @return an edge with two URI's, if directed then from nodeAURI to
+ * nodeBURI
+ */
+ public static Edge createEdge(final URI nodeAURI, final URI nodeBURI,
+ final URI edgeURI) {
+ return createEdge(nodeAURI, nodeBURI, false, edgeURI);
+ } // createEdge
+
+ /**
+ * Create an edge with two node URI's
+ *
+ * @param nodeAURI
+ * the first node's URI
+ * @param nodeBURI
+ * the second node's URI
+ * @param directed
+ * true if the edge is directed from nodeAURI to nodeBURI
+ *
+ * @return an edge with two URI's, if directed then from nodeAURI to
+ * nodeBURI
+ */
+ public static Edge createEdge(final URI nodeAURI, final URI nodeBURI,
+ final boolean directed) {
+ return createEdge(nodeAURI, nodeBURI, directed, null);
+ } // createEdge
+
+ /**
+ * Create an edge with two node URI's
+ *
+ * @param nodeAURI
+ * the first node's URI
+ * @param nodeBURI
+ * the second node's URI
+ * @param directed
+ * true if the edge is directed from nodeAURI to nodeBURI
+ *
+ * @param edgeURI
+ * if non-null then the URI to use for the edge, if null then the
+ * default is used.
+ *
+ * @return an edge with two URI's, if directed then from nodeAURI to
+ * nodeBURI
+ */
+ public static Edge createEdge(final URI nodeAURI, final URI nodeBURI,
+ final boolean directed, final URI edgeURI) {
+ final Edge retValue = GraphFactory.eINSTANCE.createEdge();
+ retValue.setNodeAURI(nodeAURI);
+ retValue.setNodeBURI(nodeBURI);
+ retValue.setDirected(directed);
+ // Edge URI specified?
+ if (edgeURI != null)
+ // Yes
+ retValue.setURI(edgeURI);
+ else
+ retValue.setURI(STEMURI.createURI(URI_TYPE_EDGE_SEGMENT + "/"
+ + STEMURI.generateUniquePart()));
+ return retValue;
+ } // createEdge
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return GraphPackage.Literals.EDGE;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public Node getA() {
+ if (a != null && a.eIsProxy()) {
+ InternalEObject oldA = (InternalEObject)a;
+ a = (Node)eResolveProxy(oldA);
+ if (a != oldA) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, GraphPackage.EDGE__A, oldA, a));
+ }
+ }
+ return a;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public Node basicGetA() {
+ return a;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setA(Node newA) {
+ Node oldA = a;
+ a = newA;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.EDGE__A, oldA, a));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public URI getNodeAURI() {
+ return nodeAURI;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setNodeAURI(URI newNodeAURI) {
+ URI oldNodeAURI = nodeAURI;
+ nodeAURI = newNodeAURI;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.EDGE__NODE_AURI, oldNodeAURI, nodeAURI));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public Node getB() {
+ if (b != null && b.eIsProxy()) {
+ InternalEObject oldB = (InternalEObject)b;
+ b = (Node)eResolveProxy(oldB);
+ if (b != oldB) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, GraphPackage.EDGE__B, oldB, b));
+ }
+ }
+ return b;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public Node basicGetB() {
+ return b;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setB(Node newB) {
+ Node oldB = b;
+ b = newB;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.EDGE__B, oldB, b));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public URI getNodeBURI() {
+ return nodeBURI;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setNodeBURI(URI newNodeBURI) {
+ URI oldNodeBURI = nodeBURI;
+ nodeBURI = newNodeBURI;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.EDGE__NODE_BURI, oldNodeBURI, nodeBURI));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public EdgeLabel getLabel() {
+ return label;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetLabel(EdgeLabel newLabel, NotificationChain msgs) {
+ EdgeLabel oldLabel = label;
+ label = newLabel;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, GraphPackage.EDGE__LABEL, oldLabel, newLabel);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLabel(EdgeLabel newLabel) {
+ if (newLabel != label) {
+ NotificationChain msgs = null;
+ if (label != null)
+ msgs = ((InternalEObject)label).eInverseRemove(this, GraphPackage.EDGE_LABEL__EDGE, EdgeLabel.class, msgs);
+ if (newLabel != null)
+ msgs = ((InternalEObject)newLabel).eInverseAdd(this, GraphPackage.EDGE_LABEL__EDGE, EdgeLabel.class, msgs);
+ msgs = basicSetLabel(newLabel, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.EDGE__LABEL, newLabel, newLabel));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isDirected() {
+ return directed;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDirected(boolean newDirected) {
+ boolean oldDirected = directed;
+ directed = newDirected;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.EDGE__DIRECTED, oldDirected, directed));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ *
+ * Given one node of an edge, return the other.
+ *
+ * <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public Node getOtherNode(Node node) {
+ assert getA().equals(node) || getB().equals(node);
+ return getA().equals(node) ? getB() : getA();
+ } // getOtherNode
+
+ /**
+ * <!-- begin-user-doc -->
+ *
+ * @return <code>true</code> if the node is B and the edge is directed.
+ *
+ * <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public boolean isDirectedAt(Node node) {
+ return isDirected() && ( getB() != null && getB().equals(node)
+ || getB() == null && getNodeBURI().equals(node.getURI()));
+ } // isDirectedAt
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case GraphPackage.EDGE__LABEL:
+ if (label != null)
+ msgs = ((InternalEObject)label).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - GraphPackage.EDGE__LABEL, null, msgs);
+ return basicSetLabel((EdgeLabel)otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case GraphPackage.EDGE__LABEL:
+ return basicSetLabel(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case GraphPackage.EDGE__A:
+ if (resolve) return getA();
+ return basicGetA();
+ case GraphPackage.EDGE__NODE_AURI:
+ return getNodeAURI();
+ case GraphPackage.EDGE__B:
+ if (resolve) return getB();
+ return basicGetB();
+ case GraphPackage.EDGE__NODE_BURI:
+ return getNodeBURI();
+ case GraphPackage.EDGE__LABEL:
+ return getLabel();
+ case GraphPackage.EDGE__DIRECTED:
+ return isDirected();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case GraphPackage.EDGE__A:
+ setA((Node)newValue);
+ return;
+ case GraphPackage.EDGE__NODE_AURI:
+ setNodeAURI((URI)newValue);
+ return;
+ case GraphPackage.EDGE__B:
+ setB((Node)newValue);
+ return;
+ case GraphPackage.EDGE__NODE_BURI:
+ setNodeBURI((URI)newValue);
+ return;
+ case GraphPackage.EDGE__LABEL:
+ setLabel((EdgeLabel)newValue);
+ return;
+ case GraphPackage.EDGE__DIRECTED:
+ setDirected((Boolean)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case GraphPackage.EDGE__A:
+ setA((Node)null);
+ return;
+ case GraphPackage.EDGE__NODE_AURI:
+ setNodeAURI(NODE_AURI_EDEFAULT);
+ return;
+ case GraphPackage.EDGE__B:
+ setB((Node)null);
+ return;
+ case GraphPackage.EDGE__NODE_BURI:
+ setNodeBURI(NODE_BURI_EDEFAULT);
+ return;
+ case GraphPackage.EDGE__LABEL:
+ setLabel((EdgeLabel)null);
+ return;
+ case GraphPackage.EDGE__DIRECTED:
+ setDirected(DIRECTED_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case GraphPackage.EDGE__A:
+ return a != null;
+ case GraphPackage.EDGE__NODE_AURI:
+ return NODE_AURI_EDEFAULT == null ? nodeAURI != null : !NODE_AURI_EDEFAULT.equals(nodeAURI);
+ case GraphPackage.EDGE__B:
+ return b != null;
+ case GraphPackage.EDGE__NODE_BURI:
+ return NODE_BURI_EDEFAULT == null ? nodeBURI != null : !NODE_BURI_EDEFAULT.equals(nodeBURI);
+ case GraphPackage.EDGE__LABEL:
+ return label != null;
+ case GraphPackage.EDGE__DIRECTED:
+ return directed != DIRECTED_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+
+ StringBuffer result = new StringBuffer("");
+
+ result.append(getA() != null ? getA() : ( getNodeAURI() != null ? getNodeAURI().toString() : "null"));
+
+ result.append(isDirected() ? " -> " : " -- ");
+
+ result.append(getB() != null ? getB() : ( getNodeBURI() != null ? getNodeBURI().toString() : "null"));
+ return result.toString();
+ } // toString
+
+ /**
+ * @see org.eclipse.stem.common.impl.IdentifiableImpl#sane()
+ * @generated NOT
+ */
+ @Override
+ public boolean sane() {
+
+ boolean retValue = super.sane();
+
+ retValue = retValue && getNodeAURI() != null;
+ assert retValue;
+
+ retValue = retValue && getNodeBURI() != null;
+ assert retValue;
+
+ retValue = retValue && getLabel() != null;
+ assert retValue;
+
+ // A node?
+ if (getA() != null) {
+ // Yes
+ // If this edge links to a node, then the node should have this edge
+ // as one of its edges
+ retValue = retValue && getA().getEdges().contains(this);
+ assert retValue;
+
+ // This edge should be hooked up to the correct node too.
+ retValue = retValue && getNodeAURI().equals(getA().getURI());
+ assert retValue;
+ } // if A Node
+
+ // B node?
+ if (getB() != null) {
+ // Yes
+ // If this edge links to a node, then the node should have this edge
+ // as one of its edges
+ retValue = retValue && getB().getEdges().contains(this);
+ assert retValue;
+
+ // This edge should be hooked up to the correct node too.
+ retValue = retValue && getNodeBURI().equals(getB().getURI());
+ assert retValue;
+ }
+
+ // Of course if one node is set, so should the other
+ retValue = retValue
+ && ((getA() == null && getB() == null) || (getA() != null && getB() != null));
+ assert retValue;
+
+ // The label should reference this edge with its URI
+ retValue = retValue && getLabel().getURIOfIdentifiableToBeLabeled() != null;
+ assert retValue;
+ retValue = retValue
+ && getLabel().getURIOfIdentifiableToBeLabeled().equals(getURI());
+ assert retValue;
+
+ // And the label should be sane
+ retValue = retValue && getLabel().sane();
+ assert retValue;
+
+ return retValue;
+ } // sane
+
+} // EdgeImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/EdgeLabelImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/EdgeLabelImpl.java
new file mode 100644
index 000000000..5618f02b3
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/EdgeLabelImpl.java
@@ -0,0 +1,212 @@
+package org.eclipse.stem.core.graph.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.graph.Edge;
+import org.eclipse.stem.core.graph.EdgeLabel;
+import org.eclipse.stem.core.graph.GraphPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Edge Label</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.graph.impl.EdgeLabelImpl#getEdge <em>Edge</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class EdgeLabelImpl extends LabelImpl implements EdgeLabel {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EdgeLabelImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return GraphPackage.Literals.EDGE_LABEL;
+ }
+
+
+ @Override
+ public Identifiable getIdentifiable() {
+ return getEdge();
+ }
+
+ @Override
+ public void setIdentifiable(Identifiable newIdentifiable) {
+ setEdge((Edge)newIdentifiable);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Edge getEdge() {
+ if (eContainerFeatureID() != GraphPackage.EDGE_LABEL__EDGE) return null;
+ return (Edge)eContainer();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetEdge(Edge newEdge, NotificationChain msgs) {
+ msgs = eBasicSetContainer((InternalEObject)newEdge, GraphPackage.EDGE_LABEL__EDGE, msgs);
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setEdge(Edge newEdge) {
+ if (newEdge != eInternalContainer() || (eContainerFeatureID() != GraphPackage.EDGE_LABEL__EDGE && newEdge != null)) {
+ if (EcoreUtil.isAncestor(this, newEdge))
+ throw new IllegalArgumentException("Recursive containment not allowed for " + toString()); //$NON-NLS-1$
+ NotificationChain msgs = null;
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ if (newEdge != null)
+ msgs = ((InternalEObject)newEdge).eInverseAdd(this, GraphPackage.EDGE__LABEL, Edge.class, msgs);
+ msgs = basicSetEdge(newEdge, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.EDGE_LABEL__EDGE, newEdge, newEdge));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case GraphPackage.EDGE_LABEL__EDGE:
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ return basicSetEdge((Edge)otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case GraphPackage.EDGE_LABEL__EDGE:
+ return basicSetEdge(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
+ switch (eContainerFeatureID()) {
+ case GraphPackage.EDGE_LABEL__EDGE:
+ return eInternalContainer().eInverseRemove(this, GraphPackage.EDGE__LABEL, Edge.class, msgs);
+ }
+ return super.eBasicRemoveFromContainerFeature(msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case GraphPackage.EDGE_LABEL__EDGE:
+ return getEdge();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case GraphPackage.EDGE_LABEL__EDGE:
+ setEdge((Edge)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case GraphPackage.EDGE_LABEL__EDGE:
+ setEdge((Edge)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case GraphPackage.EDGE_LABEL__EDGE:
+ return getEdge() != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //EdgeLabelImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/ExchangeImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/ExchangeImpl.java
new file mode 100644
index 000000000..5af3d5685
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/ExchangeImpl.java
@@ -0,0 +1,305 @@
+package org.eclipse.stem.core.graph.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2011 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.stem.core.graph.Exchange;
+import org.eclipse.stem.core.graph.ExchangeType;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.Label;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Exchange</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.graph.impl.ExchangeImpl#getOtherLabel <em>Other Label</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.ExchangeImpl#getCount <em>Count</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.ExchangeImpl#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ExchangeImpl extends EObjectImpl implements Exchange {
+ /**
+ * The cached value of the '{@link #getOtherLabel() <em>Other Label</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOtherLabel()
+ * @generated
+ * @ordered
+ */
+ protected Label otherLabel;
+
+ /**
+ * The default value of the '{@link #getCount() <em>Count</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCount()
+ * @generated
+ * @ordered
+ */
+ protected static final double COUNT_EDEFAULT = 0.0;
+
+ /**
+ * The cached value of the '{@link #getCount() <em>Count</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCount()
+ * @generated
+ * @ordered
+ */
+ protected double count = COUNT_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected static final ExchangeType TYPE_EDEFAULT = ExchangeType.BIRTHS_AND_DEATHS;
+
+ /**
+ * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected ExchangeType type = TYPE_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ExchangeImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return GraphPackage.Literals.EXCHANGE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Label getOtherLabel() {
+ if (otherLabel != null && otherLabel.eIsProxy()) {
+ InternalEObject oldOtherLabel = (InternalEObject)otherLabel;
+ otherLabel = (Label)eResolveProxy(oldOtherLabel);
+ if (otherLabel != oldOtherLabel) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, GraphPackage.EXCHANGE__OTHER_LABEL, oldOtherLabel, otherLabel));
+ }
+ }
+ return otherLabel;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Label basicGetOtherLabel() {
+ return otherLabel;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setOtherLabel(Label newOtherLabel) {
+ Label oldOtherLabel = otherLabel;
+ otherLabel = newOtherLabel;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.EXCHANGE__OTHER_LABEL, oldOtherLabel, otherLabel));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public double getCount() {
+ return count;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setCount(double newCount) {
+ double oldCount = count;
+ count = newCount;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.EXCHANGE__COUNT, oldCount, count));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ExchangeType getType() {
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setType(ExchangeType newType) {
+ ExchangeType oldType = type;
+ type = newType == null ? TYPE_EDEFAULT : newType;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.EXCHANGE__TYPE, oldType, type));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case GraphPackage.EXCHANGE__OTHER_LABEL:
+ if (resolve) return getOtherLabel();
+ return basicGetOtherLabel();
+ case GraphPackage.EXCHANGE__COUNT:
+ return getCount();
+ case GraphPackage.EXCHANGE__TYPE:
+ return getType();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case GraphPackage.EXCHANGE__OTHER_LABEL:
+ setOtherLabel((Label)newValue);
+ return;
+ case GraphPackage.EXCHANGE__COUNT:
+ setCount((Double)newValue);
+ return;
+ case GraphPackage.EXCHANGE__TYPE:
+ setType((ExchangeType)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case GraphPackage.EXCHANGE__OTHER_LABEL:
+ setOtherLabel((Label)null);
+ return;
+ case GraphPackage.EXCHANGE__COUNT:
+ setCount(COUNT_EDEFAULT);
+ return;
+ case GraphPackage.EXCHANGE__TYPE:
+ setType(TYPE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case GraphPackage.EXCHANGE__OTHER_LABEL:
+ return otherLabel != null;
+ case GraphPackage.EXCHANGE__COUNT:
+ return count != COUNT_EDEFAULT;
+ case GraphPackage.EXCHANGE__TYPE:
+ return type != TYPE_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (count: "); //$NON-NLS-1$
+ result.append(count);
+ result.append(", type: "); //$NON-NLS-1$
+ result.append(type);
+ result.append(')');
+ return result.toString();
+ }
+
+ public int compareTo(Exchange o) {
+ String thisIdentifier;
+ String otherIdentifier;
+
+ if (getType() == ExchangeType.BIRTHS_AND_DEATHS) {
+ thisIdentifier = getType().getName();
+ } else {
+ thisIdentifier = getType().getName() + "," + getOtherLabel().getURI();
+ }
+
+ if (o.getType() == ExchangeType.BIRTHS_AND_DEATHS) {
+ otherIdentifier = o.getType().getName();
+ } else {
+ otherIdentifier = o.getType().getName() + "," + o.getOtherLabel().getURI();
+ }
+
+ return thisIdentifier.compareTo(otherIdentifier);
+ }
+
+} //ExchangeImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/GraphFactoryImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/GraphFactoryImpl.java
new file mode 100644
index 000000000..d89c5ccec
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/GraphFactoryImpl.java
@@ -0,0 +1,316 @@
+package org.eclipse.stem.core.graph.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import java.util.Map;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.graph.Edge;
+import org.eclipse.stem.core.graph.Exchange;
+import org.eclipse.stem.core.graph.ExchangeType;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.graph.GraphFactory;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.Label;
+import org.eclipse.stem.core.graph.Node;
+import org.eclipse.stem.core.graph.NodeLabel;
+import org.eclipse.stem.core.graph.SimpleGraphPartitioner;
+import org.eclipse.stem.core.graph.UnresolvedIdentifiable;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class GraphFactoryImpl extends EFactoryImpl implements GraphFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static GraphFactory init() {
+ try {
+ GraphFactory theGraphFactory = (GraphFactory)EPackage.Registry.INSTANCE.getEFactory("http:///org/eclipse/stem/core/graph.ecore"); //$NON-NLS-1$
+ if (theGraphFactory != null) {
+ return theGraphFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new GraphFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public GraphFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case GraphPackage.EDGE: return createEdge();
+ case GraphPackage.GRAPH: return createGraph();
+ case GraphPackage.NODE: return createNode();
+ case GraphPackage.UNRESOLVED_IDENTIFIABLE: return createUnresolvedIdentifiable();
+ case GraphPackage.URI_TO_IDENTIFIABLE_MAP_ENTRY: return (EObject)createURIToIdentifiableMapEntry();
+ case GraphPackage.URI_TO_EDGE_MAP_ENTRY: return (EObject)createURIToEdgeMapEntry();
+ case GraphPackage.URI_TO_NODE_MAP_ENTRY: return (EObject)createURIToNodeMapEntry();
+ case GraphPackage.URI_TO_LABEL_MAP_ENTRY: return (EObject)createURIToLabelMapEntry();
+ case GraphPackage.URI_TO_NODE_LABEL_MAP_ENTRY: return (EObject)createURIToNodeLabelMapEntry();
+ case GraphPackage.SIMPLE_GRAPH_PARTITIONER: return createSimpleGraphPartitioner();
+ case GraphPackage.EXCHANGE: return createExchange();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object createFromString(EDataType eDataType, String initialValue) {
+ switch (eDataType.getClassifierID()) {
+ case GraphPackage.EXCHANGE_TYPE:
+ return createExchangeTypeFromString(eDataType, initialValue);
+ case GraphPackage.ILLEGAL_ARGUMENT_EXCEPTION:
+ return createIllegalArgumentExceptionFromString(eDataType, initialValue);
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String convertToString(EDataType eDataType, Object instanceValue) {
+ switch (eDataType.getClassifierID()) {
+ case GraphPackage.EXCHANGE_TYPE:
+ return convertExchangeTypeToString(eDataType, instanceValue);
+ case GraphPackage.ILLEGAL_ARGUMENT_EXCEPTION:
+ return convertIllegalArgumentExceptionToString(eDataType, instanceValue);
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Edge createEdge() {
+ EdgeImpl edge = new EdgeImpl();
+ return edge;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Graph createGraph() {
+ GraphImpl graph = new GraphImpl();
+ return graph;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Node createNode() {
+ NodeImpl node = new NodeImpl();
+ return node;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public UnresolvedIdentifiable createUnresolvedIdentifiable() {
+ UnresolvedIdentifiableImpl unresolvedIdentifiable = new UnresolvedIdentifiableImpl();
+ return unresolvedIdentifiable;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Map.Entry<URI, Identifiable> createURIToIdentifiableMapEntry() {
+ URIToIdentifiableMapEntryImpl uriToIdentifiableMapEntry = new URIToIdentifiableMapEntryImpl();
+ return uriToIdentifiableMapEntry;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Map.Entry<URI, Edge> createURIToEdgeMapEntry() {
+ URIToEdgeMapEntryImpl uriToEdgeMapEntry = new URIToEdgeMapEntryImpl();
+ return uriToEdgeMapEntry;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Map.Entry<URI, Node> createURIToNodeMapEntry() {
+ URIToNodeMapEntryImpl uriToNodeMapEntry = new URIToNodeMapEntryImpl();
+ return uriToNodeMapEntry;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Map.Entry<URI, Label> createURIToLabelMapEntry() {
+ URIToLabelMapEntryImpl uriToLabelMapEntry = new URIToLabelMapEntryImpl();
+ return uriToLabelMapEntry;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Map.Entry<URI, NodeLabel> createURIToNodeLabelMapEntry() {
+ URIToNodeLabelMapEntryImpl uriToNodeLabelMapEntry = new URIToNodeLabelMapEntryImpl();
+ return uriToNodeLabelMapEntry;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SimpleGraphPartitioner createSimpleGraphPartitioner() {
+ SimpleGraphPartitionerImpl simpleGraphPartitioner = new SimpleGraphPartitionerImpl();
+ return simpleGraphPartitioner;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Exchange createExchange() {
+ ExchangeImpl exchange = new ExchangeImpl();
+ return exchange;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ExchangeType createExchangeTypeFromString(EDataType eDataType, String initialValue) {
+ ExchangeType result = ExchangeType.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertExchangeTypeToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public URI createURIFromString(EDataType eDataType, String initialValue) {
+ return URI.createURI(initialValue);
+ } // createURIFromString
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public String convertURIToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue.toString();
+ } // convertURIToString
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IllegalArgumentException createIllegalArgumentExceptionFromString(EDataType eDataType, String initialValue) {
+ return (IllegalArgumentException)super.createFromString(eDataType, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertIllegalArgumentExceptionToString(EDataType eDataType, Object instanceValue) {
+ return super.convertToString(eDataType, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public GraphPackage getGraphPackage() {
+ return (GraphPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static GraphPackage getPackage() {
+ return GraphPackage.eINSTANCE;
+ }
+
+} //GraphFactoryImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/GraphImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/GraphImpl.java
new file mode 100644
index 000000000..7400ac963
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/GraphImpl.java
@@ -0,0 +1,969 @@
+package org.eclipse.stem.core.graph.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.Iterator;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.ECollections;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.emf.ecore.util.EcoreEMap;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.stem.core.CorePlugin;
+import org.eclipse.stem.core.STEMURI;
+import org.eclipse.stem.core.common.IdentifiableFilter;
+import org.eclipse.stem.core.common.impl.IdentifiableFilterImpl;
+import org.eclipse.stem.core.common.impl.IdentifiableImpl;
+import org.eclipse.stem.core.graph.DynamicLabel;
+import org.eclipse.stem.core.graph.Edge;
+import org.eclipse.stem.core.graph.EdgeLabel;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.Label;
+import org.eclipse.stem.core.graph.Node;
+import org.eclipse.stem.core.graph.NodeLabel;
+import org.eclipse.stem.core.graph.UnresolvedIdentifiable;
+import org.eclipse.stem.core.model.Decorator;
+import org.eclipse.stem.core.model.ModelPackage;
+import org.eclipse.stem.core.model.STEMTime;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Graph</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.graph.impl.GraphImpl#getEdges <em>Edges</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.GraphImpl#getNodes <em>Nodes</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.GraphImpl#getGraphLabels <em>Graph Labels</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.GraphImpl#getNodeLabels <em>Node Labels</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.GraphImpl#getDynamicLabels <em>Dynamic Labels</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.GraphImpl#getNumEdges <em>Num Edges</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.GraphImpl#getNumNodes <em>Num Nodes</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.GraphImpl#getNumGraphLabels <em>Num Graph Labels</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.GraphImpl#getNumNodeLabels <em>Num Node Labels</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.GraphImpl#getNumDynamicLabels <em>Num Dynamic Labels</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.GraphImpl#getUnresolvedIdentifiables <em>Unresolved Identifiables</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.GraphImpl#getDecorators <em>Decorators</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.GraphImpl#getTime <em>Time</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class GraphImpl extends IdentifiableImpl implements Graph {
+
+
+ /**
+ * The cached value of the '{@link #getEdges() <em>Edges</em>}' map. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getEdges()
+ * @generated
+ * @ordered
+ */
+ protected EMap<URI, Edge> edges;
+
+ /**
+ * The cached value of the '{@link #getNodes() <em>Nodes</em>}' map. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getNodes()
+ * @generated
+ * @ordered
+ */
+ protected EMap<URI, Node> nodes;
+
+ /**
+ * The cached value of the '{@link #getGraphLabels() <em>Graph Labels</em>}' map.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getGraphLabels()
+ * @generated
+ * @ordered
+ */
+ protected EMap<URI, Label> graphLabels;
+
+ /**
+ * The cached value of the '{@link #getNodeLabels() <em>Node Labels</em>}' map.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getNodeLabels()
+ * @generated
+ * @ordered
+ */
+ protected EMap<URI, NodeLabel> nodeLabels;
+
+ /**
+ * The cached value of the '{@link #getDynamicLabels() <em>Dynamic Labels</em>}' reference list.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getDynamicLabels()
+ * @generated
+ * @ordered
+ */
+ protected EList<DynamicLabel> dynamicLabels;
+
+ /**
+ * The default value of the '{@link #getNumEdges() <em>Num Edges</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getNumEdges()
+ * @generated
+ * @ordered
+ */
+ protected static final int NUM_EDGES_EDEFAULT = 0;
+
+ /**
+ * The default value of the '{@link #getNumNodes() <em>Num Nodes</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getNumNodes()
+ * @generated
+ * @ordered
+ */
+ protected static final int NUM_NODES_EDEFAULT = 0;
+
+ /**
+ * The default value of the '{@link #getNumGraphLabels() <em>Num Graph Labels</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getNumGraphLabels()
+ * @generated
+ * @ordered
+ */
+ protected static final int NUM_GRAPH_LABELS_EDEFAULT = 0;
+
+ /**
+ * The default value of the '{@link #getNumNodeLabels() <em>Num Node Labels</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getNumNodeLabels()
+ * @generated
+ * @ordered
+ */
+ protected static final int NUM_NODE_LABELS_EDEFAULT = 0;
+
+ /**
+ * The default value of the '{@link #getNumDynamicLabels() <em>Num Dynamic Labels</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getNumDynamicLabels()
+ * @generated
+ * @ordered
+ */
+ protected static final int NUM_DYNAMIC_LABELS_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getUnresolvedIdentifiables() <em>Unresolved Identifiables</em>}' containment reference list.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getUnresolvedIdentifiables()
+ * @generated
+ * @ordered
+ */
+ protected EList<UnresolvedIdentifiable> unresolvedIdentifiables;
+
+ /**
+ * The cached value of the '{@link #getDecorators() <em>Decorators</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDecorators()
+ * @generated
+ * @ordered
+ */
+ protected EList<Decorator> decorators;
+
+ /**
+ * The cached value of the '{@link #getTime() <em>Time</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTime()
+ * @generated
+ * @ordered
+ */
+ protected STEMTime time;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ protected GraphImpl() {
+ super();
+ setURI(STEMURI.createURI(URI_TYPE_GRAPH_SEGMENT + "/"
+ + STEMURI.generateUniquePart()));
+ setTypeURI(STEMURI.GRAPH_TYPE_URI);
+ } // GraphImpl
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return GraphPackage.Literals.GRAPH;
+ }
+
+ /**
+ * @see org.eclipse.stem.common.impl.IdentifiableImpl#setURI(org.eclipse.emf.common.util.URI)
+ * @generated NOT
+ */
+ @Override
+ public void setURI(URI newURI) {
+ super.setURI(newURI);
+ // Now go through all the graph labels and update then to reference the
+ // new URI
+ for (final Iterator<Label> labelIter = getGraphLabels().values().iterator(); labelIter
+ .hasNext();) {
+ final Label label = labelIter.next();
+ label.setURIOfIdentifiableToBeLabeled(newURI);
+ } // for
+ } // setURI
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public EMap<URI, Edge> getEdges() {
+ if (edges == null) {
+ edges = new EcoreEMap<URI,Edge>(GraphPackage.Literals.URI_TO_EDGE_MAP_ENTRY, URIToEdgeMapEntryImpl.class, this, GraphPackage.GRAPH__EDGES);
+ }
+ return edges;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public EMap<URI, Node> getNodes() {
+ if (nodes == null) {
+ nodes = new EcoreEMap<URI,Node>(GraphPackage.Literals.URI_TO_NODE_MAP_ENTRY, URIToNodeMapEntryImpl.class, this, GraphPackage.GRAPH__NODES);
+ }
+ return nodes;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<DynamicLabel> getDynamicLabels() {
+ if (dynamicLabels == null) {
+ dynamicLabels = new EObjectResolvingEList<DynamicLabel>(DynamicLabel.class, this, GraphPackage.GRAPH__DYNAMIC_LABELS);
+ }
+ return dynamicLabels;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public EMap<URI, Label> getGraphLabels() {
+ if (graphLabels == null) {
+ graphLabels = new EcoreEMap<URI,Label>(GraphPackage.Literals.URI_TO_LABEL_MAP_ENTRY, URIToLabelMapEntryImpl.class, this, GraphPackage.GRAPH__GRAPH_LABELS);
+ }
+ return graphLabels;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<UnresolvedIdentifiable> getUnresolvedIdentifiables() {
+ if (unresolvedIdentifiables == null) {
+ unresolvedIdentifiables = new EObjectContainmentEList<UnresolvedIdentifiable>(UnresolvedIdentifiable.class, this, GraphPackage.GRAPH__UNRESOLVED_IDENTIFIABLES);
+ }
+ return unresolvedIdentifiables;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Decorator> getDecorators() {
+ if (decorators == null) {
+ decorators = new EObjectContainmentWithInverseEList<Decorator>(Decorator.class, this, GraphPackage.GRAPH__DECORATORS, ModelPackage.DECORATOR__GRAPH);
+ }
+ return decorators;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public STEMTime getTime() {
+ return time;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetTime(STEMTime newTime, NotificationChain msgs) {
+ STEMTime oldTime = time;
+ time = newTime;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, GraphPackage.GRAPH__TIME, oldTime, newTime);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTime(STEMTime newTime) {
+ if (newTime != time) {
+ NotificationChain msgs = null;
+ if (time != null)
+ msgs = ((InternalEObject)time).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - GraphPackage.GRAPH__TIME, null, msgs);
+ if (newTime != null)
+ msgs = ((InternalEObject)newTime).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - GraphPackage.GRAPH__TIME, null, msgs);
+ msgs = basicSetTime(newTime, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.GRAPH__TIME, newTime, newTime));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ *
+ * Return all of the Node Labels in the graph that have a particular type
+ * URI.
+ *
+ * <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public EList<NodeLabel> getNodeLabelsByTypeURI(URI typeURI) {
+ // We could perform this function in a number of ways. We could, for
+ // instance, create a Map between the type URI's and the instances,
+ // however if we do that then we do two things: 1) make management of
+ // the collection of instances more complicated (we have to add them to
+ // two maps), and, 2) we "bloat" the serialization as we now basically
+ // double the size of the serialized collection(s).
+ // Given that this method is called infrequently it's probably better to
+ // just do a "dumb" sequential scan of the instances and match them.
+ // We can always change out minds later.
+
+ final EList<NodeLabel> retValue = new BasicEList<NodeLabel>();
+
+ for (final Iterator<NodeLabel> nodeLabelIter = getNodeLabels().values().iterator(); nodeLabelIter
+ .hasNext();) {
+ final NodeLabel nodeLabel = nodeLabelIter.next();
+ // Does this one the type we're looking for?
+ if (nodeLabel.getTypeURI().equals(typeURI)) {
+ // Yes
+ retValue.add(nodeLabel);
+ }
+ } // for each nodeLabel
+
+ // Stefan 7/23/09. If need to guarantee the order of objects this list
+ // being the same for each call since the list is used to partition
+ // the work up among multiple worker threads. Luckily this call
+ // is only made once for every decorator in the beginning of a simulation
+ // so sorting is not expensive.
+
+ ECollections.sort(retValue, new Comparator<NodeLabel>() {
+
+ public int compare(NodeLabel arg0, NodeLabel arg1) {
+ Node n1 = arg0.getNode();
+ Node n2 = arg1.getNode();
+ if(n1 == null) {
+ CorePlugin.logError("Label "+arg0.getClass()+" "+arg0+" uri:"+arg0.getURI()+" node is null", new Exception());
+ return 0;
+ }
+ if(n2 == null) {
+ CorePlugin.logError("Label "+arg1.getClass()+" "+arg1+" uri:"+arg1.getURI()+" node is null", new Exception());
+ return 0;
+ }
+ URI u1 = n1.getURI();
+ URI u2 = n2.getURI();
+ if(u1 == null) {
+ CorePlugin.logError("Node "+n1+" missing URI", new Exception());
+ return 0;
+ }
+ if(u2 == null) {
+ CorePlugin.logError("Node "+n2+" missing URI", new Exception());
+ return 0;
+ }
+
+ return u1.toString().compareTo(u2.toString());
+ }
+
+ });
+
+ return retValue;
+ } // getNodeLabelsByTypeURI
+
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public EMap<URI, NodeLabel> getNodeLabels() {
+ if (nodeLabels == null) {
+ nodeLabels = new EcoreEMap<URI,NodeLabel>(GraphPackage.Literals.URI_TO_NODE_LABEL_MAP_ENTRY, URIToNodeLabelMapEntryImpl.class, this, GraphPackage.GRAPH__NODE_LABELS);
+ }
+ return nodeLabels;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public int getNumEdges() {
+ return getEdges() == null ? 0 : getEdges().size();
+ } // getNumEdges
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public int getNumNodes() {
+ return getNodes() == null ? 0 : getNodes().size();
+ } // getNumNodes
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public int getNumGraphLabels() {
+ return getGraphLabels() == null ? 0 : getGraphLabels().size();
+ } // getNumGraphLabels
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public int getNumNodeLabels() {
+ return getNodeLabels() == null ? 0 : getNodeLabels().size();
+ } // getNumNodeLabels
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public int getNumDynamicLabels() {
+ return getDynamicLabels() == null ? 0 : getDynamicLabels().size();
+ } // getNumDynamicLabels
+
+ /**
+ * <!-- begin-user-doc -->
+ *
+ * This method adds the {@link Edge}s, {@link Node}s, {@link Label}s and {@link Decorator}
+ * from another graph to the collections maintained by this graph.
+ * <p>
+ * It does not attempt to resolve
+ * connections between Edges and the Nodes they reference.
+ * </p>
+ * <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public void addGraph(final Graph graph, IdentifiableFilter filter) {
+ IdentifiableFilterImpl _filter = (IdentifiableFilterImpl)filter;
+ EMap<URI, Edge>edges = graph.getEdges();
+ EMap<URI, Node>nodes = graph.getNodes();
+ EMap<URI, NodeLabel>nodeLabels = graph.getNodeLabels();
+ EMap<URI, Label>graphLabels = graph.getGraphLabels();
+
+ if(filter != null) {
+ _filter.filterEdges(edges);
+ _filter.filterNodes(nodes);
+ _filter.filterNodeLabels(nodeLabels);
+ _filter.filterLabels(graphLabels);
+ }
+
+ getEdges().addAll(edges);
+ getNodes().addAll(nodes);
+ getNodeLabels().addAll(nodeLabels);
+ getDecorators().addAll(graph.getDecorators());
+
+ // We need to update the graph labels to the new graph
+ for (final Iterator<Label> graphLabelIter = graphLabels.values()
+ .iterator(); graphLabelIter.hasNext();) {
+ final Label graphLabel = graphLabelIter.next();
+ graphLabel.setURIOfIdentifiableToBeLabeled(getURI());
+ putGraphLabel(graphLabel);
+ } // for each new graph label
+
+ getDynamicLabels().addAll(graph.getDynamicLabels());
+ getUnresolvedIdentifiables().addAll(graph.getUnresolvedIdentifiables());
+ } // addGraph
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public void putEdge(Edge edge) {
+ getEdges().put(edge.getURI(), edge);
+ final EdgeLabel edgeLabel = edge.getLabel();
+ // Dynamic?
+ if (edgeLabel instanceof DynamicLabel) {
+ // Yes
+ addDynamicLabel((DynamicLabel)edgeLabel);
+ } // if DynamicLabel
+ } // putEdge
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public Edge getEdge(URI uri) {
+ return getEdges().get(uri);
+ } // getEdge
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public void putNode(Node node) {
+ getNodes().put(node.getURI(), node);
+ for (NodeLabel nodeLabel : node.getLabels()) {
+ putNodeLabel(nodeLabel);
+ } // for each NodeLabel
+ } // putNode
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public Node getNode(URI uri) {
+ return getNodes().get(uri);
+ } // getNode
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public void putNodeLabel(NodeLabel label) {
+ getNodeLabels().put(label.getURI(), label);
+ // Dynamic?
+ if (label instanceof DynamicLabel) {
+ // Yes
+ addDynamicLabel((DynamicLabel)label);
+ } // if DynamicLabel
+ } // putNodeLabel
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public NodeLabel getNodeLabel(URI uri) {
+ return getNodeLabels().get(uri);
+ } // getNodeLabel
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public void putGraphLabel(Label label) {
+ getGraphLabels().put(label.getURI(), label);
+ // Dynamic?
+ if (label instanceof DynamicLabel) {
+ // Yes
+ addDynamicLabel((DynamicLabel)label);
+ } // if DynamicLabel
+ } // putGraphLabel
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public Label getGraphLabel(URI uri) {
+ return getGraphLabels().get(uri);
+ } // getGraphLabel
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public void addDynamicLabel(DynamicLabel dynamiclabel) {
+ getDynamicLabels().add(dynamiclabel);
+ } // addDynamicLabel
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public void switchToNextValue(STEMTime currentTime) {
+ for (final Iterator<DynamicLabel> graphLabelIter = getDynamicLabels()
+ .iterator(); graphLabelIter.hasNext();) {
+ final DynamicLabel dynamicLabel = graphLabelIter.next();
+ dynamicLabel.switchToNextValue();
+ } // for dynamic labels
+ setTime((STEMTime)EcoreUtil.copy(currentTime));
+ } // switchToNextValue
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case GraphPackage.GRAPH__DECORATORS:
+ return ((InternalEList<InternalEObject>)(InternalEList<?>)getDecorators()).basicAdd(otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * @see org.eclipse.stem.common.impl.IdentifiableImpl#toString()
+ */
+ @Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder("\"" + getDublinCore().getTitle()
+ + "\",\n");
+
+ // How many nodes?
+
+ sb.append(getNumNodes() > 0 ? getNumNodes() + " Nodes\n" : "");
+ sb.append(getNumEdges() > 0 ? getNumEdges() + " Edges\n" : "");
+ sb.append(getNumNodeLabels() > 0 ? getNumNodeLabels() + " Node Labels "
+ : "");
+ sb.append(getNumGraphLabels() > 0 ? getNumGraphLabels()
+ + " Graph Labels\n" : "");
+
+ sb.append(getNumDynamicLabels() > 0 ? getNumDynamicLabels()
+ + " Dynamic Labels\n" : "");
+
+ return sb.toString();
+ } // toString
+
+ /**
+ * @see org.eclipse.stem.common.impl.IdentifiableImpl#sane()
+ */
+ @Override
+ public boolean sane() {
+ boolean retValue = super.sane();
+
+ // This is the number of labels that each node references
+ int nodeLabelCount = 0;
+ int dynamicLabelCount = 0;
+
+ // Nodes
+ if (getNodes() != null) {
+ // Yes
+ for (final Iterator<Node> nodeIter = getNodes().values().iterator(); nodeIter
+ .hasNext()
+ && retValue;) {
+ final Node node = nodeIter.next();
+ retValue = retValue && node.sane();
+ assert retValue;
+
+ nodeLabelCount += node.getLabels().size();
+
+ // How many dynamic labels?
+ for (final Iterator<NodeLabel> labelIter = node.getLabels()
+ .iterator(); labelIter.hasNext();) {
+ final Label label = labelIter.next();
+ if (label instanceof DynamicLabel) {
+ dynamicLabelCount++;
+ retValue = false;
+
+ // The dynamic label should be in the collection of
+ // dynamic labels maintained by the graph
+ for (DynamicLabel dl : getDynamicLabels()) {
+ if (dl == label) {
+ retValue = true;
+ break;
+ }
+ } // for each dynamic label
+ assert retValue;
+
+ } // if DynamicLabel
+ // The label should be in the collection of node labels
+ retValue = retValue
+ && getNodeLabels().containsKey(label.getURI());
+ assert retValue;
+
+
+ } // for each label of the node
+ } // for each node
+ } // if
+
+ // Edges?
+ if (getEdges() != null) {
+ // Yes
+ for (final Iterator<Edge> edgeIter = getEdges().values().iterator(); edgeIter
+ .hasNext()
+ && retValue;) {
+ final Edge edge = edgeIter.next();
+ retValue = retValue && edge.sane();
+ assert retValue;
+
+ // Is the edge's label dynamic?
+ if (edge.getLabel() instanceof DynamicLabel) {
+ // Yes
+ dynamicLabelCount++;
+ }
+ } // for each edge
+ } // if
+
+ // Node Labels?
+ if (getNodeLabels() != null) {
+ // Yes
+ // The number of node labels should match the number we counted
+ // above...not true for graph fragments that might have labels for
+ // nodes in other (sub) graph fragments.
+ // retValue = retValue && nodeLabelCount ==
+ // getNodeLabels().getSize();
+ // assert retValue;
+
+ for (final Iterator<NodeLabel> labelIter = getNodeLabels().values()
+ .iterator(); labelIter.hasNext() && retValue;) {
+ final NodeLabel nodeLabel = labelIter.next();
+ retValue = retValue && nodeLabel.sane();
+ assert retValue;
+ } // for each node label
+ } // if
+
+ if (getGraphLabels() != null) {
+ // Yes
+ for (final Iterator<Label> graphLabelIter = getGraphLabels().values()
+ .iterator(); graphLabelIter.hasNext();) {
+ final Label graphLabel = graphLabelIter.next();
+ retValue = retValue && graphLabel.sane();
+ assert retValue;
+
+ if (graphLabel instanceof DynamicLabel) {
+ dynamicLabelCount++;
+ }
+ }
+ } // if graphLabels
+
+ // Dynamic Labels?
+ if (getDynamicLabels() != null) {
+ // Yes
+ // The number of dynamic labels should equal the count
+ retValue = dynamicLabelCount == getNumDynamicLabels();
+ assert retValue;
+
+ for (final Iterator<DynamicLabel> dynamiclIter = getDynamicLabels()
+ .iterator(); dynamiclIter.hasNext() && retValue;) {
+ final DynamicLabel dynamicLabel = dynamiclIter.next();
+ retValue = retValue && dynamicLabel.sane();
+ assert retValue;
+ } // for each dynamic label
+ } // if
+
+ return retValue;
+ } // sane
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case GraphPackage.GRAPH__EDGES:
+ return ((InternalEList<?>)getEdges()).basicRemove(otherEnd, msgs);
+ case GraphPackage.GRAPH__NODES:
+ return ((InternalEList<?>)getNodes()).basicRemove(otherEnd, msgs);
+ case GraphPackage.GRAPH__GRAPH_LABELS:
+ return ((InternalEList<?>)getGraphLabels()).basicRemove(otherEnd, msgs);
+ case GraphPackage.GRAPH__NODE_LABELS:
+ return ((InternalEList<?>)getNodeLabels()).basicRemove(otherEnd, msgs);
+ case GraphPackage.GRAPH__UNRESOLVED_IDENTIFIABLES:
+ return ((InternalEList<?>)getUnresolvedIdentifiables()).basicRemove(otherEnd, msgs);
+ case GraphPackage.GRAPH__DECORATORS:
+ return ((InternalEList<?>)getDecorators()).basicRemove(otherEnd, msgs);
+ case GraphPackage.GRAPH__TIME:
+ return basicSetTime(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case GraphPackage.GRAPH__EDGES:
+ if (coreType) return getEdges();
+ else return getEdges().map();
+ case GraphPackage.GRAPH__NODES:
+ if (coreType) return getNodes();
+ else return getNodes().map();
+ case GraphPackage.GRAPH__GRAPH_LABELS:
+ if (coreType) return getGraphLabels();
+ else return getGraphLabels().map();
+ case GraphPackage.GRAPH__NODE_LABELS:
+ if (coreType) return getNodeLabels();
+ else return getNodeLabels().map();
+ case GraphPackage.GRAPH__DYNAMIC_LABELS:
+ return getDynamicLabels();
+ case GraphPackage.GRAPH__NUM_EDGES:
+ return getNumEdges();
+ case GraphPackage.GRAPH__NUM_NODES:
+ return getNumNodes();
+ case GraphPackage.GRAPH__NUM_GRAPH_LABELS:
+ return getNumGraphLabels();
+ case GraphPackage.GRAPH__NUM_NODE_LABELS:
+ return getNumNodeLabels();
+ case GraphPackage.GRAPH__NUM_DYNAMIC_LABELS:
+ return getNumDynamicLabels();
+ case GraphPackage.GRAPH__UNRESOLVED_IDENTIFIABLES:
+ return getUnresolvedIdentifiables();
+ case GraphPackage.GRAPH__DECORATORS:
+ return getDecorators();
+ case GraphPackage.GRAPH__TIME:
+ return getTime();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case GraphPackage.GRAPH__EDGES:
+ ((EStructuralFeature.Setting)getEdges()).set(newValue);
+ return;
+ case GraphPackage.GRAPH__NODES:
+ ((EStructuralFeature.Setting)getNodes()).set(newValue);
+ return;
+ case GraphPackage.GRAPH__GRAPH_LABELS:
+ ((EStructuralFeature.Setting)getGraphLabels()).set(newValue);
+ return;
+ case GraphPackage.GRAPH__NODE_LABELS:
+ ((EStructuralFeature.Setting)getNodeLabels()).set(newValue);
+ return;
+ case GraphPackage.GRAPH__DYNAMIC_LABELS:
+ getDynamicLabels().clear();
+ getDynamicLabels().addAll((Collection<? extends DynamicLabel>)newValue);
+ return;
+ case GraphPackage.GRAPH__UNRESOLVED_IDENTIFIABLES:
+ getUnresolvedIdentifiables().clear();
+ getUnresolvedIdentifiables().addAll((Collection<? extends UnresolvedIdentifiable>)newValue);
+ return;
+ case GraphPackage.GRAPH__DECORATORS:
+ getDecorators().clear();
+ getDecorators().addAll((Collection<? extends Decorator>)newValue);
+ return;
+ case GraphPackage.GRAPH__TIME:
+ setTime((STEMTime)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case GraphPackage.GRAPH__EDGES:
+ getEdges().clear();
+ return;
+ case GraphPackage.GRAPH__NODES:
+ getNodes().clear();
+ return;
+ case GraphPackage.GRAPH__GRAPH_LABELS:
+ getGraphLabels().clear();
+ return;
+ case GraphPackage.GRAPH__NODE_LABELS:
+ getNodeLabels().clear();
+ return;
+ case GraphPackage.GRAPH__DYNAMIC_LABELS:
+ getDynamicLabels().clear();
+ return;
+ case GraphPackage.GRAPH__UNRESOLVED_IDENTIFIABLES:
+ getUnresolvedIdentifiables().clear();
+ return;
+ case GraphPackage.GRAPH__DECORATORS:
+ getDecorators().clear();
+ return;
+ case GraphPackage.GRAPH__TIME:
+ setTime((STEMTime)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case GraphPackage.GRAPH__EDGES:
+ return edges != null && !edges.isEmpty();
+ case GraphPackage.GRAPH__NODES:
+ return nodes != null && !nodes.isEmpty();
+ case GraphPackage.GRAPH__GRAPH_LABELS:
+ return graphLabels != null && !graphLabels.isEmpty();
+ case GraphPackage.GRAPH__NODE_LABELS:
+ return nodeLabels != null && !nodeLabels.isEmpty();
+ case GraphPackage.GRAPH__DYNAMIC_LABELS:
+ return dynamicLabels != null && !dynamicLabels.isEmpty();
+ case GraphPackage.GRAPH__NUM_EDGES:
+ return getNumEdges() != NUM_EDGES_EDEFAULT;
+ case GraphPackage.GRAPH__NUM_NODES:
+ return getNumNodes() != NUM_NODES_EDEFAULT;
+ case GraphPackage.GRAPH__NUM_GRAPH_LABELS:
+ return getNumGraphLabels() != NUM_GRAPH_LABELS_EDEFAULT;
+ case GraphPackage.GRAPH__NUM_NODE_LABELS:
+ return getNumNodeLabels() != NUM_NODE_LABELS_EDEFAULT;
+ case GraphPackage.GRAPH__NUM_DYNAMIC_LABELS:
+ return getNumDynamicLabels() != NUM_DYNAMIC_LABELS_EDEFAULT;
+ case GraphPackage.GRAPH__UNRESOLVED_IDENTIFIABLES:
+ return unresolvedIdentifiables != null && !unresolvedIdentifiables.isEmpty();
+ case GraphPackage.GRAPH__DECORATORS:
+ return decorators != null && !decorators.isEmpty();
+ case GraphPackage.GRAPH__TIME:
+ return time != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} // GraphImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/GraphPackageImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/GraphPackageImpl.java
new file mode 100644
index 000000000..5de5e9e25
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/GraphPackageImpl.java
@@ -0,0 +1,1514 @@
+package org.eclipse.stem.core.graph.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2006, 2008 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
+ *******************************************************************************/
+
+import java.util.Map;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EGenericType;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.stem.core.common.CommonPackage;
+import org.eclipse.stem.core.common.impl.CommonPackageImpl;
+import org.eclipse.stem.core.experiment.ExperimentPackage;
+import org.eclipse.stem.core.experiment.impl.ExperimentPackageImpl;
+import org.eclipse.stem.core.graph.DynamicEdgeLabel;
+import org.eclipse.stem.core.graph.DynamicLabel;
+import org.eclipse.stem.core.graph.DynamicNodeLabel;
+import org.eclipse.stem.core.graph.Edge;
+import org.eclipse.stem.core.graph.EdgeLabel;
+import org.eclipse.stem.core.graph.Exchange;
+import org.eclipse.stem.core.graph.ExchangeType;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.graph.GraphFactory;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.GraphPartitioner;
+import org.eclipse.stem.core.graph.IntegrationLabel;
+import org.eclipse.stem.core.graph.IntegrationLabelValue;
+import org.eclipse.stem.core.graph.Label;
+import org.eclipse.stem.core.graph.LabelValue;
+import org.eclipse.stem.core.graph.Node;
+import org.eclipse.stem.core.graph.NodeLabel;
+import org.eclipse.stem.core.graph.SimpleGraphPartitioner;
+import org.eclipse.stem.core.graph.StaticEdgeLabel;
+import org.eclipse.stem.core.graph.StaticLabel;
+import org.eclipse.stem.core.graph.StaticNodeLabel;
+import org.eclipse.stem.core.graph.UnresolvedIdentifiable;
+import org.eclipse.stem.core.logger.LoggerPackage;
+import org.eclipse.stem.core.logger.impl.LoggerPackageImpl;
+import org.eclipse.stem.core.model.ModelPackage;
+import org.eclipse.stem.core.model.impl.ModelPackageImpl;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+import org.eclipse.stem.core.modifier.impl.ModifierPackageImpl;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+import org.eclipse.stem.core.predicate.impl.PredicatePackageImpl;
+import org.eclipse.stem.core.scenario.ScenarioPackage;
+import org.eclipse.stem.core.scenario.impl.ScenarioPackageImpl;
+import org.eclipse.stem.core.sequencer.SequencerPackage;
+import org.eclipse.stem.core.sequencer.impl.SequencerPackageImpl;
+import org.eclipse.stem.core.solver.SolverPackage;
+import org.eclipse.stem.core.solver.impl.SolverPackageImpl;
+import org.eclipse.stem.core.trigger.TriggerPackage;
+import org.eclipse.stem.core.trigger.impl.TriggerPackageImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class GraphPackageImpl extends EPackageImpl implements GraphPackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass dynamicLabelEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass dynamicNodeLabelEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass edgeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass graphEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass labelEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass labelValueEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass nodeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass nodeLabelEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass staticNodeLabelEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass unresolvedIdentifiableEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass uriToIdentifiableMapEntryEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass dynamicEdgeLabelEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass edgeLabelEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass staticEdgeLabelEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass uriToEdgeMapEntryEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass uriToNodeMapEntryEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass uriToLabelMapEntryEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass uriToNodeLabelMapEntryEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass staticLabelEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass graphPartitionerEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass simpleGraphPartitionerEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass exchangeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass integrationLabelEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass integrationLabelValueEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum exchangeTypeEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType illegalArgumentExceptionEDataType = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.eclipse.stem.core.graph.GraphPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private GraphPackageImpl() {
+ super(eNS_URI, GraphFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link GraphPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static GraphPackage init() {
+ if (isInited) return (GraphPackage)EPackage.Registry.INSTANCE.getEPackage(GraphPackage.eNS_URI);
+
+ // Obtain or create and register package
+ GraphPackageImpl theGraphPackage = (GraphPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof GraphPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new GraphPackageImpl());
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ EcorePackage.eINSTANCE.eClass();
+
+ // Obtain or create and register interdependencies
+ CommonPackageImpl theCommonPackage = (CommonPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(CommonPackage.eNS_URI) instanceof CommonPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(CommonPackage.eNS_URI) : CommonPackage.eINSTANCE);
+ ExperimentPackageImpl theExperimentPackage = (ExperimentPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ExperimentPackage.eNS_URI) instanceof ExperimentPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ExperimentPackage.eNS_URI) : ExperimentPackage.eINSTANCE);
+ ModelPackageImpl theModelPackage = (ModelPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ModelPackage.eNS_URI) instanceof ModelPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ModelPackage.eNS_URI) : ModelPackage.eINSTANCE);
+ ModifierPackageImpl theModifierPackage = (ModifierPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ModifierPackage.eNS_URI) instanceof ModifierPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ModifierPackage.eNS_URI) : ModifierPackage.eINSTANCE);
+ PredicatePackageImpl thePredicatePackage = (PredicatePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(PredicatePackage.eNS_URI) instanceof PredicatePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(PredicatePackage.eNS_URI) : PredicatePackage.eINSTANCE);
+ ScenarioPackageImpl theScenarioPackage = (ScenarioPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ScenarioPackage.eNS_URI) instanceof ScenarioPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ScenarioPackage.eNS_URI) : ScenarioPackage.eINSTANCE);
+ SequencerPackageImpl theSequencerPackage = (SequencerPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SequencerPackage.eNS_URI) instanceof SequencerPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SequencerPackage.eNS_URI) : SequencerPackage.eINSTANCE);
+ TriggerPackageImpl theTriggerPackage = (TriggerPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(TriggerPackage.eNS_URI) instanceof TriggerPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(TriggerPackage.eNS_URI) : TriggerPackage.eINSTANCE);
+ SolverPackageImpl theSolverPackage = (SolverPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SolverPackage.eNS_URI) instanceof SolverPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SolverPackage.eNS_URI) : SolverPackage.eINSTANCE);
+ LoggerPackageImpl theLoggerPackage = (LoggerPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(LoggerPackage.eNS_URI) instanceof LoggerPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(LoggerPackage.eNS_URI) : LoggerPackage.eINSTANCE);
+
+ // Create package meta-data objects
+ theGraphPackage.createPackageContents();
+ theCommonPackage.createPackageContents();
+ theExperimentPackage.createPackageContents();
+ theModelPackage.createPackageContents();
+ theModifierPackage.createPackageContents();
+ thePredicatePackage.createPackageContents();
+ theScenarioPackage.createPackageContents();
+ theSequencerPackage.createPackageContents();
+ theTriggerPackage.createPackageContents();
+ theSolverPackage.createPackageContents();
+ theLoggerPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theGraphPackage.initializePackageContents();
+ theCommonPackage.initializePackageContents();
+ theExperimentPackage.initializePackageContents();
+ theModelPackage.initializePackageContents();
+ theModifierPackage.initializePackageContents();
+ thePredicatePackage.initializePackageContents();
+ theScenarioPackage.initializePackageContents();
+ theSequencerPackage.initializePackageContents();
+ theTriggerPackage.initializePackageContents();
+ theSolverPackage.initializePackageContents();
+ theLoggerPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theGraphPackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(GraphPackage.eNS_URI, theGraphPackage);
+ return theGraphPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDynamicLabel() {
+ return dynamicLabelEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDynamicLabel_NextValueValid() {
+ return (EAttribute)dynamicLabelEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDynamicLabel_NextValue() {
+ return (EReference)dynamicLabelEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDynamicLabel_Decorator() {
+ return (EReference)dynamicLabelEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDynamicNodeLabel() {
+ return dynamicNodeLabelEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getEdge() {
+ return edgeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getEdge_A() {
+ return (EReference)edgeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getEdge_NodeAURI() {
+ return (EAttribute)edgeEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getEdge_B() {
+ return (EReference)edgeEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getEdge_NodeBURI() {
+ return (EAttribute)edgeEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getEdge_Label() {
+ return (EReference)edgeEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getEdge_Directed() {
+ return (EAttribute)edgeEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getGraph() {
+ return graphEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getGraph_GraphLabels() {
+ return (EReference)graphEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getGraph_NodeLabels() {
+ return (EReference)graphEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getGraph_DynamicLabels() {
+ return (EReference)graphEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getGraph_NumEdges() {
+ return (EAttribute)graphEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getGraph_NumNodes() {
+ return (EAttribute)graphEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getGraph_NumGraphLabels() {
+ return (EAttribute)graphEClass.getEStructuralFeatures().get(7);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getGraph_NumNodeLabels() {
+ return (EAttribute)graphEClass.getEStructuralFeatures().get(8);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getGraph_NumDynamicLabels() {
+ return (EAttribute)graphEClass.getEStructuralFeatures().get(9);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getGraph_UnresolvedIdentifiables() {
+ return (EReference)graphEClass.getEStructuralFeatures().get(10);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getGraph_Decorators() {
+ return (EReference)graphEClass.getEStructuralFeatures().get(11);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getGraph_Time() {
+ return (EReference)graphEClass.getEStructuralFeatures().get(12);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getGraph_Nodes() {
+ return (EReference)graphEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getGraph_Edges() {
+ return (EReference)graphEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getLabel() {
+ return labelEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getLabel_URIOfIdentifiableToBeLabeled() {
+ return (EAttribute)labelEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getLabel_CurrentValue() {
+ return (EReference)labelEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getLabel_Identifiable() {
+ return (EReference)labelEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getLabelValue() {
+ return labelValueEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getNode() {
+ return nodeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getNode_Edges() {
+ return (EReference)nodeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getNode_Labels() {
+ return (EReference)nodeEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getNodeLabel() {
+ return nodeLabelEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getNodeLabel_Node() {
+ return (EReference)nodeLabelEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getStaticNodeLabel() {
+ return staticNodeLabelEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getUnresolvedIdentifiable() {
+ return unresolvedIdentifiableEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getUnresolvedIdentifiable_Scenario() {
+ return (EReference)unresolvedIdentifiableEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getUnresolvedIdentifiable_Model() {
+ return (EReference)unresolvedIdentifiableEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getUnresolvedIdentifiable_Graph() {
+ return (EReference)unresolvedIdentifiableEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getUnresolvedIdentifiable_Identifiable() {
+ return (EReference)unresolvedIdentifiableEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getUnresolvedIdentifiable_UnresolvedURI() {
+ return (EAttribute)unresolvedIdentifiableEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getUnresolvedIdentifiable_FieldName() {
+ return (EAttribute)unresolvedIdentifiableEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getURIToIdentifiableMapEntry() {
+ return uriToIdentifiableMapEntryEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getURIToIdentifiableMapEntry_Key() {
+ return (EAttribute)uriToIdentifiableMapEntryEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getURIToIdentifiableMapEntry_Value() {
+ return (EReference)uriToIdentifiableMapEntryEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDynamicEdgeLabel() {
+ return dynamicEdgeLabelEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getEdgeLabel() {
+ return edgeLabelEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getEdgeLabel_Edge() {
+ return (EReference)edgeLabelEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getStaticEdgeLabel() {
+ return staticEdgeLabelEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getURIToEdgeMapEntry() {
+ return uriToEdgeMapEntryEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getURIToEdgeMapEntry_Key() {
+ return (EAttribute)uriToEdgeMapEntryEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getURIToEdgeMapEntry_Value() {
+ return (EReference)uriToEdgeMapEntryEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getURIToNodeMapEntry() {
+ return uriToNodeMapEntryEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getURIToNodeMapEntry_Key() {
+ return (EAttribute)uriToNodeMapEntryEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getURIToNodeMapEntry_Value() {
+ return (EReference)uriToNodeMapEntryEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getURIToLabelMapEntry() {
+ return uriToLabelMapEntryEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getURIToLabelMapEntry_Key() {
+ return (EAttribute)uriToLabelMapEntryEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getURIToLabelMapEntry_Value() {
+ return (EReference)uriToLabelMapEntryEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getURIToNodeLabelMapEntry() {
+ return uriToNodeLabelMapEntryEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getURIToNodeLabelMapEntry_Key() {
+ return (EAttribute)uriToNodeLabelMapEntryEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getURIToNodeLabelMapEntry_Value() {
+ return (EReference)uriToNodeLabelMapEntryEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getStaticLabel() {
+ return staticLabelEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getGraphPartitioner() {
+ return graphPartitionerEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getGraphPartitioner_NumProcesses() {
+ return (EAttribute)graphPartitionerEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSimpleGraphPartitioner() {
+ return simpleGraphPartitionerEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getExchange() {
+ return exchangeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getExchange_OtherLabel() {
+ return (EReference)exchangeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getExchange_Count() {
+ return (EAttribute)exchangeEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getExchange_Type() {
+ return (EAttribute)exchangeEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getIntegrationLabel() {
+ return integrationLabelEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getIntegrationLabel_DeltaValue() {
+ return (EReference)integrationLabelEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getIntegrationLabel_TempValue() {
+ return (EReference)integrationLabelEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getIntegrationLabel_ProbeValue() {
+ return (EReference)integrationLabelEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getIntegrationLabel_ErrorScale() {
+ return (EReference)integrationLabelEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getIntegrationLabel_Identifier() {
+ return (EAttribute)integrationLabelEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getIntegrationLabelValue() {
+ return integrationLabelValueEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getIntegrationLabelValue_Arrivals() {
+ return (EReference)integrationLabelValueEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getIntegrationLabelValue_Departures() {
+ return (EReference)integrationLabelValueEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EEnum getExchangeType() {
+ return exchangeTypeEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EDataType getIllegalArgumentException() {
+ return illegalArgumentExceptionEDataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public GraphFactory getGraphFactory() {
+ return (GraphFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ dynamicLabelEClass = createEClass(DYNAMIC_LABEL);
+ createEAttribute(dynamicLabelEClass, DYNAMIC_LABEL__NEXT_VALUE_VALID);
+ createEReference(dynamicLabelEClass, DYNAMIC_LABEL__NEXT_VALUE);
+ createEReference(dynamicLabelEClass, DYNAMIC_LABEL__DECORATOR);
+
+ dynamicNodeLabelEClass = createEClass(DYNAMIC_NODE_LABEL);
+
+ edgeEClass = createEClass(EDGE);
+ createEReference(edgeEClass, EDGE__A);
+ createEAttribute(edgeEClass, EDGE__NODE_AURI);
+ createEReference(edgeEClass, EDGE__B);
+ createEAttribute(edgeEClass, EDGE__NODE_BURI);
+ createEReference(edgeEClass, EDGE__LABEL);
+ createEAttribute(edgeEClass, EDGE__DIRECTED);
+
+ graphEClass = createEClass(GRAPH);
+ createEReference(graphEClass, GRAPH__EDGES);
+ createEReference(graphEClass, GRAPH__NODES);
+ createEReference(graphEClass, GRAPH__GRAPH_LABELS);
+ createEReference(graphEClass, GRAPH__NODE_LABELS);
+ createEReference(graphEClass, GRAPH__DYNAMIC_LABELS);
+ createEAttribute(graphEClass, GRAPH__NUM_EDGES);
+ createEAttribute(graphEClass, GRAPH__NUM_NODES);
+ createEAttribute(graphEClass, GRAPH__NUM_GRAPH_LABELS);
+ createEAttribute(graphEClass, GRAPH__NUM_NODE_LABELS);
+ createEAttribute(graphEClass, GRAPH__NUM_DYNAMIC_LABELS);
+ createEReference(graphEClass, GRAPH__UNRESOLVED_IDENTIFIABLES);
+ createEReference(graphEClass, GRAPH__DECORATORS);
+ createEReference(graphEClass, GRAPH__TIME);
+
+ labelEClass = createEClass(LABEL);
+ createEAttribute(labelEClass, LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED);
+ createEReference(labelEClass, LABEL__CURRENT_VALUE);
+ createEReference(labelEClass, LABEL__IDENTIFIABLE);
+
+ labelValueEClass = createEClass(LABEL_VALUE);
+
+ nodeEClass = createEClass(NODE);
+ createEReference(nodeEClass, NODE__EDGES);
+ createEReference(nodeEClass, NODE__LABELS);
+
+ nodeLabelEClass = createEClass(NODE_LABEL);
+ createEReference(nodeLabelEClass, NODE_LABEL__NODE);
+
+ staticNodeLabelEClass = createEClass(STATIC_NODE_LABEL);
+
+ unresolvedIdentifiableEClass = createEClass(UNRESOLVED_IDENTIFIABLE);
+ createEReference(unresolvedIdentifiableEClass, UNRESOLVED_IDENTIFIABLE__SCENARIO);
+ createEReference(unresolvedIdentifiableEClass, UNRESOLVED_IDENTIFIABLE__MODEL);
+ createEReference(unresolvedIdentifiableEClass, UNRESOLVED_IDENTIFIABLE__GRAPH);
+ createEReference(unresolvedIdentifiableEClass, UNRESOLVED_IDENTIFIABLE__IDENTIFIABLE);
+ createEAttribute(unresolvedIdentifiableEClass, UNRESOLVED_IDENTIFIABLE__UNRESOLVED_URI);
+ createEAttribute(unresolvedIdentifiableEClass, UNRESOLVED_IDENTIFIABLE__FIELD_NAME);
+
+ uriToIdentifiableMapEntryEClass = createEClass(URI_TO_IDENTIFIABLE_MAP_ENTRY);
+ createEAttribute(uriToIdentifiableMapEntryEClass, URI_TO_IDENTIFIABLE_MAP_ENTRY__KEY);
+ createEReference(uriToIdentifiableMapEntryEClass, URI_TO_IDENTIFIABLE_MAP_ENTRY__VALUE);
+
+ dynamicEdgeLabelEClass = createEClass(DYNAMIC_EDGE_LABEL);
+
+ edgeLabelEClass = createEClass(EDGE_LABEL);
+ createEReference(edgeLabelEClass, EDGE_LABEL__EDGE);
+
+ staticEdgeLabelEClass = createEClass(STATIC_EDGE_LABEL);
+
+ uriToEdgeMapEntryEClass = createEClass(URI_TO_EDGE_MAP_ENTRY);
+ createEAttribute(uriToEdgeMapEntryEClass, URI_TO_EDGE_MAP_ENTRY__KEY);
+ createEReference(uriToEdgeMapEntryEClass, URI_TO_EDGE_MAP_ENTRY__VALUE);
+
+ uriToNodeMapEntryEClass = createEClass(URI_TO_NODE_MAP_ENTRY);
+ createEAttribute(uriToNodeMapEntryEClass, URI_TO_NODE_MAP_ENTRY__KEY);
+ createEReference(uriToNodeMapEntryEClass, URI_TO_NODE_MAP_ENTRY__VALUE);
+
+ uriToLabelMapEntryEClass = createEClass(URI_TO_LABEL_MAP_ENTRY);
+ createEAttribute(uriToLabelMapEntryEClass, URI_TO_LABEL_MAP_ENTRY__KEY);
+ createEReference(uriToLabelMapEntryEClass, URI_TO_LABEL_MAP_ENTRY__VALUE);
+
+ uriToNodeLabelMapEntryEClass = createEClass(URI_TO_NODE_LABEL_MAP_ENTRY);
+ createEAttribute(uriToNodeLabelMapEntryEClass, URI_TO_NODE_LABEL_MAP_ENTRY__KEY);
+ createEReference(uriToNodeLabelMapEntryEClass, URI_TO_NODE_LABEL_MAP_ENTRY__VALUE);
+
+ staticLabelEClass = createEClass(STATIC_LABEL);
+
+ graphPartitionerEClass = createEClass(GRAPH_PARTITIONER);
+ createEAttribute(graphPartitionerEClass, GRAPH_PARTITIONER__NUM_PROCESSES);
+
+ simpleGraphPartitionerEClass = createEClass(SIMPLE_GRAPH_PARTITIONER);
+
+ exchangeEClass = createEClass(EXCHANGE);
+ createEReference(exchangeEClass, EXCHANGE__OTHER_LABEL);
+ createEAttribute(exchangeEClass, EXCHANGE__COUNT);
+ createEAttribute(exchangeEClass, EXCHANGE__TYPE);
+
+ integrationLabelEClass = createEClass(INTEGRATION_LABEL);
+ createEReference(integrationLabelEClass, INTEGRATION_LABEL__DELTA_VALUE);
+ createEReference(integrationLabelEClass, INTEGRATION_LABEL__TEMP_VALUE);
+ createEReference(integrationLabelEClass, INTEGRATION_LABEL__PROBE_VALUE);
+ createEReference(integrationLabelEClass, INTEGRATION_LABEL__ERROR_SCALE);
+ createEAttribute(integrationLabelEClass, INTEGRATION_LABEL__IDENTIFIER);
+
+ integrationLabelValueEClass = createEClass(INTEGRATION_LABEL_VALUE);
+ createEReference(integrationLabelValueEClass, INTEGRATION_LABEL_VALUE__ARRIVALS);
+ createEReference(integrationLabelValueEClass, INTEGRATION_LABEL_VALUE__DEPARTURES);
+
+ // Create enums
+ exchangeTypeEEnum = createEEnum(EXCHANGE_TYPE);
+
+ // Create data types
+ illegalArgumentExceptionEDataType = createEDataType(ILLEGAL_ARGUMENT_EXCEPTION);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ ModelPackage theModelPackage = (ModelPackage)EPackage.Registry.INSTANCE.getEPackage(ModelPackage.eNS_URI);
+ CommonPackage theCommonPackage = (CommonPackage)EPackage.Registry.INSTANCE.getEPackage(CommonPackage.eNS_URI);
+ ModifierPackage theModifierPackage = (ModifierPackage)EPackage.Registry.INSTANCE.getEPackage(ModifierPackage.eNS_URI);
+ EcorePackage theEcorePackage = (EcorePackage)EPackage.Registry.INSTANCE.getEPackage(EcorePackage.eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ dynamicLabelEClass.getESuperTypes().add(this.getLabel());
+ dynamicNodeLabelEClass.getESuperTypes().add(this.getDynamicLabel());
+ dynamicNodeLabelEClass.getESuperTypes().add(this.getNodeLabel());
+ edgeEClass.getESuperTypes().add(theCommonPackage.getIdentifiable());
+ edgeEClass.getESuperTypes().add(theModifierPackage.getModifiable());
+ graphEClass.getESuperTypes().add(theCommonPackage.getIdentifiable());
+ labelEClass.getESuperTypes().add(theCommonPackage.getIdentifiable());
+ labelValueEClass.getESuperTypes().add(theCommonPackage.getSanityChecker());
+ nodeEClass.getESuperTypes().add(theCommonPackage.getIdentifiable());
+ nodeLabelEClass.getESuperTypes().add(this.getLabel());
+ staticNodeLabelEClass.getESuperTypes().add(this.getNodeLabel());
+ staticNodeLabelEClass.getESuperTypes().add(this.getStaticLabel());
+ dynamicEdgeLabelEClass.getESuperTypes().add(this.getDynamicLabel());
+ dynamicEdgeLabelEClass.getESuperTypes().add(this.getEdgeLabel());
+ edgeLabelEClass.getESuperTypes().add(this.getLabel());
+ staticEdgeLabelEClass.getESuperTypes().add(this.getEdgeLabel());
+ staticEdgeLabelEClass.getESuperTypes().add(this.getStaticLabel());
+ staticLabelEClass.getESuperTypes().add(this.getLabel());
+ staticLabelEClass.getESuperTypes().add(theModifierPackage.getModifiable());
+ simpleGraphPartitionerEClass.getESuperTypes().add(this.getGraphPartitioner());
+ EGenericType g1 = createEGenericType(theCommonPackage.getComparable());
+ EGenericType g2 = createEGenericType(this.getExchange());
+ g1.getETypeArguments().add(g2);
+ exchangeEClass.getEGenericSuperTypes().add(g1);
+ integrationLabelEClass.getESuperTypes().add(this.getDynamicNodeLabel());
+ integrationLabelValueEClass.getESuperTypes().add(this.getLabelValue());
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(dynamicLabelEClass, DynamicLabel.class, "DynamicLabel", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getDynamicLabel_NextValueValid(), ecorePackage.getEBoolean(), "nextValueValid", "false", 0, 1, DynamicLabel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+ initEReference(getDynamicLabel_NextValue(), this.getLabelValue(), null, "nextValue", null, 1, 1, DynamicLabel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getDynamicLabel_Decorator(), theModelPackage.getDecorator(), theModelPackage.getDecorator_LabelsToUpdate(), "decorator", null, 0, 1, DynamicLabel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ addEOperation(dynamicLabelEClass, null, "reset", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ addEOperation(dynamicLabelEClass, null, "switchToNextValue", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(dynamicNodeLabelEClass, DynamicNodeLabel.class, "DynamicNodeLabel", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(edgeEClass, Edge.class, "Edge", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getEdge_A(), this.getNode(), null, "a", null, 0, 1, Edge.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getEdge_NodeAURI(), theCommonPackage.getURI(), "nodeAURI", null, 0, 1, Edge.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getEdge_B(), this.getNode(), null, "b", null, 0, 1, Edge.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getEdge_NodeBURI(), theCommonPackage.getURI(), "nodeBURI", null, 0, 1, Edge.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getEdge_Label(), this.getEdgeLabel(), this.getEdgeLabel_Edge(), "label", null, 0, 1, Edge.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getEdge_Directed(), ecorePackage.getEBoolean(), "directed", "false", 0, 1, Edge.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+
+ EOperation op = addEOperation(edgeEClass, this.getNode(), "getOtherNode", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, this.getNode(), "node", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEException(op, this.getIllegalArgumentException());
+
+ op = addEOperation(edgeEClass, ecorePackage.getEBoolean(), "isDirectedAt", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, this.getNode(), "node", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(graphEClass, Graph.class, "Graph", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getGraph_Edges(), this.getURIToEdgeMapEntry(), null, "edges", null, 0, -1, Graph.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getGraph_Nodes(), this.getURIToNodeMapEntry(), null, "nodes", null, 0, -1, Graph.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getGraph_GraphLabels(), this.getURIToLabelMapEntry(), null, "graphLabels", null, 0, -1, Graph.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getGraph_NodeLabels(), this.getURIToNodeLabelMapEntry(), null, "nodeLabels", null, 0, -1, Graph.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getGraph_DynamicLabels(), this.getDynamicLabel(), null, "dynamicLabels", null, 0, -1, Graph.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getGraph_NumEdges(), ecorePackage.getEInt(), "numEdges", null, 0, 1, Graph.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getGraph_NumNodes(), ecorePackage.getEInt(), "numNodes", null, 0, 1, Graph.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getGraph_NumGraphLabels(), ecorePackage.getEInt(), "numGraphLabels", null, 0, 1, Graph.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getGraph_NumNodeLabels(), ecorePackage.getEInt(), "numNodeLabels", null, 0, 1, Graph.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getGraph_NumDynamicLabels(), ecorePackage.getEInt(), "numDynamicLabels", null, 0, 1, Graph.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getGraph_UnresolvedIdentifiables(), this.getUnresolvedIdentifiable(), null, "unresolvedIdentifiables", null, 0, -1, Graph.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getGraph_Decorators(), theModelPackage.getDecorator(), theModelPackage.getDecorator_Graph(), "decorators", null, 0, -1, Graph.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getGraph_Time(), theModelPackage.getSTEMTime(), null, "time", null, 0, 1, Graph.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ op = addEOperation(graphEClass, this.getNodeLabel(), "getNodeLabelsByTypeURI", 0, -1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, theCommonPackage.getURI(), "typeURI", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ op = addEOperation(graphEClass, null, "addGraph", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, this.getGraph(), "graph", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, theCommonPackage.getIdentifiableFilter(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ op = addEOperation(graphEClass, null, "putEdge", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, this.getEdge(), "edge", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ op = addEOperation(graphEClass, this.getEdge(), "getEdge", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, theCommonPackage.getURI(), "uri", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ op = addEOperation(graphEClass, null, "putNode", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, this.getNode(), "node", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ op = addEOperation(graphEClass, this.getNode(), "getNode", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, theCommonPackage.getURI(), "uri", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ op = addEOperation(graphEClass, null, "putNodeLabel", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, this.getNodeLabel(), "label", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ op = addEOperation(graphEClass, this.getNodeLabel(), "getNodeLabel", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, theCommonPackage.getURI(), "uri", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ op = addEOperation(graphEClass, null, "putGraphLabel", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, this.getLabel(), "label", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ op = addEOperation(graphEClass, this.getLabel(), "getGraphLabel", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, theCommonPackage.getURI(), "uri", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ op = addEOperation(graphEClass, null, "addDynamicLabel", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, this.getDynamicLabel(), "dynamiclabel", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ op = addEOperation(graphEClass, null, "switchToNextValue", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, theModelPackage.getSTEMTime(), "currentTime", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(labelEClass, Label.class, "Label", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getLabel_URIOfIdentifiableToBeLabeled(), theCommonPackage.getURI(), "uRIOfIdentifiableToBeLabeled", null, 0, 1, Label.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getLabel_CurrentValue(), this.getLabelValue(), null, "currentValue", null, 1, 1, Label.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getLabel_Identifiable(), theCommonPackage.getIdentifiable(), null, "identifiable", null, 0, 1, Label.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(labelValueEClass, LabelValue.class, "LabelValue", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ addEOperation(labelValueEClass, null, "reset", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ op = addEOperation(labelValueEClass, theEcorePackage.getEBoolean(), "sameValue", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, this.getLabelValue(), "otherLabelValue", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(nodeEClass, Node.class, "Node", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getNode_Edges(), this.getEdge(), null, "edges", null, 0, -1, Node.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getNode_Labels(), this.getNodeLabel(), this.getNodeLabel_Node(), "labels", null, 0, -1, Node.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(nodeLabelEClass, NodeLabel.class, "NodeLabel", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getNodeLabel_Node(), this.getNode(), this.getNode_Labels(), "node", null, 0, 1, NodeLabel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(staticNodeLabelEClass, StaticNodeLabel.class, "StaticNodeLabel", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(unresolvedIdentifiableEClass, UnresolvedIdentifiable.class, "UnresolvedIdentifiable", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getUnresolvedIdentifiable_Scenario(), theCommonPackage.getIdentifiable(), null, "scenario", null, 0, 1, UnresolvedIdentifiable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getUnresolvedIdentifiable_Model(), theCommonPackage.getIdentifiable(), null, "model", null, 0, 1, UnresolvedIdentifiable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getUnresolvedIdentifiable_Graph(), theCommonPackage.getIdentifiable(), null, "graph", null, 0, 1, UnresolvedIdentifiable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getUnresolvedIdentifiable_Identifiable(), theCommonPackage.getIdentifiable(), null, "identifiable", null, 0, 1, UnresolvedIdentifiable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getUnresolvedIdentifiable_UnresolvedURI(), theCommonPackage.getURI(), "unresolvedURI", null, 0, 1, UnresolvedIdentifiable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getUnresolvedIdentifiable_FieldName(), ecorePackage.getEString(), "fieldName", null, 0, 1, UnresolvedIdentifiable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(uriToIdentifiableMapEntryEClass, Map.Entry.class, "URIToIdentifiableMapEntry", !IS_ABSTRACT, !IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getURIToIdentifiableMapEntry_Key(), theCommonPackage.getURI(), "key", null, 0, 1, Map.Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getURIToIdentifiableMapEntry_Value(), theCommonPackage.getIdentifiable(), null, "value", null, 0, 1, Map.Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(dynamicEdgeLabelEClass, DynamicEdgeLabel.class, "DynamicEdgeLabel", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(edgeLabelEClass, EdgeLabel.class, "EdgeLabel", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getEdgeLabel_Edge(), this.getEdge(), this.getEdge_Label(), "edge", null, 0, 1, EdgeLabel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(staticEdgeLabelEClass, StaticEdgeLabel.class, "StaticEdgeLabel", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(uriToEdgeMapEntryEClass, Map.Entry.class, "URIToEdgeMapEntry", !IS_ABSTRACT, !IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getURIToEdgeMapEntry_Key(), theCommonPackage.getURI(), "key", null, 0, 1, Map.Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getURIToEdgeMapEntry_Value(), this.getEdge(), null, "value", null, 0, 1, Map.Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(uriToNodeMapEntryEClass, Map.Entry.class, "URIToNodeMapEntry", !IS_ABSTRACT, !IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getURIToNodeMapEntry_Key(), theCommonPackage.getURI(), "key", null, 0, 1, Map.Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getURIToNodeMapEntry_Value(), this.getNode(), null, "value", null, 0, 1, Map.Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(uriToLabelMapEntryEClass, Map.Entry.class, "URIToLabelMapEntry", !IS_ABSTRACT, !IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getURIToLabelMapEntry_Key(), theCommonPackage.getURI(), "key", null, 0, 1, Map.Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getURIToLabelMapEntry_Value(), this.getLabel(), null, "value", null, 0, 1, Map.Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(uriToNodeLabelMapEntryEClass, Map.Entry.class, "URIToNodeLabelMapEntry", !IS_ABSTRACT, !IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getURIToNodeLabelMapEntry_Key(), theCommonPackage.getURI(), "key", null, 0, 1, Map.Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getURIToNodeLabelMapEntry_Value(), this.getNodeLabel(), null, "value", null, 0, 1, Map.Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(staticLabelEClass, StaticLabel.class, "StaticLabel", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(graphPartitionerEClass, GraphPartitioner.class, "GraphPartitioner", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getGraphPartitioner_NumProcesses(), theEcorePackage.getEInt(), "numProcesses", "1", 0, 1, GraphPartitioner.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+
+ op = addEOperation(graphPartitionerEClass, null, "partitionDecoratorLabels", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, theModelPackage.getDecorator(), "decorator", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, theEcorePackage.getEInt(), "processRank", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ g1 = createEGenericType(theEcorePackage.getEEList());
+ g2 = createEGenericType(this.getDynamicLabel());
+ g1.getETypeArguments().add(g2);
+ initEOperation(op, g1);
+
+ op = addEOperation(graphPartitionerEClass, null, "partitionDecoratorLabels", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, theModelPackage.getDecorator(), "decorator", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ g1 = createEGenericType(theEcorePackage.getEEList());
+ g2 = createEGenericType(this.getDynamicLabel());
+ g1.getETypeArguments().add(g2);
+ initEOperation(op, g1);
+
+ op = addEOperation(graphPartitionerEClass, theEcorePackage.getEBoolean(), "isManaged", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, theCommonPackage.getIdentifiable(), "identifiable", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(simpleGraphPartitionerEClass, SimpleGraphPartitioner.class, "SimpleGraphPartitioner", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(exchangeEClass, Exchange.class, "Exchange", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getExchange_OtherLabel(), this.getLabel(), null, "otherLabel", null, 0, 1, Exchange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getExchange_Count(), theEcorePackage.getEDouble(), "count", null, 0, 1, Exchange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getExchange_Type(), this.getExchangeType(), "type", null, 0, 1, Exchange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(integrationLabelEClass, IntegrationLabel.class, "IntegrationLabel", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getIntegrationLabel_DeltaValue(), this.getIntegrationLabelValue(), null, "deltaValue", null, 0, 1, IntegrationLabel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getIntegrationLabel_TempValue(), this.getIntegrationLabelValue(), null, "tempValue", null, 0, 1, IntegrationLabel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getIntegrationLabel_ProbeValue(), this.getIntegrationLabelValue(), null, "probeValue", null, 0, 1, IntegrationLabel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getIntegrationLabel_ErrorScale(), this.getIntegrationLabelValue(), null, "errorScale", null, 0, 1, IntegrationLabel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getIntegrationLabel_Identifier(), theEcorePackage.getEString(), "identifier", null, 0, 1, IntegrationLabel.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ op = addEOperation(integrationLabelEClass, null, "reset", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, theModelPackage.getSTEMTime(), "time", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(integrationLabelValueEClass, IntegrationLabelValue.class, "IntegrationLabelValue", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getIntegrationLabelValue_Arrivals(), this.getExchange(), null, "arrivals", null, 0, -1, IntegrationLabelValue.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getIntegrationLabelValue_Departures(), this.getExchange(), null, "departures", null, 0, -1, IntegrationLabelValue.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ op = addEOperation(integrationLabelValueEClass, this.getIntegrationLabelValue(), "set", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, this.getIntegrationLabelValue(), "value", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ op = addEOperation(integrationLabelValueEClass, this.getIntegrationLabelValue(), "add", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, this.getIntegrationLabelValue(), "value", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ op = addEOperation(integrationLabelValueEClass, this.getIntegrationLabelValue(), "sub", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, this.getIntegrationLabelValue(), "value", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ op = addEOperation(integrationLabelValueEClass, this.getIntegrationLabelValue(), "scale", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, theEcorePackage.getEDouble(), "scaleFactor", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ op = addEOperation(integrationLabelValueEClass, this.getIntegrationLabelValue(), "add", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, theEcorePackage.getEDouble(), "addition", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ addEOperation(integrationLabelValueEClass, this.getIntegrationLabelValue(), "abs", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ op = addEOperation(integrationLabelValueEClass, theEcorePackage.getEBoolean(), "avoidNegative", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, this.getIntegrationLabelValue(), "value", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ op = addEOperation(integrationLabelValueEClass, theEcorePackage.getEDouble(), "computeDeltaAdjustment", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, this.getIntegrationLabelValue(), "value", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ op = addEOperation(integrationLabelValueEClass, this.getIntegrationLabelValue(), "divide", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, this.getIntegrationLabelValue(), "value", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ addEOperation(integrationLabelValueEClass, theEcorePackage.getEDouble(), "max", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ addEOperation(integrationLabelValueEClass, null, "prepareCycle", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ // Initialize enums and add enum literals
+ initEEnum(exchangeTypeEEnum, ExchangeType.class, "ExchangeType"); //$NON-NLS-1$
+ addEEnumLiteral(exchangeTypeEEnum, ExchangeType.BIRTHS_AND_DEATHS);
+ addEEnumLiteral(exchangeTypeEEnum, ExchangeType.MIGRATION);
+ addEEnumLiteral(exchangeTypeEEnum, ExchangeType.AGING);
+
+ // Initialize data types
+ initEDataType(illegalArgumentExceptionEDataType, IllegalArgumentException.class, "IllegalArgumentException", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} //GraphPackageImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/GraphPartitionerImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/GraphPartitionerImpl.java
new file mode 100644
index 000000000..7215fc68c
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/GraphPartitionerImpl.java
@@ -0,0 +1,206 @@
+package org.eclipse.stem.core.graph.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2011 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
+ *******************************************************************************/
+
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.graph.DynamicLabel;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.GraphPartitioner;
+import org.eclipse.stem.core.model.Decorator;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Partitioner</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.graph.impl.GraphPartitionerImpl#getNumProcesses <em>Num Processes</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class GraphPartitionerImpl extends EObjectImpl implements GraphPartitioner {
+ /**
+ * The default value of the '{@link #getNumProcesses() <em>Num Processes</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNumProcesses()
+ * @generated
+ * @ordered
+ */
+ protected static final int NUM_PROCESSES_EDEFAULT = 1;
+ /**
+ * The cached value of the '{@link #getNumProcesses() <em>Num Processes</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNumProcesses()
+ * @generated
+ * @ordered
+ */
+ protected int numProcesses = NUM_PROCESSES_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected GraphPartitionerImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return GraphPackage.Literals.GRAPH_PARTITIONER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getNumProcesses() {
+ return numProcesses;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setNumProcesses(int newNumProcesses) {
+ int oldNumProcesses = numProcesses;
+ numProcesses = newNumProcesses;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.GRAPH_PARTITIONER__NUM_PROCESSES, oldNumProcesses, numProcesses));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<DynamicLabel> partitionDecoratorLabels(Decorator decorator, int processRank) {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<DynamicLabel> partitionDecoratorLabels(Decorator decorator) {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isManaged(Identifiable identifiable) {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case GraphPackage.GRAPH_PARTITIONER__NUM_PROCESSES:
+ return getNumProcesses();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case GraphPackage.GRAPH_PARTITIONER__NUM_PROCESSES:
+ setNumProcesses((Integer)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case GraphPackage.GRAPH_PARTITIONER__NUM_PROCESSES:
+ setNumProcesses(NUM_PROCESSES_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case GraphPackage.GRAPH_PARTITIONER__NUM_PROCESSES:
+ return numProcesses != NUM_PROCESSES_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (numProcesses: "); //$NON-NLS-1$
+ result.append(numProcesses);
+ result.append(')');
+ return result.toString();
+ }
+
+} //GraphPartitionerImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/IntegrationLabelImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/IntegrationLabelImpl.java
new file mode 100644
index 000000000..973331a6a
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/IntegrationLabelImpl.java
@@ -0,0 +1,403 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.core.graph.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.IntegrationLabel;
+import org.eclipse.stem.core.graph.IntegrationLabelValue;
+
+import org.eclipse.stem.core.model.STEMTime;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Integration Label</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.graph.impl.IntegrationLabelImpl#getDeltaValue <em>Delta Value</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.IntegrationLabelImpl#getTempValue <em>Temp Value</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.IntegrationLabelImpl#getProbeValue <em>Probe Value</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.IntegrationLabelImpl#getErrorScale <em>Error Scale</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.IntegrationLabelImpl#getIdentifier <em>Identifier</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class IntegrationLabelImpl extends DynamicNodeLabelImpl implements IntegrationLabel {
+ /**
+ * The cached value of the '{@link #getDeltaValue() <em>Delta Value</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDeltaValue()
+ * @generated
+ * @ordered
+ */
+ protected IntegrationLabelValue deltaValue;
+
+ /**
+ * The cached value of the '{@link #getTempValue() <em>Temp Value</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTempValue()
+ * @generated
+ * @ordered
+ */
+ protected IntegrationLabelValue tempValue;
+
+ /**
+ * The cached value of the '{@link #getProbeValue() <em>Probe Value</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getProbeValue()
+ * @generated
+ * @ordered
+ */
+ protected IntegrationLabelValue probeValue;
+
+ /**
+ * The cached value of the '{@link #getErrorScale() <em>Error Scale</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getErrorScale()
+ * @generated
+ * @ordered
+ */
+ protected IntegrationLabelValue errorScale;
+
+ /**
+ * The default value of the '{@link #getIdentifier() <em>Identifier</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIdentifier()
+ * @generated
+ * @ordered
+ */
+ protected static final String IDENTIFIER_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getIdentifier() <em>Identifier</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIdentifier()
+ * @generated
+ * @ordered
+ */
+ protected String identifier = IDENTIFIER_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IntegrationLabelImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return GraphPackage.Literals.INTEGRATION_LABEL;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IntegrationLabelValue getDeltaValue() {
+ if (deltaValue != null && deltaValue.eIsProxy()) {
+ InternalEObject oldDeltaValue = (InternalEObject)deltaValue;
+ deltaValue = (IntegrationLabelValue)eResolveProxy(oldDeltaValue);
+ if (deltaValue != oldDeltaValue) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, GraphPackage.INTEGRATION_LABEL__DELTA_VALUE, oldDeltaValue, deltaValue));
+ }
+ }
+ return deltaValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IntegrationLabelValue basicGetDeltaValue() {
+ return deltaValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDeltaValue(IntegrationLabelValue newDeltaValue) {
+ IntegrationLabelValue oldDeltaValue = deltaValue;
+ deltaValue = newDeltaValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.INTEGRATION_LABEL__DELTA_VALUE, oldDeltaValue, deltaValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IntegrationLabelValue getTempValue() {
+ if (tempValue != null && tempValue.eIsProxy()) {
+ InternalEObject oldTempValue = (InternalEObject)tempValue;
+ tempValue = (IntegrationLabelValue)eResolveProxy(oldTempValue);
+ if (tempValue != oldTempValue) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, GraphPackage.INTEGRATION_LABEL__TEMP_VALUE, oldTempValue, tempValue));
+ }
+ }
+ return tempValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IntegrationLabelValue basicGetTempValue() {
+ return tempValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTempValue(IntegrationLabelValue newTempValue) {
+ IntegrationLabelValue oldTempValue = tempValue;
+ tempValue = newTempValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.INTEGRATION_LABEL__TEMP_VALUE, oldTempValue, tempValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IntegrationLabelValue getProbeValue() {
+ if (probeValue != null && probeValue.eIsProxy()) {
+ InternalEObject oldProbeValue = (InternalEObject)probeValue;
+ probeValue = (IntegrationLabelValue)eResolveProxy(oldProbeValue);
+ if (probeValue != oldProbeValue) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, GraphPackage.INTEGRATION_LABEL__PROBE_VALUE, oldProbeValue, probeValue));
+ }
+ }
+ return probeValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IntegrationLabelValue basicGetProbeValue() {
+ return probeValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setProbeValue(IntegrationLabelValue newProbeValue) {
+ IntegrationLabelValue oldProbeValue = probeValue;
+ probeValue = newProbeValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.INTEGRATION_LABEL__PROBE_VALUE, oldProbeValue, probeValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IntegrationLabelValue getErrorScale() {
+ if (errorScale != null && errorScale.eIsProxy()) {
+ InternalEObject oldErrorScale = (InternalEObject)errorScale;
+ errorScale = (IntegrationLabelValue)eResolveProxy(oldErrorScale);
+ if (errorScale != oldErrorScale) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, GraphPackage.INTEGRATION_LABEL__ERROR_SCALE, oldErrorScale, errorScale));
+ }
+ }
+ return errorScale;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IntegrationLabelValue basicGetErrorScale() {
+ return errorScale;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setErrorScale(IntegrationLabelValue newErrorScale) {
+ IntegrationLabelValue oldErrorScale = errorScale;
+ errorScale = newErrorScale;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.INTEGRATION_LABEL__ERROR_SCALE, oldErrorScale, errorScale));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getIdentifier() {
+ return identifier;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void reset(STEMTime time) {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case GraphPackage.INTEGRATION_LABEL__DELTA_VALUE:
+ if (resolve) return getDeltaValue();
+ return basicGetDeltaValue();
+ case GraphPackage.INTEGRATION_LABEL__TEMP_VALUE:
+ if (resolve) return getTempValue();
+ return basicGetTempValue();
+ case GraphPackage.INTEGRATION_LABEL__PROBE_VALUE:
+ if (resolve) return getProbeValue();
+ return basicGetProbeValue();
+ case GraphPackage.INTEGRATION_LABEL__ERROR_SCALE:
+ if (resolve) return getErrorScale();
+ return basicGetErrorScale();
+ case GraphPackage.INTEGRATION_LABEL__IDENTIFIER:
+ return getIdentifier();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case GraphPackage.INTEGRATION_LABEL__DELTA_VALUE:
+ setDeltaValue((IntegrationLabelValue)newValue);
+ return;
+ case GraphPackage.INTEGRATION_LABEL__TEMP_VALUE:
+ setTempValue((IntegrationLabelValue)newValue);
+ return;
+ case GraphPackage.INTEGRATION_LABEL__PROBE_VALUE:
+ setProbeValue((IntegrationLabelValue)newValue);
+ return;
+ case GraphPackage.INTEGRATION_LABEL__ERROR_SCALE:
+ setErrorScale((IntegrationLabelValue)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case GraphPackage.INTEGRATION_LABEL__DELTA_VALUE:
+ setDeltaValue((IntegrationLabelValue)null);
+ return;
+ case GraphPackage.INTEGRATION_LABEL__TEMP_VALUE:
+ setTempValue((IntegrationLabelValue)null);
+ return;
+ case GraphPackage.INTEGRATION_LABEL__PROBE_VALUE:
+ setProbeValue((IntegrationLabelValue)null);
+ return;
+ case GraphPackage.INTEGRATION_LABEL__ERROR_SCALE:
+ setErrorScale((IntegrationLabelValue)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case GraphPackage.INTEGRATION_LABEL__DELTA_VALUE:
+ return deltaValue != null;
+ case GraphPackage.INTEGRATION_LABEL__TEMP_VALUE:
+ return tempValue != null;
+ case GraphPackage.INTEGRATION_LABEL__PROBE_VALUE:
+ return probeValue != null;
+ case GraphPackage.INTEGRATION_LABEL__ERROR_SCALE:
+ return errorScale != null;
+ case GraphPackage.INTEGRATION_LABEL__IDENTIFIER:
+ return IDENTIFIER_EDEFAULT == null ? identifier != null : !IDENTIFIER_EDEFAULT.equals(identifier);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (identifier: "); //$NON-NLS-1$
+ result.append(identifier);
+ result.append(')');
+ return result.toString();
+ }
+
+} //IntegrationLabelImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/IntegrationLabelValueImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/IntegrationLabelValueImpl.java
new file mode 100644
index 000000000..8124b7e36
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/IntegrationLabelValueImpl.java
@@ -0,0 +1,250 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.core.graph.impl;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
+import org.eclipse.stem.core.graph.Exchange;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.IntegrationLabelValue;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Integration Label Value</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.graph.impl.IntegrationLabelValueImpl#getArrivals <em>Arrivals</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.IntegrationLabelValueImpl#getDepartures <em>Departures</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class IntegrationLabelValueImpl extends LabelValueImpl implements IntegrationLabelValue {
+ /**
+ * The cached value of the '{@link #getArrivals() <em>Arrivals</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getArrivals()
+ * @generated
+ * @ordered
+ */
+ protected EList<Exchange> arrivals;
+
+ /**
+ * The cached value of the '{@link #getDepartures() <em>Departures</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDepartures()
+ * @generated
+ * @ordered
+ */
+ protected EList<Exchange> departures;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IntegrationLabelValueImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return GraphPackage.Literals.INTEGRATION_LABEL_VALUE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Exchange> getArrivals() {
+ if (arrivals == null) {
+ arrivals = new EObjectResolvingEList<Exchange>(Exchange.class, this, GraphPackage.INTEGRATION_LABEL_VALUE__ARRIVALS);
+ }
+ return arrivals;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Exchange> getDepartures() {
+ if (departures == null) {
+ departures = new EObjectResolvingEList<Exchange>(Exchange.class, this, GraphPackage.INTEGRATION_LABEL_VALUE__DEPARTURES);
+ }
+ return departures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IntegrationLabelValue set(IntegrationLabelValue value) {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IntegrationLabelValue add(IntegrationLabelValue value) {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IntegrationLabelValue sub(IntegrationLabelValue value) {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IntegrationLabelValue scale(double scaleFactor) {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IntegrationLabelValue add(double addition) {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IntegrationLabelValue abs() {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean avoidNegative(IntegrationLabelValue value) {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public double computeDeltaAdjustment(IntegrationLabelValue value) {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IntegrationLabelValue divide(IntegrationLabelValue value) {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public double max() {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void prepareCycle() {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case GraphPackage.INTEGRATION_LABEL_VALUE__ARRIVALS:
+ return getArrivals();
+ case GraphPackage.INTEGRATION_LABEL_VALUE__DEPARTURES:
+ return getDepartures();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case GraphPackage.INTEGRATION_LABEL_VALUE__ARRIVALS:
+ return arrivals != null && !arrivals.isEmpty();
+ case GraphPackage.INTEGRATION_LABEL_VALUE__DEPARTURES:
+ return departures != null && !departures.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //IntegrationLabelValueImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/LabelImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/LabelImpl.java
new file mode 100644
index 000000000..8693c1833
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/LabelImpl.java
@@ -0,0 +1,299 @@
+package org.eclipse.stem.core.graph.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.stem.core.STEMURI;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.impl.IdentifiableImpl;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.Label;
+import org.eclipse.stem.core.graph.LabelValue;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Label</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.graph.impl.LabelImpl#getURIOfIdentifiableToBeLabeled <em>URI Of Identifiable To Be Labeled</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.LabelImpl#getCurrentValue <em>Current Value</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.LabelImpl#getIdentifiable <em>Identifiable</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class LabelImpl extends IdentifiableImpl implements Label {
+
+ /**
+ * The default value of the '{@link #getURIOfIdentifiableToBeLabeled() <em>URI Of Identifiable To Be Labeled</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getURIOfIdentifiableToBeLabeled()
+ * @generated
+ * @ordered
+ */
+ protected static final URI URI_OF_IDENTIFIABLE_TO_BE_LABELED_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getURIOfIdentifiableToBeLabeled() <em>URI Of Identifiable To Be Labeled</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getURIOfIdentifiableToBeLabeled()
+ * @generated
+ * @ordered
+ */
+ protected URI uRIOfIdentifiableToBeLabeled = URI_OF_IDENTIFIABLE_TO_BE_LABELED_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getCurrentValue() <em>Current Value</em>}' containment reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getCurrentValue()
+ * @generated
+ * @ordered
+ */
+ protected LabelValue currentValue;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ protected LabelImpl() {
+ super();
+ setURI(STEMURI.createURI(URI_TYPE_LABEL_SEGMENT + "/"
+ + STEMURI.generateUniquePart()));
+ setTypeURI(Label.URI_TYPE_LABEL);
+ } // LabelImpl
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return GraphPackage.Literals.LABEL;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public LabelValue getCurrentValue() {
+ return currentValue;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetCurrentValue(LabelValue newCurrentValue, NotificationChain msgs) {
+ LabelValue oldCurrentValue = currentValue;
+ currentValue = newCurrentValue;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, GraphPackage.LABEL__CURRENT_VALUE, oldCurrentValue, newCurrentValue);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setCurrentValue(LabelValue newCurrentValue) {
+ if (newCurrentValue != currentValue) {
+ NotificationChain msgs = null;
+ if (currentValue != null)
+ msgs = ((InternalEObject)currentValue).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - GraphPackage.LABEL__CURRENT_VALUE, null, msgs);
+ if (newCurrentValue != null)
+ msgs = ((InternalEObject)newCurrentValue).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - GraphPackage.LABEL__CURRENT_VALUE, null, msgs);
+ msgs = basicSetCurrentValue(newCurrentValue, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.LABEL__CURRENT_VALUE, newCurrentValue, newCurrentValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ abstract public Identifiable getIdentifiable();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Identifiable basicGetIdentifiable() {
+ return getIdentifiable();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ abstract public void setIdentifiable(Identifiable newIdentifiable);
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public URI getURIOfIdentifiableToBeLabeled() {
+ // Is it set?
+ if (uRIOfIdentifiableToBeLabeled == null) {
+ // No
+ final Identifiable identifiable = getIdentifiable();
+ // Do we have an Identifiable?
+ if (identifiable != null) {
+ // Yes
+ return identifiable.getURI();
+ }
+ }
+ return uRIOfIdentifiableToBeLabeled;
+ } // getURIOfIdentifiableToBeLabeled
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setURIOfIdentifiableToBeLabeled(URI newURIOfIdentifiableToBeLabeled) {
+ URI oldURIOfIdentifiableToBeLabeled = uRIOfIdentifiableToBeLabeled;
+ uRIOfIdentifiableToBeLabeled = newURIOfIdentifiableToBeLabeled;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED, oldURIOfIdentifiableToBeLabeled, uRIOfIdentifiableToBeLabeled));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case GraphPackage.LABEL__CURRENT_VALUE:
+ return basicSetCurrentValue(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case GraphPackage.LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED:
+ return getURIOfIdentifiableToBeLabeled();
+ case GraphPackage.LABEL__CURRENT_VALUE:
+ return getCurrentValue();
+ case GraphPackage.LABEL__IDENTIFIABLE:
+ if (resolve) return getIdentifiable();
+ return basicGetIdentifiable();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case GraphPackage.LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED:
+ setURIOfIdentifiableToBeLabeled((URI)newValue);
+ return;
+ case GraphPackage.LABEL__CURRENT_VALUE:
+ setCurrentValue((LabelValue)newValue);
+ return;
+ case GraphPackage.LABEL__IDENTIFIABLE:
+ setIdentifiable((Identifiable)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case GraphPackage.LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED:
+ setURIOfIdentifiableToBeLabeled(URI_OF_IDENTIFIABLE_TO_BE_LABELED_EDEFAULT);
+ return;
+ case GraphPackage.LABEL__CURRENT_VALUE:
+ setCurrentValue((LabelValue)null);
+ return;
+ case GraphPackage.LABEL__IDENTIFIABLE:
+ setIdentifiable((Identifiable)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case GraphPackage.LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED:
+ return URI_OF_IDENTIFIABLE_TO_BE_LABELED_EDEFAULT == null ? uRIOfIdentifiableToBeLabeled != null : !URI_OF_IDENTIFIABLE_TO_BE_LABELED_EDEFAULT.equals(uRIOfIdentifiableToBeLabeled);
+ case GraphPackage.LABEL__CURRENT_VALUE:
+ return currentValue != null;
+ case GraphPackage.LABEL__IDENTIFIABLE:
+ return basicGetIdentifiable() != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ return getCurrentValue().toString();
+ } // toString
+
+ /**
+ * @see org.eclipse.stem.common.impl.IdentifiableImpl#sane()
+ * @generated NOT
+ */
+ @Override
+ public boolean sane() {
+ boolean retValue = super.sane();
+ retValue = retValue && getCurrentValue() != null;
+ assert retValue;
+
+ retValue = retValue && getCurrentValue().sane();
+ assert retValue : getURIOfIdentifiableToBeLabeled().toString();
+
+ return retValue;
+ } // sane
+
+} // LabelImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/LabelValueImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/LabelValueImpl.java
new file mode 100644
index 000000000..816691546
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/LabelValueImpl.java
@@ -0,0 +1,72 @@
+package org.eclipse.stem.core.graph.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.LabelValue;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Label Value</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class LabelValueImpl extends EObjectImpl implements LabelValue {
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ protected LabelValueImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return GraphPackage.Literals.LABEL_VALUE;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public void reset() {
+ // nothing to reset
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean sameValue(LabelValue otherLabelValue) {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * @return true
+ */
+ public boolean sane() {
+ return true;
+ } // sane
+
+} // LabelValueImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/NodeImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/NodeImpl.java
new file mode 100644
index 000000000..160e18eea
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/NodeImpl.java
@@ -0,0 +1,241 @@
+package org.eclipse.stem.core.graph.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.stem.core.STEMURI;
+import org.eclipse.stem.core.common.impl.IdentifiableImpl;
+import org.eclipse.stem.core.graph.Edge;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.Node;
+import org.eclipse.stem.core.graph.NodeLabel;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Node</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.graph.impl.NodeImpl#getEdges <em>Edges</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.NodeImpl#getLabels <em>Labels</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class NodeImpl extends IdentifiableImpl implements Node {
+
+ /**
+ * The cached value of the '{@link #getEdges() <em>Edges</em>}' reference list.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getEdges()
+ * @generated
+ * @ordered
+ */
+ protected EList<Edge> edges;
+
+ /**
+ * The cached value of the '{@link #getLabels() <em>Labels</em>}' reference list.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getLabels()
+ * @generated
+ * @ordered
+ */
+ protected EList<NodeLabel> labels;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ protected NodeImpl() {
+ super();
+// setURI(STEMURI.createURI(URI_TYPE_NODE_SEGMENT + "/"
+// + STEMURI.generateUniquePart()));
+ setTypeURI(STEMURI.NODE_TYPE_URI);
+ } // NodeImpl
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return GraphPackage.Literals.NODE;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Edge> getEdges() {
+ if (edges == null) {
+ edges = new EObjectResolvingEList<Edge>(Edge.class, this, GraphPackage.NODE__EDGES);
+ }
+ return edges;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<NodeLabel> getLabels() {
+ if (labels == null) {
+ labels = new EObjectWithInverseResolvingEList<NodeLabel>(NodeLabel.class, this, GraphPackage.NODE__LABELS, GraphPackage.NODE_LABEL__NODE);
+ }
+ return labels;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case GraphPackage.NODE__LABELS:
+ return ((InternalEList<InternalEObject>)(InternalEList<?>)getLabels()).basicAdd(otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case GraphPackage.NODE__LABELS:
+ return ((InternalEList<?>)getLabels()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * @see org.eclipse.stem.common.impl.IdentifiableImpl#sane()
+ * @generated NOT
+ */
+ @Override
+ public boolean sane() {
+ boolean retValue = super.sane();
+
+ if (getLabels() != null) {
+ // All the labels should be sane
+ for (final Iterator<NodeLabel> labelIter = getLabels().iterator(); labelIter
+ .hasNext()
+ && retValue;) {
+ final NodeLabel nodeLabel = labelIter.next();
+ // The sanity of individual NodeLabels is checked elsewhere
+ // The node label should be the one that labels this node
+ retValue = retValue
+ && nodeLabel.getURIOfIdentifiableToBeLabeled().equals(
+ getURI());
+ assert retValue;
+ } // for each label
+ }
+ // All the edges should be sane
+ // We don't test that because their test is to check their nodes
+ // which results in infinite recursion
+
+ return retValue;
+ } // sane
+
+ /**
+ * @see org.eclipse.stem.common.impl.IdentifiableImpl#toString()
+ * @generated NOT
+ */
+ @Override
+ public String toString() {
+ // Return the title of the node from it's DublinCore if it is set
+ final String title = getDublinCore().getTitle();
+ return (title != null) ? title : super.toString();
+ } // toString
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case GraphPackage.NODE__EDGES:
+ return getEdges();
+ case GraphPackage.NODE__LABELS:
+ return getLabels();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case GraphPackage.NODE__EDGES:
+ getEdges().clear();
+ getEdges().addAll((Collection<? extends Edge>)newValue);
+ return;
+ case GraphPackage.NODE__LABELS:
+ getLabels().clear();
+ getLabels().addAll((Collection<? extends NodeLabel>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case GraphPackage.NODE__EDGES:
+ getEdges().clear();
+ return;
+ case GraphPackage.NODE__LABELS:
+ getLabels().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case GraphPackage.NODE__EDGES:
+ return edges != null && !edges.isEmpty();
+ case GraphPackage.NODE__LABELS:
+ return labels != null && !labels.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} // NodeImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/NodeLabelImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/NodeLabelImpl.java
new file mode 100644
index 000000000..42e3d43c7
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/NodeLabelImpl.java
@@ -0,0 +1,237 @@
+package org.eclipse.stem.core.graph.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.Node;
+import org.eclipse.stem.core.graph.NodeLabel;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Node Label</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.graph.impl.NodeLabelImpl#getNode <em>Node</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class NodeLabelImpl extends LabelImpl implements NodeLabel {
+ /**
+ * The cached value of the '{@link #getNode() <em>Node</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNode()
+ * @generated
+ * @ordered
+ */
+ protected Node node;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected NodeLabelImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return GraphPackage.Literals.NODE_LABEL;
+ }
+
+ @Override
+ public Identifiable getIdentifiable() {
+ return getNode();
+ }
+
+ @Override
+ public void setIdentifiable(Identifiable newIdentifiable) {
+ setNode((Node)newIdentifiable);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Node getNode() {
+ if (node != null && node.eIsProxy()) {
+ InternalEObject oldNode = (InternalEObject)node;
+ node = (Node)eResolveProxy(oldNode);
+ if (node != oldNode) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, GraphPackage.NODE_LABEL__NODE, oldNode, node));
+ }
+ }
+ return node;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Node basicGetNode() {
+ return node;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetNode(Node newNode, NotificationChain msgs) {
+ Node oldNode = node;
+ node = newNode;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, GraphPackage.NODE_LABEL__NODE, oldNode, newNode);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setNode(Node newNode) {
+ if (newNode != node) {
+ NotificationChain msgs = null;
+ if (node != null)
+ msgs = ((InternalEObject)node).eInverseRemove(this, GraphPackage.NODE__LABELS, Node.class, msgs);
+ if (newNode != null)
+ msgs = ((InternalEObject)newNode).eInverseAdd(this, GraphPackage.NODE__LABELS, Node.class, msgs);
+ msgs = basicSetNode(newNode, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.NODE_LABEL__NODE, newNode, newNode));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case GraphPackage.NODE_LABEL__NODE:
+ if (node != null)
+ msgs = ((InternalEObject)node).eInverseRemove(this, GraphPackage.NODE__LABELS, Node.class, msgs);
+ return basicSetNode((Node)otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case GraphPackage.NODE_LABEL__NODE:
+ return basicSetNode(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case GraphPackage.NODE_LABEL__NODE:
+ if (resolve) return getNode();
+ return basicGetNode();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case GraphPackage.NODE_LABEL__NODE:
+ setNode((Node)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case GraphPackage.NODE_LABEL__NODE:
+ setNode((Node)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case GraphPackage.NODE_LABEL__NODE:
+ return node != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ @Override
+ public boolean sane() {
+ boolean retValue = super.sane();
+
+ retValue = retValue
+ && (getNode() == null || getNode().equals(getIdentifiable()));
+ assert retValue;
+
+ return retValue;
+ } // sane
+
+} //NodeLabelImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/SimpleGraphPartitionerImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/SimpleGraphPartitionerImpl.java
new file mode 100644
index 000000000..46f8ebe98
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/SimpleGraphPartitionerImpl.java
@@ -0,0 +1,150 @@
+package org.eclipse.stem.core.graph.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2011 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
+ *******************************************************************************/
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.NavigableSet;
+import java.util.TreeSet;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.graph.DynamicLabel;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.SimpleGraphPartitioner;
+import org.eclipse.stem.core.model.Decorator;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Simple Graph Partitioner</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class SimpleGraphPartitionerImpl extends GraphPartitionerImpl implements SimpleGraphPartitioner {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SimpleGraphPartitionerImpl() {
+ super();
+ }
+
+ protected Map<Decorator, Map<Integer, EList<DynamicLabel>>> labelPartitionMap = new HashMap<Decorator, Map<Integer, EList<DynamicLabel>>>();
+
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return GraphPackage.Literals.SIMPLE_GRAPH_PARTITIONER;
+ }
+
+ /**
+ * Override to clear map
+ */
+ @Override
+ public void setNumProcesses(int newNumProcesses) {
+ if(getNumProcesses() != newNumProcesses)
+ labelPartitionMap.clear();
+ super.setNumProcesses(newNumProcesses);
+ }
+
+ /**
+ * Simply divide the labels the decorator is updating equally among the
+ * processes alphabetically by the node URI. The method is synchronized
+ * since the labelPartitionMap is shared among the threads, but most of the times
+ * the method will return right away using the already cached results so performance
+ * is not a concern.
+ */
+ @SuppressWarnings("boxing")
+ @Override
+ public EList<DynamicLabel> partitionDecoratorLabels(Decorator decorator, int processRank) {
+ synchronized(labelPartitionMap) {
+ if(labelPartitionMap != null && labelPartitionMap.containsKey(decorator) &&
+ labelPartitionMap.get(decorator).containsKey(processRank)) {
+ EList<DynamicLabel> res = labelPartitionMap.get(decorator).get(processRank);
+ return res;
+ }
+
+ EList<DynamicLabel> temp = new BasicEList<DynamicLabel>();
+
+ // Find the node and partition the labels according to their node.
+
+ // TreeSet guarantees O(log(n)) add/contains
+ TreeSet<String>nodeURIs = new TreeSet<String>();
+ for(DynamicLabel lab:decorator.getLabelsToUpdate()) {
+ String uri = lab.getIdentifiable().getURI().toString();
+ if(!nodeURIs.contains(uri)) nodeURIs.add(uri);
+ }
+
+ int size = nodeURIs.size();
+ if(processRank == 0 || size > 1) { // If size is 1 and processRank is 0 the single node gets assigned to the first CPU.
+ int nodesPerPartition = size / getNumProcesses();
+ int start = processRank*nodesPerPartition;
+ int end;
+ if(processRank == getNumProcesses() -1) end = size; // The last threads grabs all nodes until the last one
+ else end = start + nodesPerPartition;
+ String first=nodeURIs.first();
+ for(int i=0;i<start;++i) first = nodeURIs.higher(first);
+ String last = first;
+ for(int i=start;i<end-1;++i) last = nodeURIs.higher(last);
+
+ NavigableSet<String>processURIs = nodeURIs.subSet(first, true, last, true);
+
+ for(DynamicLabel dl:decorator.getLabelsToUpdate()) {
+ if(processURIs.contains(dl.getIdentifiable().getURI().toString())) {
+ temp.add(dl);
+ }
+ }
+ }
+
+ Map<Integer, EList<DynamicLabel>> partitionMap = null;
+
+ if(labelPartitionMap.containsKey(decorator))
+ partitionMap = labelPartitionMap.get(decorator);
+ else {
+ partitionMap = new HashMap<Integer, EList<DynamicLabel>>();
+ labelPartitionMap.put(decorator, partitionMap);
+ }
+
+ partitionMap.put(processRank, temp);
+ long timeAfter = System.currentTimeMillis();
+ return temp;
+ }
+ }
+
+ /**
+ * Same as above but return all labels handled by this decorator
+ */
+ @Override
+ public EList<DynamicLabel> partitionDecoratorLabels(Decorator decorator) {
+ return decorator.getLabelsToUpdate();
+ }
+
+ /**
+ * Everything is managed by this running STEM instance
+ */
+ @Override
+ public boolean isManaged(Identifiable identifiable) {
+ return true;
+ }
+
+} //SimpleGraphPartitionerImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/StaticEdgeLabelImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/StaticEdgeLabelImpl.java
new file mode 100644
index 000000000..7a664da7a
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/StaticEdgeLabelImpl.java
@@ -0,0 +1,70 @@
+package org.eclipse.stem.core.graph.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+//import org.eclipse.emf.common.notify.Notification;
+
+//import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.graph.Edge;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.StaticEdgeLabel;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Static Edge Label</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class StaticEdgeLabelImpl extends EdgeLabelImpl implements StaticEdgeLabel {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StaticEdgeLabelImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return GraphPackage.Literals.STATIC_EDGE_LABEL;
+ }
+
+ /**
+ * @see org.eclipse.stem.core.graph.impl.LabelImpl#getIdentifiable()
+ */
+ @Override
+ public Identifiable getIdentifiable() {
+ return getEdge();
+ } // getIdentifiable
+
+
+ /**
+ * @see org.eclipse.stem.core.graph.impl.LabelImpl#setIdentifiable(org.eclipse.stem.core.common.Identifiable)
+ */
+ @Override
+ public void setIdentifiable(Identifiable newIdentifiable) {
+ setEdge((Edge)newIdentifiable);
+ } // setIdentifiable
+
+} //StaticEdgeLabelImpl \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/StaticLabelImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/StaticLabelImpl.java
new file mode 100644
index 000000000..98b1350b8
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/StaticLabelImpl.java
@@ -0,0 +1,47 @@
+package org.eclipse.stem.core.graph.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.StaticLabel;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Static Label</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class StaticLabelImpl extends LabelImpl implements StaticLabel {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StaticLabelImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return GraphPackage.Literals.STATIC_LABEL;
+ }
+
+} //StaticLabelImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/StaticNodeLabelImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/StaticNodeLabelImpl.java
new file mode 100644
index 000000000..8cadfc1bc
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/StaticNodeLabelImpl.java
@@ -0,0 +1,87 @@
+package org.eclipse.stem.core.graph.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+//import org.eclipse.emf.common.notify.Notification;
+//import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.Node;
+import org.eclipse.stem.core.graph.StaticNodeLabel;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Static Node Label</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class StaticNodeLabelImpl extends NodeLabelImpl implements StaticNodeLabel {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StaticNodeLabelImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return GraphPackage.Literals.STATIC_NODE_LABEL;
+ }
+
+ /**
+ * @see org.eclipse.stem.core.graph.impl.LabelImpl#getIdentifiable()
+ */
+ @Override
+ public Identifiable getIdentifiable() {
+ return getNode();
+ } // getIdentifiable
+
+
+ /**
+ * @see org.eclipse.stem.core.graph.impl.LabelImpl#setIdentifiable(org.eclipse.stem.core.common.Identifiable)
+ */
+ @Override
+ public void setIdentifiable(Identifiable newIdentifiable) {
+ super.setIdentifiable(newIdentifiable);
+ setNode((Node)newIdentifiable);
+ } // setIdentifiable
+
+ /**
+ * @see org.eclipse.stem.core.graph.impl.LabelImpl#sane()
+ */
+ @Override
+ public boolean sane() {
+ boolean retValue = super.sane();
+
+ retValue = retValue && getNode() != null ? getURIOfIdentifiableToBeLabeled()
+ .equals(getNode().getURI())
+ : true;
+ assert retValue;
+
+ retValue = retValue && getNode() == getIdentifiable();
+ assert retValue;
+
+ return retValue;
+ } // sane
+
+} //StaticNodeLabelImpl \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/URIToEdgeMapEntryImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/URIToEdgeMapEntryImpl.java
new file mode 100644
index 000000000..a7c5ffb8b
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/URIToEdgeMapEntryImpl.java
@@ -0,0 +1,331 @@
+package org.eclipse.stem.core.graph.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.BasicEMap;
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.stem.core.graph.Edge;
+import org.eclipse.stem.core.graph.GraphPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>URI To Edge Map Entry</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.graph.impl.URIToEdgeMapEntryImpl#getTypedKey <em>Key</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.URIToEdgeMapEntryImpl#getTypedValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class URIToEdgeMapEntryImpl extends EObjectImpl implements BasicEMap.Entry<URI,Edge> {
+ /**
+ * The default value of the '{@link #getTypedKey() <em>Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypedKey()
+ * @generated
+ * @ordered
+ */
+ protected static final URI KEY_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getTypedKey() <em>Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypedKey()
+ * @generated
+ * @ordered
+ */
+ protected URI key = KEY_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getTypedValue() <em>Value</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypedValue()
+ * @generated
+ * @ordered
+ */
+ protected Edge value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected URIToEdgeMapEntryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return GraphPackage.Literals.URI_TO_EDGE_MAP_ENTRY;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public URI getTypedKey() {
+ return key;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTypedKey(URI newKey) {
+ URI oldKey = key;
+ key = newKey;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.URI_TO_EDGE_MAP_ENTRY__KEY, oldKey, key));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Edge getTypedValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetTypedValue(Edge newValue, NotificationChain msgs) {
+ Edge oldValue = value;
+ value = newValue;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, GraphPackage.URI_TO_EDGE_MAP_ENTRY__VALUE, oldValue, newValue);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTypedValue(Edge newValue) {
+ if (newValue != value) {
+ NotificationChain msgs = null;
+ if (value != null)
+ msgs = ((InternalEObject)value).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - GraphPackage.URI_TO_EDGE_MAP_ENTRY__VALUE, null, msgs);
+ if (newValue != null)
+ msgs = ((InternalEObject)newValue).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - GraphPackage.URI_TO_EDGE_MAP_ENTRY__VALUE, null, msgs);
+ msgs = basicSetTypedValue(newValue, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.URI_TO_EDGE_MAP_ENTRY__VALUE, newValue, newValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case GraphPackage.URI_TO_EDGE_MAP_ENTRY__VALUE:
+ return basicSetTypedValue(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case GraphPackage.URI_TO_EDGE_MAP_ENTRY__KEY:
+ return getTypedKey();
+ case GraphPackage.URI_TO_EDGE_MAP_ENTRY__VALUE:
+ return getTypedValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case GraphPackage.URI_TO_EDGE_MAP_ENTRY__KEY:
+ setTypedKey((URI)newValue);
+ return;
+ case GraphPackage.URI_TO_EDGE_MAP_ENTRY__VALUE:
+ setTypedValue((Edge)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case GraphPackage.URI_TO_EDGE_MAP_ENTRY__KEY:
+ setTypedKey(KEY_EDEFAULT);
+ return;
+ case GraphPackage.URI_TO_EDGE_MAP_ENTRY__VALUE:
+ setTypedValue((Edge)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case GraphPackage.URI_TO_EDGE_MAP_ENTRY__KEY:
+ return KEY_EDEFAULT == null ? key != null : !KEY_EDEFAULT.equals(key);
+ case GraphPackage.URI_TO_EDGE_MAP_ENTRY__VALUE:
+ return value != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (key: "); //$NON-NLS-1$
+ result.append(key);
+ result.append(')');
+ return result.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected int hash = -1;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getHash() {
+ if (hash == -1) {
+ Object theKey = getKey();
+ hash = (theKey == null ? 0 : theKey.hashCode());
+ }
+ return hash;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setHash(int hash) {
+ this.hash = hash;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public URI getKey() {
+ return getTypedKey();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setKey(URI key) {
+ setTypedKey(key);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Edge getValue() {
+ return getTypedValue();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Edge setValue(Edge value) {
+ Edge oldValue = getValue();
+ setTypedValue(value);
+ return oldValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ public EMap<URI, Edge> getEMap() {
+ EObject container = eContainer();
+ return container == null ? null : (EMap<URI, Edge>)container.eGet(eContainmentFeature());
+ }
+
+} //URIToEdgeMapEntryImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/URIToIdentifiableMapEntryImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/URIToIdentifiableMapEntryImpl.java
new file mode 100644
index 000000000..86cf914d4
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/URIToIdentifiableMapEntryImpl.java
@@ -0,0 +1,332 @@
+package org.eclipse.stem.core.graph.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.BasicEMap;
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.graph.GraphPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>URI To Identifiable Map Entry</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.graph.impl.URIToIdentifiableMapEntryImpl#getTypedKey <em>Key</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.URIToIdentifiableMapEntryImpl#getTypedValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class URIToIdentifiableMapEntryImpl extends EObjectImpl implements BasicEMap.Entry<URI,Identifiable> {
+ /**
+ * The default value of the '{@link #getTypedKey() <em>Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypedKey()
+ * @generated
+ * @ordered
+ */
+ protected static final URI KEY_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getTypedKey() <em>Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypedKey()
+ * @generated
+ * @ordered
+ */
+ protected URI key = KEY_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getTypedValue() <em>Value</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypedValue()
+ * @generated
+ * @ordered
+ */
+ protected Identifiable value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected URIToIdentifiableMapEntryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return GraphPackage.Literals.URI_TO_IDENTIFIABLE_MAP_ENTRY;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public URI getTypedKey() {
+ return key;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTypedKey(URI newKey) {
+ URI oldKey = key;
+ key = newKey;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.URI_TO_IDENTIFIABLE_MAP_ENTRY__KEY, oldKey, key));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Identifiable getTypedValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetTypedValue(Identifiable newValue, NotificationChain msgs) {
+ Identifiable oldValue = value;
+ value = newValue;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, GraphPackage.URI_TO_IDENTIFIABLE_MAP_ENTRY__VALUE, oldValue, newValue);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTypedValue(Identifiable newValue) {
+ if (newValue != value) {
+ NotificationChain msgs = null;
+ if (value != null)
+ msgs = ((InternalEObject)value).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - GraphPackage.URI_TO_IDENTIFIABLE_MAP_ENTRY__VALUE, null, msgs);
+ if (newValue != null)
+ msgs = ((InternalEObject)newValue).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - GraphPackage.URI_TO_IDENTIFIABLE_MAP_ENTRY__VALUE, null, msgs);
+ msgs = basicSetTypedValue(newValue, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.URI_TO_IDENTIFIABLE_MAP_ENTRY__VALUE, newValue, newValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case GraphPackage.URI_TO_IDENTIFIABLE_MAP_ENTRY__VALUE:
+ return basicSetTypedValue(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case GraphPackage.URI_TO_IDENTIFIABLE_MAP_ENTRY__KEY:
+ return getTypedKey();
+ case GraphPackage.URI_TO_IDENTIFIABLE_MAP_ENTRY__VALUE:
+ return getTypedValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case GraphPackage.URI_TO_IDENTIFIABLE_MAP_ENTRY__KEY:
+ setTypedKey((URI)newValue);
+ return;
+ case GraphPackage.URI_TO_IDENTIFIABLE_MAP_ENTRY__VALUE:
+ setTypedValue((Identifiable)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case GraphPackage.URI_TO_IDENTIFIABLE_MAP_ENTRY__KEY:
+ setTypedKey(KEY_EDEFAULT);
+ return;
+ case GraphPackage.URI_TO_IDENTIFIABLE_MAP_ENTRY__VALUE:
+ setTypedValue((Identifiable)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case GraphPackage.URI_TO_IDENTIFIABLE_MAP_ENTRY__KEY:
+ return KEY_EDEFAULT == null ? key != null : !KEY_EDEFAULT.equals(key);
+ case GraphPackage.URI_TO_IDENTIFIABLE_MAP_ENTRY__VALUE:
+ return value != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (key: "); //$NON-NLS-1$
+ result.append(key);
+ result.append(')');
+ return result.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected int hash = -1;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getHash() {
+ if (hash == -1) {
+ Object theKey = getKey();
+ hash = (theKey == null ? 0 : theKey.hashCode());
+ }
+ return hash;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setHash(int hash) {
+ this.hash = hash;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public URI getKey() {
+ return getTypedKey();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setKey(URI key) {
+ setTypedKey(key);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Identifiable getValue() {
+ return getTypedValue();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Identifiable setValue(Identifiable value) {
+ Identifiable oldValue = getValue();
+ setTypedValue(value);
+ return oldValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ public EMap<URI, Identifiable> getEMap() {
+ EObject container = eContainer();
+ return container == null ? null : (EMap<URI, Identifiable>)container.eGet(eContainmentFeature());
+ }
+
+} //URIToIdentifiableMapEntryImpl \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/URIToLabelMapEntryImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/URIToLabelMapEntryImpl.java
new file mode 100644
index 000000000..58cd97135
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/URIToLabelMapEntryImpl.java
@@ -0,0 +1,331 @@
+package org.eclipse.stem.core.graph.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.BasicEMap;
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.Label;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>URI To Label Map Entry</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.graph.impl.URIToLabelMapEntryImpl#getTypedKey <em>Key</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.URIToLabelMapEntryImpl#getTypedValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class URIToLabelMapEntryImpl extends EObjectImpl implements BasicEMap.Entry<URI,Label> {
+ /**
+ * The default value of the '{@link #getTypedKey() <em>Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypedKey()
+ * @generated
+ * @ordered
+ */
+ protected static final URI KEY_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getTypedKey() <em>Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypedKey()
+ * @generated
+ * @ordered
+ */
+ protected URI key = KEY_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getTypedValue() <em>Value</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypedValue()
+ * @generated
+ * @ordered
+ */
+ protected Label value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected URIToLabelMapEntryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return GraphPackage.Literals.URI_TO_LABEL_MAP_ENTRY;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public URI getTypedKey() {
+ return key;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTypedKey(URI newKey) {
+ URI oldKey = key;
+ key = newKey;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.URI_TO_LABEL_MAP_ENTRY__KEY, oldKey, key));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Label getTypedValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetTypedValue(Label newValue, NotificationChain msgs) {
+ Label oldValue = value;
+ value = newValue;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, GraphPackage.URI_TO_LABEL_MAP_ENTRY__VALUE, oldValue, newValue);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTypedValue(Label newValue) {
+ if (newValue != value) {
+ NotificationChain msgs = null;
+ if (value != null)
+ msgs = ((InternalEObject)value).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - GraphPackage.URI_TO_LABEL_MAP_ENTRY__VALUE, null, msgs);
+ if (newValue != null)
+ msgs = ((InternalEObject)newValue).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - GraphPackage.URI_TO_LABEL_MAP_ENTRY__VALUE, null, msgs);
+ msgs = basicSetTypedValue(newValue, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.URI_TO_LABEL_MAP_ENTRY__VALUE, newValue, newValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case GraphPackage.URI_TO_LABEL_MAP_ENTRY__VALUE:
+ return basicSetTypedValue(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case GraphPackage.URI_TO_LABEL_MAP_ENTRY__KEY:
+ return getTypedKey();
+ case GraphPackage.URI_TO_LABEL_MAP_ENTRY__VALUE:
+ return getTypedValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case GraphPackage.URI_TO_LABEL_MAP_ENTRY__KEY:
+ setTypedKey((URI)newValue);
+ return;
+ case GraphPackage.URI_TO_LABEL_MAP_ENTRY__VALUE:
+ setTypedValue((Label)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case GraphPackage.URI_TO_LABEL_MAP_ENTRY__KEY:
+ setTypedKey(KEY_EDEFAULT);
+ return;
+ case GraphPackage.URI_TO_LABEL_MAP_ENTRY__VALUE:
+ setTypedValue((Label)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case GraphPackage.URI_TO_LABEL_MAP_ENTRY__KEY:
+ return KEY_EDEFAULT == null ? key != null : !KEY_EDEFAULT.equals(key);
+ case GraphPackage.URI_TO_LABEL_MAP_ENTRY__VALUE:
+ return value != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (key: "); //$NON-NLS-1$
+ result.append(key);
+ result.append(')');
+ return result.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected int hash = -1;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getHash() {
+ if (hash == -1) {
+ Object theKey = getKey();
+ hash = (theKey == null ? 0 : theKey.hashCode());
+ }
+ return hash;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setHash(int hash) {
+ this.hash = hash;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public URI getKey() {
+ return getTypedKey();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setKey(URI key) {
+ setTypedKey(key);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Label getValue() {
+ return getTypedValue();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Label setValue(Label value) {
+ Label oldValue = getValue();
+ setTypedValue(value);
+ return oldValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ public EMap<URI, Label> getEMap() {
+ EObject container = eContainer();
+ return container == null ? null : (EMap<URI, Label>)container.eGet(eContainmentFeature());
+ }
+
+} //URIToLabelMapEntryImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/URIToNodeLabelMapEntryImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/URIToNodeLabelMapEntryImpl.java
new file mode 100644
index 000000000..8abb1e497
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/URIToNodeLabelMapEntryImpl.java
@@ -0,0 +1,331 @@
+package org.eclipse.stem.core.graph.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.BasicEMap;
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.NodeLabel;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>URI To Node Label Map Entry</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.graph.impl.URIToNodeLabelMapEntryImpl#getTypedKey <em>Key</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.URIToNodeLabelMapEntryImpl#getTypedValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class URIToNodeLabelMapEntryImpl extends EObjectImpl implements BasicEMap.Entry<URI,NodeLabel> {
+ /**
+ * The default value of the '{@link #getTypedKey() <em>Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypedKey()
+ * @generated
+ * @ordered
+ */
+ protected static final URI KEY_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getTypedKey() <em>Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypedKey()
+ * @generated
+ * @ordered
+ */
+ protected URI key = KEY_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getTypedValue() <em>Value</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypedValue()
+ * @generated
+ * @ordered
+ */
+ protected NodeLabel value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected URIToNodeLabelMapEntryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return GraphPackage.Literals.URI_TO_NODE_LABEL_MAP_ENTRY;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public URI getTypedKey() {
+ return key;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTypedKey(URI newKey) {
+ URI oldKey = key;
+ key = newKey;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.URI_TO_NODE_LABEL_MAP_ENTRY__KEY, oldKey, key));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NodeLabel getTypedValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetTypedValue(NodeLabel newValue, NotificationChain msgs) {
+ NodeLabel oldValue = value;
+ value = newValue;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, GraphPackage.URI_TO_NODE_LABEL_MAP_ENTRY__VALUE, oldValue, newValue);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTypedValue(NodeLabel newValue) {
+ if (newValue != value) {
+ NotificationChain msgs = null;
+ if (value != null)
+ msgs = ((InternalEObject)value).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - GraphPackage.URI_TO_NODE_LABEL_MAP_ENTRY__VALUE, null, msgs);
+ if (newValue != null)
+ msgs = ((InternalEObject)newValue).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - GraphPackage.URI_TO_NODE_LABEL_MAP_ENTRY__VALUE, null, msgs);
+ msgs = basicSetTypedValue(newValue, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.URI_TO_NODE_LABEL_MAP_ENTRY__VALUE, newValue, newValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case GraphPackage.URI_TO_NODE_LABEL_MAP_ENTRY__VALUE:
+ return basicSetTypedValue(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case GraphPackage.URI_TO_NODE_LABEL_MAP_ENTRY__KEY:
+ return getTypedKey();
+ case GraphPackage.URI_TO_NODE_LABEL_MAP_ENTRY__VALUE:
+ return getTypedValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case GraphPackage.URI_TO_NODE_LABEL_MAP_ENTRY__KEY:
+ setTypedKey((URI)newValue);
+ return;
+ case GraphPackage.URI_TO_NODE_LABEL_MAP_ENTRY__VALUE:
+ setTypedValue((NodeLabel)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case GraphPackage.URI_TO_NODE_LABEL_MAP_ENTRY__KEY:
+ setTypedKey(KEY_EDEFAULT);
+ return;
+ case GraphPackage.URI_TO_NODE_LABEL_MAP_ENTRY__VALUE:
+ setTypedValue((NodeLabel)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case GraphPackage.URI_TO_NODE_LABEL_MAP_ENTRY__KEY:
+ return KEY_EDEFAULT == null ? key != null : !KEY_EDEFAULT.equals(key);
+ case GraphPackage.URI_TO_NODE_LABEL_MAP_ENTRY__VALUE:
+ return value != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (key: "); //$NON-NLS-1$
+ result.append(key);
+ result.append(')');
+ return result.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected int hash = -1;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getHash() {
+ if (hash == -1) {
+ Object theKey = getKey();
+ hash = (theKey == null ? 0 : theKey.hashCode());
+ }
+ return hash;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setHash(int hash) {
+ this.hash = hash;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public URI getKey() {
+ return getTypedKey();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setKey(URI key) {
+ setTypedKey(key);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NodeLabel getValue() {
+ return getTypedValue();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NodeLabel setValue(NodeLabel value) {
+ NodeLabel oldValue = getValue();
+ setTypedValue(value);
+ return oldValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ public EMap<URI, NodeLabel> getEMap() {
+ EObject container = eContainer();
+ return container == null ? null : (EMap<URI, NodeLabel>)container.eGet(eContainmentFeature());
+ }
+
+} //URIToNodeLabelMapEntryImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/URIToNodeMapEntryImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/URIToNodeMapEntryImpl.java
new file mode 100644
index 000000000..6ca44d635
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/URIToNodeMapEntryImpl.java
@@ -0,0 +1,331 @@
+package org.eclipse.stem.core.graph.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.BasicEMap;
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.Node;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>URI To Node Map Entry</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.graph.impl.URIToNodeMapEntryImpl#getTypedKey <em>Key</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.URIToNodeMapEntryImpl#getTypedValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class URIToNodeMapEntryImpl extends EObjectImpl implements BasicEMap.Entry<URI,Node> {
+ /**
+ * The default value of the '{@link #getTypedKey() <em>Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypedKey()
+ * @generated
+ * @ordered
+ */
+ protected static final URI KEY_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getTypedKey() <em>Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypedKey()
+ * @generated
+ * @ordered
+ */
+ protected URI key = KEY_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getTypedValue() <em>Value</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypedValue()
+ * @generated
+ * @ordered
+ */
+ protected Node value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected URIToNodeMapEntryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return GraphPackage.Literals.URI_TO_NODE_MAP_ENTRY;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public URI getTypedKey() {
+ return key;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTypedKey(URI newKey) {
+ URI oldKey = key;
+ key = newKey;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.URI_TO_NODE_MAP_ENTRY__KEY, oldKey, key));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Node getTypedValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetTypedValue(Node newValue, NotificationChain msgs) {
+ Node oldValue = value;
+ value = newValue;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, GraphPackage.URI_TO_NODE_MAP_ENTRY__VALUE, oldValue, newValue);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTypedValue(Node newValue) {
+ if (newValue != value) {
+ NotificationChain msgs = null;
+ if (value != null)
+ msgs = ((InternalEObject)value).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - GraphPackage.URI_TO_NODE_MAP_ENTRY__VALUE, null, msgs);
+ if (newValue != null)
+ msgs = ((InternalEObject)newValue).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - GraphPackage.URI_TO_NODE_MAP_ENTRY__VALUE, null, msgs);
+ msgs = basicSetTypedValue(newValue, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.URI_TO_NODE_MAP_ENTRY__VALUE, newValue, newValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case GraphPackage.URI_TO_NODE_MAP_ENTRY__VALUE:
+ return basicSetTypedValue(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case GraphPackage.URI_TO_NODE_MAP_ENTRY__KEY:
+ return getTypedKey();
+ case GraphPackage.URI_TO_NODE_MAP_ENTRY__VALUE:
+ return getTypedValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case GraphPackage.URI_TO_NODE_MAP_ENTRY__KEY:
+ setTypedKey((URI)newValue);
+ return;
+ case GraphPackage.URI_TO_NODE_MAP_ENTRY__VALUE:
+ setTypedValue((Node)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case GraphPackage.URI_TO_NODE_MAP_ENTRY__KEY:
+ setTypedKey(KEY_EDEFAULT);
+ return;
+ case GraphPackage.URI_TO_NODE_MAP_ENTRY__VALUE:
+ setTypedValue((Node)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case GraphPackage.URI_TO_NODE_MAP_ENTRY__KEY:
+ return KEY_EDEFAULT == null ? key != null : !KEY_EDEFAULT.equals(key);
+ case GraphPackage.URI_TO_NODE_MAP_ENTRY__VALUE:
+ return value != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (key: "); //$NON-NLS-1$
+ result.append(key);
+ result.append(')');
+ return result.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected int hash = -1;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getHash() {
+ if (hash == -1) {
+ Object theKey = getKey();
+ hash = (theKey == null ? 0 : theKey.hashCode());
+ }
+ return hash;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setHash(int hash) {
+ this.hash = hash;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public URI getKey() {
+ return getTypedKey();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setKey(URI key) {
+ setTypedKey(key);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Node getValue() {
+ return getTypedValue();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Node setValue(Node value) {
+ Node oldValue = getValue();
+ setTypedValue(value);
+ return oldValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ public EMap<URI, Node> getEMap() {
+ EObject container = eContainer();
+ return container == null ? null : (EMap<URI, Node>)container.eGet(eContainmentFeature());
+ }
+
+} //URIToNodeMapEntryImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/UnresolvedIdentifiableImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/UnresolvedIdentifiableImpl.java
new file mode 100644
index 000000000..cb3bbba2e
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/impl/UnresolvedIdentifiableImpl.java
@@ -0,0 +1,436 @@
+package org.eclipse.stem.core.graph.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.UnresolvedIdentifiable;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Unresolved Identifiable</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.graph.impl.UnresolvedIdentifiableImpl#getScenario <em>Scenario</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.UnresolvedIdentifiableImpl#getModel <em>Model</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.UnresolvedIdentifiableImpl#getGraph <em>Graph</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.UnresolvedIdentifiableImpl#getIdentifiable <em>Identifiable</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.UnresolvedIdentifiableImpl#getUnresolvedURI <em>Unresolved URI</em>}</li>
+ * <li>{@link org.eclipse.stem.core.graph.impl.UnresolvedIdentifiableImpl#getFieldName <em>Field Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class UnresolvedIdentifiableImpl extends EObjectImpl implements
+ UnresolvedIdentifiable {
+ /**
+ * The cached value of the '{@link #getScenario() <em>Scenario</em>}' reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getScenario()
+ * @generated
+ * @ordered
+ */
+ protected Identifiable scenario;
+
+ /**
+ * The cached value of the '{@link #getModel() <em>Model</em>}' reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getModel()
+ * @generated
+ * @ordered
+ */
+ protected Identifiable model;
+
+ /**
+ * The cached value of the '{@link #getGraph() <em>Graph</em>}' reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getGraph()
+ * @generated
+ * @ordered
+ */
+ protected Identifiable graph;
+
+ /**
+ * The cached value of the '{@link #getIdentifiable() <em>Identifiable</em>}' reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getIdentifiable()
+ * @generated
+ * @ordered
+ */
+ protected Identifiable identifiable;
+
+ /**
+ * The default value of the '{@link #getUnresolvedURI() <em>Unresolved URI</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getUnresolvedURI()
+ * @generated
+ * @ordered
+ */
+ protected static final URI UNRESOLVED_URI_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getUnresolvedURI() <em>Unresolved URI</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getUnresolvedURI()
+ * @generated
+ * @ordered
+ */
+ protected URI unresolvedURI = UNRESOLVED_URI_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getFieldName() <em>Field Name</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getFieldName()
+ * @generated
+ * @ordered
+ */
+ protected static final String FIELD_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getFieldName() <em>Field Name</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getFieldName()
+ * @generated
+ * @ordered
+ */
+ protected String fieldName = FIELD_NAME_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ protected UnresolvedIdentifiableImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return GraphPackage.Literals.UNRESOLVED_IDENTIFIABLE;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public Identifiable getScenario() {
+ if (scenario != null && scenario.eIsProxy()) {
+ InternalEObject oldScenario = (InternalEObject)scenario;
+ scenario = (Identifiable)eResolveProxy(oldScenario);
+ if (scenario != oldScenario) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, GraphPackage.UNRESOLVED_IDENTIFIABLE__SCENARIO, oldScenario, scenario));
+ }
+ }
+ return scenario;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public Identifiable basicGetScenario() {
+ return scenario;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setScenario(Identifiable newScenario) {
+ Identifiable oldScenario = scenario;
+ scenario = newScenario;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.UNRESOLVED_IDENTIFIABLE__SCENARIO, oldScenario, scenario));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public Identifiable getModel() {
+ if (model != null && model.eIsProxy()) {
+ InternalEObject oldModel = (InternalEObject)model;
+ model = (Identifiable)eResolveProxy(oldModel);
+ if (model != oldModel) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, GraphPackage.UNRESOLVED_IDENTIFIABLE__MODEL, oldModel, model));
+ }
+ }
+ return model;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public Identifiable basicGetModel() {
+ return model;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setModel(Identifiable newModel) {
+ Identifiable oldModel = model;
+ model = newModel;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.UNRESOLVED_IDENTIFIABLE__MODEL, oldModel, model));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public Identifiable getGraph() {
+ if (graph != null && graph.eIsProxy()) {
+ InternalEObject oldGraph = (InternalEObject)graph;
+ graph = (Identifiable)eResolveProxy(oldGraph);
+ if (graph != oldGraph) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, GraphPackage.UNRESOLVED_IDENTIFIABLE__GRAPH, oldGraph, graph));
+ }
+ }
+ return graph;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public Identifiable basicGetGraph() {
+ return graph;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setGraph(Identifiable newGraph) {
+ Identifiable oldGraph = graph;
+ graph = newGraph;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.UNRESOLVED_IDENTIFIABLE__GRAPH, oldGraph, graph));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public Identifiable getIdentifiable() {
+ if (identifiable != null && identifiable.eIsProxy()) {
+ InternalEObject oldIdentifiable = (InternalEObject)identifiable;
+ identifiable = (Identifiable)eResolveProxy(oldIdentifiable);
+ if (identifiable != oldIdentifiable) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, GraphPackage.UNRESOLVED_IDENTIFIABLE__IDENTIFIABLE, oldIdentifiable, identifiable));
+ }
+ }
+ return identifiable;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public Identifiable basicGetIdentifiable() {
+ return identifiable;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setIdentifiable(Identifiable newIdentifiable) {
+ Identifiable oldIdentifiable = identifiable;
+ identifiable = newIdentifiable;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.UNRESOLVED_IDENTIFIABLE__IDENTIFIABLE, oldIdentifiable, identifiable));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public URI getUnresolvedURI() {
+ return unresolvedURI;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setUnresolvedURI(URI newUnresolvedURI) {
+ URI oldUnresolvedURI = unresolvedURI;
+ unresolvedURI = newUnresolvedURI;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.UNRESOLVED_IDENTIFIABLE__UNRESOLVED_URI, oldUnresolvedURI, unresolvedURI));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public String getFieldName() {
+ return fieldName;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setFieldName(String newFieldName) {
+ String oldFieldName = fieldName;
+ fieldName = newFieldName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, GraphPackage.UNRESOLVED_IDENTIFIABLE__FIELD_NAME, oldFieldName, fieldName));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case GraphPackage.UNRESOLVED_IDENTIFIABLE__SCENARIO:
+ if (resolve) return getScenario();
+ return basicGetScenario();
+ case GraphPackage.UNRESOLVED_IDENTIFIABLE__MODEL:
+ if (resolve) return getModel();
+ return basicGetModel();
+ case GraphPackage.UNRESOLVED_IDENTIFIABLE__GRAPH:
+ if (resolve) return getGraph();
+ return basicGetGraph();
+ case GraphPackage.UNRESOLVED_IDENTIFIABLE__IDENTIFIABLE:
+ if (resolve) return getIdentifiable();
+ return basicGetIdentifiable();
+ case GraphPackage.UNRESOLVED_IDENTIFIABLE__UNRESOLVED_URI:
+ return getUnresolvedURI();
+ case GraphPackage.UNRESOLVED_IDENTIFIABLE__FIELD_NAME:
+ return getFieldName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case GraphPackage.UNRESOLVED_IDENTIFIABLE__SCENARIO:
+ setScenario((Identifiable)newValue);
+ return;
+ case GraphPackage.UNRESOLVED_IDENTIFIABLE__MODEL:
+ setModel((Identifiable)newValue);
+ return;
+ case GraphPackage.UNRESOLVED_IDENTIFIABLE__GRAPH:
+ setGraph((Identifiable)newValue);
+ return;
+ case GraphPackage.UNRESOLVED_IDENTIFIABLE__IDENTIFIABLE:
+ setIdentifiable((Identifiable)newValue);
+ return;
+ case GraphPackage.UNRESOLVED_IDENTIFIABLE__UNRESOLVED_URI:
+ setUnresolvedURI((URI)newValue);
+ return;
+ case GraphPackage.UNRESOLVED_IDENTIFIABLE__FIELD_NAME:
+ setFieldName((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case GraphPackage.UNRESOLVED_IDENTIFIABLE__SCENARIO:
+ setScenario((Identifiable)null);
+ return;
+ case GraphPackage.UNRESOLVED_IDENTIFIABLE__MODEL:
+ setModel((Identifiable)null);
+ return;
+ case GraphPackage.UNRESOLVED_IDENTIFIABLE__GRAPH:
+ setGraph((Identifiable)null);
+ return;
+ case GraphPackage.UNRESOLVED_IDENTIFIABLE__IDENTIFIABLE:
+ setIdentifiable((Identifiable)null);
+ return;
+ case GraphPackage.UNRESOLVED_IDENTIFIABLE__UNRESOLVED_URI:
+ setUnresolvedURI(UNRESOLVED_URI_EDEFAULT);
+ return;
+ case GraphPackage.UNRESOLVED_IDENTIFIABLE__FIELD_NAME:
+ setFieldName(FIELD_NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case GraphPackage.UNRESOLVED_IDENTIFIABLE__SCENARIO:
+ return scenario != null;
+ case GraphPackage.UNRESOLVED_IDENTIFIABLE__MODEL:
+ return model != null;
+ case GraphPackage.UNRESOLVED_IDENTIFIABLE__GRAPH:
+ return graph != null;
+ case GraphPackage.UNRESOLVED_IDENTIFIABLE__IDENTIFIABLE:
+ return identifiable != null;
+ case GraphPackage.UNRESOLVED_IDENTIFIABLE__UNRESOLVED_URI:
+ return UNRESOLVED_URI_EDEFAULT == null ? unresolvedURI != null : !UNRESOLVED_URI_EDEFAULT.equals(unresolvedURI);
+ case GraphPackage.UNRESOLVED_IDENTIFIABLE__FIELD_NAME:
+ return FIELD_NAME_EDEFAULT == null ? fieldName != null : !FIELD_NAME_EDEFAULT.equals(fieldName);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+
+ StringBuffer result = new StringBuffer();
+ result.append(getIdentifiable().toString());
+ result.append(", unresolved URI: ");
+ result.append(getUnresolvedURI());
+ result.append(", fieldName: ");
+ result.append(getFieldName());
+ return result.toString();
+ } // toString
+
+} // UnresolvedIdentifiableImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/DynamicEdgeLabelItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/DynamicEdgeLabelItemProvider.java
new file mode 100644
index 000000000..d6e6166f5
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/DynamicEdgeLabelItemProvider.java
@@ -0,0 +1,132 @@
+package org.eclipse.stem.core.graph.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.graph.DynamicEdgeLabel;
+import org.eclipse.stem.core.graph.GraphPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.graph.DynamicEdgeLabel} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DynamicEdgeLabelItemProvider
+ extends DynamicLabelItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DynamicEdgeLabelItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addEdgePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Edge feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addEdgePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_EdgeLabel_edge_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_EdgeLabel_edge_feature", "_UI_EdgeLabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ GraphPackage.Literals.EDGE_LABEL__EDGE,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ URI labelValue = ((DynamicEdgeLabel)object).getURI();
+ String label = labelValue == null ? null : labelValue.toString();
+ return label == null || label.length() == 0 ?
+ getString("_UI_DynamicEdgeLabel_type") : //$NON-NLS-1$
+ getString("_UI_DynamicEdgeLabel_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/DynamicLabelItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/DynamicLabelItemProvider.java
new file mode 100644
index 000000000..e87355035
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/DynamicLabelItemProvider.java
@@ -0,0 +1,169 @@
+package org.eclipse.stem.core.graph.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.graph.DynamicLabel;
+import org.eclipse.stem.core.graph.GraphPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.graph.DynamicLabel} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DynamicLabelItemProvider
+ extends LabelItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DynamicLabelItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addNextValueValidPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Next Value Valid feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addNextValueValidPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_DynamicLabel_nextValueValid_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_DynamicLabel_nextValueValid_feature", "_UI_DynamicLabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ GraphPackage.Literals.DYNAMIC_LABEL__NEXT_VALUE_VALID,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns DynamicLabel.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/customobj16/DynamicLabel"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+// URI labelValue = ((DynamicLabel)object).getURI();
+// String label = labelValue == null ? null : labelValue.toString();
+// return label == null || label.length() == 0 ?
+// getString("_UI_DynamicLabel_type") :
+// getString("_UI_DynamicLabel_type") + " " + label;
+ return super.getText(object);
+ } // getText
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ //@Override
+ @Override
+ public String getTextGen(Object object) {
+ URI labelValue = ((DynamicLabel)object).getURI();
+ String label = labelValue == null ? null : labelValue.toString();
+ return label == null || label.length() == 0 ?
+ getString("_UI_DynamicLabel_type") : //$NON-NLS-1$
+ getString("_UI_DynamicLabel_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(DynamicLabel.class)) {
+ case GraphPackage.DYNAMIC_LABEL__NEXT_VALUE_VALID:
+ case GraphPackage.DYNAMIC_LABEL__NEXT_VALUE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/DynamicNodeLabelItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/DynamicNodeLabelItemProvider.java
new file mode 100644
index 000000000..985c16b2e
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/DynamicNodeLabelItemProvider.java
@@ -0,0 +1,132 @@
+package org.eclipse.stem.core.graph.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.graph.DynamicNodeLabel;
+import org.eclipse.stem.core.graph.GraphPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.graph.DynamicNodeLabel} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DynamicNodeLabelItemProvider
+ extends DynamicLabelItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DynamicNodeLabelItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addNodePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Node feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addNodePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_NodeLabel_node_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_NodeLabel_node_feature", "_UI_NodeLabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ GraphPackage.Literals.NODE_LABEL__NODE,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ URI labelValue = ((DynamicNodeLabel)object).getURI();
+ String label = labelValue == null ? null : labelValue.toString();
+ return label == null || label.length() == 0 ?
+ getString("_UI_DynamicNodeLabel_type") : //$NON-NLS-1$
+ getString("_UI_DynamicNodeLabel_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/EdgeItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/EdgeItemProvider.java
new file mode 100644
index 000000000..e77c66648
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/EdgeItemProvider.java
@@ -0,0 +1,318 @@
+package org.eclipse.stem.core.graph.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2006, 2008 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.common.provider.CoreEditPlugin;
+import org.eclipse.stem.core.common.provider.IdentifiableItemProvider;
+import org.eclipse.stem.core.graph.Edge;
+import org.eclipse.stem.core.graph.EdgeLabel;
+import org.eclipse.stem.core.graph.GraphPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.graph.Edge} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EdgeItemProvider
+ extends IdentifiableItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EdgeItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addAPropertyDescriptor(object);
+ addNodeAURIPropertyDescriptor(object);
+ addBPropertyDescriptor(object);
+ addNodeBURIPropertyDescriptor(object);
+ addDirectedPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the A feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addAPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Edge_a_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Edge_a_feature", "_UI_Edge_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ GraphPackage.Literals.EDGE__A,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Node AURI feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addNodeAURIPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Edge_nodeAURI_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Edge_nodeAURI_feature", "_UI_Edge_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ GraphPackage.Literals.EDGE__NODE_AURI,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the B feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addBPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Edge_b_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Edge_b_feature", "_UI_Edge_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ GraphPackage.Literals.EDGE__B,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Node BURI feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addNodeBURIPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Edge_nodeBURI_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Edge_nodeBURI_feature", "_UI_Edge_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ GraphPackage.Literals.EDGE__NODE_BURI,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Directed feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addDirectedPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Edge_directed_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Edge_directed_feature", "_UI_Edge_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ GraphPackage.Literals.EDGE__DIRECTED,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(GraphPackage.Literals.EDGE__LABEL);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns Edge.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/customobj16/Edge"));
+ } // getImage
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ final ComposedAdapterFactory itemProviderFactory = new ComposedAdapterFactory(
+ ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+ final Edge edge = (Edge)object;
+ final EdgeLabel label = edge.getLabel();
+
+ if (label==null) return getTextGen(object);
+ final IItemLabelProvider labelProvider =(IItemLabelProvider) itemProviderFactory.adapt(label,IItemLabelProvider.class);
+ // Did we find an adapter?
+ if (labelProvider != null) {
+ // Yes
+ return labelProvider.getText(label);
+ } // if
+ return getTextGen(object);
+ } // getText
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+// @Override
+ @Override
+ public String getTextGen(Object object) {
+ URI labelValue = ((Edge)object).getURI();
+ String label = labelValue == null ? null : labelValue.toString();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Edge_type") : //$NON-NLS-1$
+ getString("_UI_Edge_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(Edge.class)) {
+ case GraphPackage.EDGE__DIRECTED:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case GraphPackage.EDGE__LABEL:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return CoreEditPlugin.INSTANCE;
+ }
+
+} // EdgeItemProvider
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/EdgeLabelItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/EdgeLabelItemProvider.java
new file mode 100644
index 000000000..757c42b16
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/EdgeLabelItemProvider.java
@@ -0,0 +1,168 @@
+package org.eclipse.stem.core.graph.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.graph.EdgeLabel;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.LabelValue;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.graph.EdgeLabel} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EdgeLabelItemProvider
+ extends LabelItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EdgeLabelItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addEdgePropertyDescriptor(object);
+ EdgeLabelItemProvider.addCurrentValueProperties(object,itemPropertyDescriptors); // We need to add the descriptors for the current value so they show up in new modifier wizards etc. The label (not label value) is modifiable since it has the URI needed to reference it
+ }
+ return itemPropertyDescriptors;
+ }
+
+ public static void addCurrentValueProperties(Object object,
+ final List<IItemPropertyDescriptor> itemPropertyDescriptors) {
+ final EdgeLabel el = (EdgeLabel) object;
+ final LabelValue lv = (LabelValue) el
+ .eGet(GraphPackage.Literals.LABEL__CURRENT_VALUE);
+
+ final ComposedAdapterFactory itemProviderFactory = new ComposedAdapterFactory(
+ ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+ final IItemPropertySource propertySource = (IItemPropertySource) itemProviderFactory
+ .adapt(lv, IItemPropertySource.class);
+ if (propertySource != null) {
+ final List<IItemPropertyDescriptor> properties = propertySource
+ .getPropertyDescriptors(lv);
+ itemPropertyDescriptors.addAll(properties);
+ }
+ } // addCurrentValueProperties
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptorsGen(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addEdgePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Edge feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addEdgePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_EdgeLabel_edge_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_EdgeLabel_edge_feature", "_UI_EdgeLabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ GraphPackage.Literals.EDGE_LABEL__EDGE,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ URI labelValue = ((EdgeLabel)object).getURI();
+ String label = labelValue == null ? null : labelValue.toString();
+ return label == null || label.length() == 0 ?
+ getString("_UI_EdgeLabel_type") : //$NON-NLS-1$
+ getString("_UI_EdgeLabel_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/ExchangeItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/ExchangeItemProvider.java
new file mode 100644
index 000000000..d9b3c0941
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/ExchangeItemProvider.java
@@ -0,0 +1,208 @@
+package org.eclipse.stem.core.graph.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2011 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.common.provider.CoreEditPlugin;
+import org.eclipse.stem.core.graph.Exchange;
+import org.eclipse.stem.core.graph.GraphPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.graph.Exchange} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ExchangeItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ExchangeItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addOtherLabelPropertyDescriptor(object);
+ addCountPropertyDescriptor(object);
+ addTypePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Other Label feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addOtherLabelPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Exchange_otherLabel_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Exchange_otherLabel_feature", "_UI_Exchange_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ GraphPackage.Literals.EXCHANGE__OTHER_LABEL,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Count feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addCountPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Exchange_count_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Exchange_count_feature", "_UI_Exchange_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ GraphPackage.Literals.EXCHANGE__COUNT,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Type feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addTypePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Exchange_type_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Exchange_type_feature", "_UI_Exchange_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ GraphPackage.Literals.EXCHANGE__TYPE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns Exchange.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Exchange")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ Exchange exchange = (Exchange)object;
+ return getString("_UI_Exchange_type") + " " + exchange.getCount(); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(Exchange.class)) {
+ case GraphPackage.EXCHANGE__COUNT:
+ case GraphPackage.EXCHANGE__TYPE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return CoreEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/GraphEditPlugin.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/GraphEditPlugin.java
new file mode 100644
index 000000000..4445c0ecd
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/GraphEditPlugin.java
@@ -0,0 +1,99 @@
+package org.eclipse.stem.core.graph.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.ui.EclipseUIPlugin;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.stem.core.common.provider.CommonEditPlugin;
+
+/**
+ * This is the central singleton for the Graph editor plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class GraphEditPlugin extends EMFPlugin {
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final GraphEditPlugin INSTANCE = new GraphEditPlugin();
+
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static Implementation plugin;
+
+ /**
+ * Create the instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public GraphEditPlugin() {
+ super
+ (new ResourceLocator [] {
+ CommonEditPlugin.INSTANCE,
+ });
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the singleton instance.
+ * @generated
+ */
+ public ResourceLocator getPluginResourceLocator() {
+ return plugin;
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the singleton instance.
+ * @generated
+ */
+ public static Implementation getPlugin() {
+ return plugin;
+ }
+
+ /**
+ * The actual implementation of the Eclipse <b>Plugin</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static class Implementation extends EclipseUIPlugin {
+ /**
+ * Creates an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Implementation() {
+ super();
+
+ // Remember the static instance.
+ //
+ plugin = this;
+ }
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/GraphItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/GraphItemProvider.java
new file mode 100644
index 000000000..a25bd4806
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/GraphItemProvider.java
@@ -0,0 +1,1047 @@
+package org.eclipse.stem.core.graph.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2006, 2008 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
+ *******************************************************************************/
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandWrapper;
+import org.eclipse.emf.common.command.UnexecutableCommand;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationWrapper;
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.command.AddCommand;
+import org.eclipse.emf.edit.command.CreateChildCommand;
+import org.eclipse.emf.edit.command.SetCommand;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.provider.CoreEditPlugin;
+import org.eclipse.stem.core.common.provider.IdentifiableItemProvider;
+import org.eclipse.stem.core.graph.Edge;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.graph.GraphFactory;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.Label;
+import org.eclipse.stem.core.graph.Node;
+import org.eclipse.stem.core.graph.NodeLabel;
+
+//import org.eclipse.stem.core.model.Model;
+//import org.eclipse.stem.core.model.ModelFactory;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.graph.Graph} object.
+ * <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ * @generated
+ */
+public class GraphItemProvider extends IdentifiableItemProvider implements
+ IEditingDomainItemProvider, IStructuredItemContentProvider,
+ ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+
+ /**
+ * This is a collection of the {@link TransientGraphItemProvider}'s that
+ * are playing the role of children to the graph while in fact they are
+ * "Non-Modeled Intermediary View Objects". They provide the correct method
+ * implementations to play the role of an ItemProvider. See pages 369-378 of
+ * the EMF book (1st Edition).
+ */
+ private List<GraphItemProvider.TransientGraphItemProvider> children;
+
+ /**
+ * This constructs an instance from a factory and a notifier. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public GraphItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addTimePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * @see org.eclipse.stem.common.provider.IdentifiableItemProvider#getParent(java.lang.Object)
+ */
+ @Override
+ public Object getParent(Object object) {
+ return super.getParent(object);
+ } // getParent
+
+ /**
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#getChildren(java.lang.Object)
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public Collection<?> getChildren(Object object) {
+ final Graph graph = (Graph) object;
+ children = new ArrayList<TransientGraphItemProvider>();
+ // This is where we add the "fake" children of a Graph. If you implement
+ // more then add them here.
+
+ // Any Edges in the Graph?
+ if (graph.getNumEdges() > 0) {
+ // Yes
+ children.add(new GraphItemProvider.EdgesItemProvider(
+ adapterFactory, graph));
+ } // if Edges
+
+ // Any Nodes in the Graph?
+ if (graph.getNumNodes() > 0) {
+ // Yes
+ children.add(new GraphItemProvider.NodesItemProvider(adapterFactory,
+ graph));
+ } // if Nodes
+
+ // Any NodeLabels in the Graph?
+ if (graph.getNumNodeLabels() > 0) {
+ // Yes
+ children.add(new GraphItemProvider.NodeLabelsItemProvider(adapterFactory,
+ graph));
+ } // if NodeLabels
+
+ // Any GraphLabels in the Graph?
+ if (graph.getNumGraphLabels() > 0) {
+ // Yes
+ children.add(new GraphItemProvider.GraphLabelsItemProvider(adapterFactory,
+ graph));
+ } // if GraphLabels
+
+ final Collection otherChildren = super.getChildren(object);
+ otherChildren.addAll(children);
+ return otherChildren;
+ } // getChildren
+
+ /**
+ * This adds a property descriptor for the Time feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addTimePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Graph_time_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Graph_time_feature", "_UI_Graph_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ GraphPackage.Literals.GRAPH__TIME,
+ false,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(GraphPackage.Literals.GRAPH__UNRESOLVED_IDENTIFIABLES);
+ childrenFeatures.add(GraphPackage.Literals.GRAPH__DECORATORS);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns Graph.gif. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage(
+ "full/customobj16/Graph"));
+ } // getImage
+
+ /**
+ * This returns the label text for the adapted class. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ return super.getText(object);
+ } // getText
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ * @generated
+ */
+// @Override
+ @Override
+ public String getTextGen(Object object) {
+ URI labelValue = ((Graph)object).getURI();
+ String label = labelValue == null ? null : labelValue.toString();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Graph_type") : //$NON-NLS-1$
+ getString("_UI_Graph_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to
+ * update any cached children and by creating a viewer notification, which
+ * it passes to {@link #fireNotifyChanged}. <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ *
+ * @generated NOT
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(Graph.class)) {
+ case GraphPackage.GRAPH__NUM_EDGES:
+ case GraphPackage.GRAPH__NUM_NODES:
+ case GraphPackage.GRAPH__NUM_GRAPH_LABELS:
+ case GraphPackage.GRAPH__NUM_NODE_LABELS:
+ case GraphPackage.GRAPH__NUM_DYNAMIC_LABELS:
+ fireNotifyChanged(new ViewerNotification(notification, notification
+ .getNotifier(), false, true));
+ return;
+ case GraphPackage.GRAPH__EDGES:
+ case GraphPackage.GRAPH__NODES:
+ case GraphPackage.GRAPH__GRAPH_LABELS:
+ case GraphPackage.GRAPH__UNRESOLVED_IDENTIFIABLES:
+ case GraphPackage.GRAPH__NODE_LABELS:
+ fireNotifyChanged(new ViewerNotification(notification, notification
+ .getNotifier(), true, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ * @generated
+ */
+ public void notifyChangedGen(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(Graph.class)) {
+ case GraphPackage.GRAPH__EDGES:
+ case GraphPackage.GRAPH__NODES:
+ case GraphPackage.GRAPH__GRAPH_LABELS:
+ case GraphPackage.GRAPH__NODE_LABELS:
+ case GraphPackage.GRAPH__NUM_EDGES:
+ case GraphPackage.GRAPH__NUM_NODES:
+ case GraphPackage.GRAPH__NUM_GRAPH_LABELS:
+ case GraphPackage.GRAPH__NUM_NODE_LABELS:
+ case GraphPackage.GRAPH__NUM_DYNAMIC_LABELS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case GraphPackage.GRAPH__UNRESOLVED_IDENTIFIABLES:
+ case GraphPackage.GRAPH__DECORATORS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return CoreEditPlugin.INSTANCE;
+ }
+
+ /**
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#dispose()
+ */
+ @Override
+ public void dispose() {
+ super.dispose();
+ if (children != null) {
+ for (Iterator<TransientGraphItemProvider> iter = children.iterator(); iter.hasNext();) {
+ ((IDisposable) iter.next()).dispose();
+ }
+ }
+ }
+
+ /**
+ * This class is extended by classes that are item providers for "Non-Model
+ * Intermediary View Objects". It follows the pattern described in the book
+ * "Eclipse Modeling Framework", pages 369-378.
+ *
+ * This is NOT a generated class.
+ */
+ public static abstract class TransientGraphItemProvider extends
+ ItemProviderAdapter implements IEditingDomainItemProvider,
+ IStructuredItemContentProvider, ITreeItemContentProvider,
+ IItemLabelProvider, IItemPropertySource {
+
+ /**
+ * @param adapterFactory
+ */
+ public TransientGraphItemProvider(AdapterFactory adapterFactory,
+ final Graph graph) {
+ super(adapterFactory);
+ graph.eAdapters().add(this);
+ } // TransientGraphItemProvider
+
+ /**
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#getChildrenFeatures(java.lang.Object)
+ */
+ @Override
+ protected Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(getMapReference());
+ }
+ return childrenFeatures;
+ } // getChildrenFeatures
+
+
+ /**
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#getFeatureValue(org.eclipse.emf.ecore.EObject,
+ * org.eclipse.emf.ecore.EStructuralFeature)
+ */
+ @Override
+ protected Object getFeatureValue(EObject object,
+ EStructuralFeature feature) {
+ if (object == null) {
+ // Yes
+ return ((Graph) target).eGet(feature);
+ } // if
+ else {
+ return super.getFeatureValue(object, feature);
+ }
+ } // getFeatureValue
+
+ /**
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#getParent(java.lang.Object)
+ */
+ @Override
+ public Object getParent(Object object) {
+ return target;
+ } // getParent
+
+ /**
+ * This assumes that all children are members of a map of {@link Identifiable}s
+ */
+ @Override
+ public Collection<Identifiable> getChildren(Object object) {
+ final Graph graph = (Graph) target;
+ final List<Identifiable> children = new ArrayList<Identifiable>();
+ children.addAll( (getIdentifiableMap(graph).values()));
+// SED commented out 7/23/2010. It takes a long time to sort when there's lots of labels
+// Collections.sort(children);
+ return children;
+ } // getChildren
+
+ /**
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#getText(java.lang.Object)
+ */
+ @Override
+ public String getText(Object object) {
+ final StringBuilder sb = new StringBuilder(getText());
+ sb.append(" (");
+ sb.append(Integer.toString(getIdentifiableMap((Graph) target)
+ .size()));
+ sb.append(")");
+ return sb.toString();
+ } // getText
+
+ /**
+ */
+ @Override
+ protected String getFeatureText(Object feature) {
+ return super.getFeatureText(target);
+ } // getFeatureText
+
+ /**
+ * This redirects the call to the "target" (i.e., the Graph), it then
+ * returns the child descriptors which would include the Transient Graph
+ * Item providers such as this one.
+ */
+ @Override
+ public Collection<?> getNewChildDescriptors(Object object,
+ EditingDomain editingDomain, Object sibling) {
+ return super.getNewChildDescriptors(target, editingDomain, sibling);
+ } // getNewChildDescriptors
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return GraphEditPlugin.INSTANCE;
+ }
+
+ /**
+ * @return the name of the Transient Graph Item Provider. (e.g.,
+ * "Edges")
+ */
+ abstract protected String getText();
+
+ /**
+ * @param graph
+ * the graph that will have a child added to it.
+ * @return the map of <code>Identifiable</code>s that associated with this
+ * item provider.
+ */
+ abstract protected EMap<URI,? extends Identifiable> getIdentifiableMap(Graph graph);
+
+ /**
+ * Create the appropriate map entry to add to the map.
+ *
+ * @param key
+ * the URI that uniquely identifies the
+ * <code>Identifiable</code>
+ * @param value
+ * the value of the map entry
+ * @return a MapEntry instance
+ */
+ abstract protected EObject getMapEntry(final URI key,
+ final Identifiable value);
+
+ /**
+ * @return the StructuralFeature that represents the "value" of the MapEntry
+ */
+ abstract protected EStructuralFeature getMapEntryValueEReference();
+
+ /**
+ * @return the meta-reference to the feature of the graph that is the
+ * map
+ */
+ abstract protected EReference getMapReference();
+
+ /**
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createRemoveCommand(org.eclipse.emf.edit.domain.EditingDomain,
+ * org.eclipse.emf.ecore.EObject,
+ * org.eclipse.emf.ecore.EStructuralFeature, java.util.Collection)
+ */
+ @Override
+ protected Command createRemoveCommand(EditingDomain domain,
+ EObject owner, EStructuralFeature feature, Collection<?> collection) {
+ return createWrappedCommand(super.createRemoveCommand(domain,
+ owner, feature, collection), owner);
+ } // createRemoveCommand
+
+ /**
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createAddCommand(org.eclipse.emf.edit.domain.EditingDomain,
+ * org.eclipse.emf.ecore.EObject,
+ * org.eclipse.emf.ecore.EStructuralFeature, java.util.Collection,
+ * int)
+ */
+ @Override
+ protected Command createAddCommand(EditingDomain domain, EObject owner,
+ EStructuralFeature feature, Collection<?> collection, int index) {
+ return createWrappedCommand(super.createAddCommand(domain, owner,
+ feature, collection, index), owner);
+ } // createAddCommand
+
+ /**
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createDragAndDropCommand(org.eclipse.emf.edit.domain.EditingDomain,
+ * java.lang.Object, float, int, int, java.util.Collection)
+ */
+ @Override
+ protected Command createDragAndDropCommand(EditingDomain domain,
+ Object owner, float location, int operations, int operation,
+ Collection<?> collection) {
+ Command retValue = null;
+ if (new AddCommand(domain, (EObject) target, getMapReference(),
+ collection).canExecute()) {
+ retValue = super.createDragAndDropCommand(domain, target,
+ location, operations, operation, collection);
+ } else {
+ retValue = UnexecutableCommand.INSTANCE;
+ }
+ return retValue;
+ } // createDragAndDropCommand
+
+ /**
+ * Create a CreateChildCommand. It will be used to determine if a child
+ * can be added. If "canExecute" is false, then the menu entry will be
+ * grayed out.
+ */
+ @Override
+ protected Command createCreateChildCommand(EditingDomain domain,
+ EObject owner, EStructuralFeature feature, Object value,
+ int index, Collection<?> collection) {
+
+ Command retValue = null;
+
+ // Is the child an Identifiable?
+ if (!(value instanceof Identifiable)) {
+ // No
+ retValue = super.createCreateChildCommand(domain, owner,
+ feature, value, index, collection);
+ } else {
+ // Yes
+ retValue = new CreateChildCommand(domain, owner, feature,
+ value, index, collection, this) {
+ @Override
+ protected Command createCommand() {
+
+ Command result = null;
+
+ Graph graph = (Graph) target;
+ Identifiable newChildIdentifiable = (Identifiable) child;
+ final URI uri = newChildIdentifiable.getURI();
+
+ // Does the Edge Map already contain an entry for the
+ // edge's URI?
+ Identifiable existingIdentifiable = getIdentifiableMap(
+ graph).get(uri);
+
+ if (existingIdentifiable == null) {
+ // No
+ // There isn't an existing entry. Need to create a
+ // map entry and initialize it.
+ final EObject mapEntry = getMapEntry(uri,
+ newChildIdentifiable);
+
+ // Now, we need to put the entry we just created
+ // into the map
+ result = new AddCommand(domain, graph,
+ getMapReference(), mapEntry);
+
+ } // if no existing entry
+ else {
+ // Yes
+ // Existing label with the same URI as the one to be
+ // added. Create the command that will set the value
+ // to the new label
+ final EObject mapEntry = existingIdentifiable
+ .eContainer();
+ result = new SetCommand(
+ domain,
+ mapEntry,
+ getMapEntryValueEReference(),
+ newChildIdentifiable);
+ } // else
+
+ return result;
+ } // createCommand
+
+
+ }; // CreateChildCommand
+
+ } // else
+ return retValue;
+
+ } // createCreateChildCommand
+
+ /**
+ *
+ * @param command
+ * the command to be wrapped
+ * @param owner
+ * the owner
+ * @return
+ */
+ protected Command createWrappedCommand(Command command,
+ final EObject owner) {
+ return new CommandWrapper(command) {
+ @Override
+ public Collection<?> getAffectedObjects() {
+ Collection<?> affected = super.getAffectedObjects();
+ if (affected.contains(owner)) {
+ affected = Collections
+ .singleton(TransientGraphItemProvider.this);
+ }
+ return affected;
+ } // getAffectedObjects
+ };
+ } // createWrappedCommand
+
+ } // TransientGraphItemProvider
+
+ /**
+ * This class represents a "Non-Model Intermediary View Object". It
+ * represents the "Edges" of the graph.
+ */
+ public static class EdgesItemProvider extends TransientGraphItemProvider {
+
+ /**
+ * @param adapterFactory
+ * @param graph
+ * the graph that the Edges belong to
+ */
+ public EdgesItemProvider(AdapterFactory adapterFactory, Graph graph) {
+ super(adapterFactory, graph);
+ } // EdgesItemProvider
+
+ /**
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#getImage(java.lang.Object)
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage(
+ "full/customobj16/Edge"));
+ }
+
+ /**
+ * @see org.eclipse.emf.common.notify.impl.AdapterImpl#notifyChanged(org.eclipse.emf.common.notify.Notification)
+ */
+ @Override
+ public void notifyChanged(Notification msg) {
+ switch (msg.getFeatureID(Graph.class)) {
+ case GraphPackage.GRAPH__EDGES:
+ fireNotifyChanged(new NotificationWrapper(this, msg));
+ return;
+ } // switch
+ } // notifyChanged
+
+ /**
+ * This determines the contents of the list of "children" that can be
+ * added to the Edges. We modify
+ * {@link GraphItemProvider#collectNewChildDescriptors(Collection, Object)}
+ * so that it doesn't return "Edges" as an option to be created under
+ * Graph. Of those children, this is where we create "Edges".
+ *
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#collectNewChildDescriptors(java.util.Collection,
+ * java.lang.Object)
+ */
+ @Override
+ protected void collectNewChildDescriptors(
+ Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ newChildDescriptors.add(createChildParameter(GraphPackage.eINSTANCE
+ .getGraph_Edges(), GraphFactory.eINSTANCE.createEdge()));
+ } // collectNewChildDescriptors
+
+ /**
+ * @see TransientGraphItemProvider#getText(java.lang.Object)
+ */
+ @Override
+ protected String getText() {
+ // TODO NLS "Edges"
+ return "Edges";
+ } // getText
+
+ /**
+ * @see org.eclipse.stem.graph.provider.TransientGraphItemProvider#getIdentifiableMap(org.eclipse.stem.graph.Graph)
+ */
+ @Override
+ protected EMap<URI,Edge> getIdentifiableMap(Graph graph) {
+ return graph.getEdges();
+ } // getIdentifiableMap
+
+ @Override
+ protected EObject getMapEntry(URI key, Identifiable value) {
+
+ // Use reflection since
+ // there is no generated API for map entries.
+ final EObject retValue = GraphFactory.eINSTANCE
+ .create(GraphPackage.Literals.URI_TO_EDGE_MAP_ENTRY);
+ retValue
+ .eSet(GraphPackage.Literals.URI_TO_EDGE_MAP_ENTRY__KEY, key);
+ retValue.eSet(GraphPackage.Literals.URI_TO_EDGE_MAP_ENTRY__VALUE,
+ value);
+ return retValue;
+
+ } // getMapEntry
+
+ @Override
+ protected EStructuralFeature getMapEntryValueEReference() {
+ return GraphPackage.eINSTANCE.getURIToEdgeMapEntry_Value();
+ } // getMapEntryValueEReference
+
+
+ /**
+ * @see org.eclipse.stem.graph.provider.TransientGraphItemProvider#getMapReference()
+ */
+ @Override
+ protected EReference getMapReference() {
+ return GraphPackage.Literals.GRAPH__EDGES;
+ } // getMapReference
+
+ } // EdgesItemProvider
+
+ /**
+ * This class represents a "Non-Model Intermediary View Object". It
+ * represents the "Nodes" of the graph.
+ */
+ protected static class NodesItemProvider extends TransientGraphItemProvider {
+
+ /**
+ * @param adapterFactory
+ * @param graph
+ */
+ public NodesItemProvider(AdapterFactory adapterFactory, Graph graph) {
+ super(adapterFactory, graph);
+ }
+
+ /**
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#getImage(java.lang.Object)
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage(
+ "full/customobj16/Node"));
+ }
+
+ /**
+ * @see org.eclipse.emf.common.notify.impl.AdapterImpl#notifyChanged(org.eclipse.emf.common.notify.Notification)
+ */
+ @Override
+ public void notifyChanged(Notification msg) {
+ switch (msg.getFeatureID(Graph.class)) {
+ case GraphPackage.GRAPH__NODES:
+ fireNotifyChanged(new NotificationWrapper(this, msg));
+ return;
+ } // switch
+ } // notifyChanged
+
+ /**
+ * This determines the contents of the list of "children" that can be
+ * added to the Nodes. We modify
+ * {@link GraphItemProvider#collectNewChildDescriptors(Collection, Object)}
+ * so that it doesn't return "Nodes" as an option to be created under
+ * Graph. Of those children, this is where we create "Nodes".
+ *
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#collectNewChildDescriptors(java.util.Collection,
+ * java.lang.Object)
+ */
+ @Override
+ protected void collectNewChildDescriptors(
+ Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ newChildDescriptors.add(createChildParameter(GraphPackage.eINSTANCE
+ .getGraph_Nodes(), GraphFactory.eINSTANCE.createNode()));
+ } // collectNewChildDescriptors
+
+ /**
+ * @see TransientGraphItemProvider#getText(java.lang.Object)
+ */
+ @Override
+ protected String getText() {
+ // TODO NLS "Nodes"
+ return "Nodes";
+ } // getText
+
+ /**
+ * @see org.eclipse.stem.graph.provider.GraphItemProvider.TransientGraphItemProvider#getIdentifiableMap(org.eclipse.stem.graph.Graph)
+ */
+ @Override
+ protected EMap<URI,Node> getIdentifiableMap(Graph graph) {
+ return graph.getNodes();
+ }
+
+ @Override
+ protected EObject getMapEntry(URI key, Identifiable value) {
+
+ // Use reflection since
+ // there is no generated API for map entries.
+ final EObject retValue = GraphFactory.eINSTANCE
+ .create(GraphPackage.Literals.URI_TO_NODE_MAP_ENTRY);
+ retValue
+ .eSet(GraphPackage.Literals.URI_TO_NODE_MAP_ENTRY__KEY, key);
+ retValue.eSet(GraphPackage.Literals.URI_TO_NODE_MAP_ENTRY__VALUE,
+ value);
+ return retValue;
+
+ } // getMapEntry
+
+ @Override
+ protected EStructuralFeature getMapEntryValueEReference() {
+ return GraphPackage.eINSTANCE.getURIToNodeMapEntry_Value();
+ } // getMapEntryValueEReference
+
+ /**
+ * @see org.eclipse.stem.graph.provider.GraphItemProvider.TransientGraphItemProvider#getMapReference()
+ */
+ @Override
+ protected EReference getMapReference() {
+ return GraphPackage.Literals.GRAPH__NODES;
+ }
+
+ } // NodesItemProvider
+
+ /**
+ * This class represents a "Non-Model Intermediary View Object". It
+ * represents the "Node Labels" of the graph.
+ */
+ protected static class NodeLabelsItemProvider extends
+ TransientGraphItemProvider {
+
+ /**
+ * @param adapterFactory
+ * @param graph
+ */
+ public NodeLabelsItemProvider(AdapterFactory adapterFactory, Graph graph) {
+ super(adapterFactory, graph);
+ }
+
+ /**
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#getImage(java.lang.Object)
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage(
+ "full/customobj16/StaticLabel"));
+ } // getImage
+
+ /**
+ * @see org.eclipse.emf.common.notify.impl.AdapterImpl#notifyChanged(org.eclipse.emf.common.notify.Notification)
+ */
+ @Override
+ public void notifyChanged(Notification msg) {
+ switch (msg.getFeatureID(Graph.class)) {
+ case GraphPackage.GRAPH__NODE_LABELS:
+ fireNotifyChanged(new NotificationWrapper(this, msg));
+ return;
+ } // switch
+ } // notifyChanged
+
+ /**
+ * This determines the contents of the list of "children" that can be
+ * added to the Node Labels. We modify
+ * {@link GraphItemProvider#collectNewChildDescriptors(Collection, Object)}
+ * so that it doesn't return "Node Labels" as an option to be created
+ * under Graph. Of those children, this is where we create "Node
+ * Labels".
+ *
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#collectNewChildDescriptors(java.util.Collection,
+ * java.lang.Object)
+ */
+ @Override
+ protected void collectNewChildDescriptors(
+ Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+// TODO fix GraphItenProvider.collectNewChildDescriptors
+// newChildDescriptors.add(createChildParameter(GraphPackage.eINSTANCE
+// .getGraph_NodeLabels(), GraphFactory.eINSTANCE
+// .createLabel()));
+ } // collectNewChildDescriptors
+
+ /**
+ * @see TransientGraphItemProvider#getText(java.lang.Object)
+ */
+ @Override
+ protected String getText() {
+ // TODO NLS "Node Labels"
+ return "Node Labels";
+ } // getText
+
+ /**
+ * @see org.eclipse.stem.graph.provider.GraphItemProvider.TransientGraphItemProvider#getIdentifiableMap(org.eclipse.stem.graph.Graph)
+ */
+ @Override
+ protected EMap<URI,NodeLabel> getIdentifiableMap(Graph graph) {
+ return graph.getNodeLabels();
+ }
+
+ @Override
+ protected EObject getMapEntry(URI key, Identifiable value) {
+
+ // Use reflection since
+ // there is no generated API for map entries.
+ final EObject retValue = GraphFactory.eINSTANCE
+ .create(GraphPackage.Literals.URI_TO_NODE_LABEL_MAP_ENTRY);
+ retValue
+ .eSet(GraphPackage.Literals.URI_TO_NODE_LABEL_MAP_ENTRY__KEY, key);
+ retValue.eSet(GraphPackage.Literals.URI_TO_NODE_LABEL_MAP_ENTRY__VALUE,
+ value);
+ return retValue;
+
+ } // getMapEntry
+
+ @Override
+ protected EStructuralFeature getMapEntryValueEReference() {
+ return GraphPackage.eINSTANCE.getURIToNodeLabelMapEntry_Value();
+ } // getMapEntryValueEReference
+
+ /**
+ * @see org.eclipse.stem.graph.provider.GraphItemProvider.TransientGraphItemProvider#getMapReference()
+ */
+ @Override
+ protected EReference getMapReference() {
+ return GraphPackage.Literals.GRAPH__NODE_LABELS;
+ }
+
+ } // NodeLabelsItemProvider
+
+ /**
+ * This class represents a "Non-Model Intermediary View Object". It
+ * represents the "Graph Labels" of the graph.
+ */
+ protected static class GraphLabelsItemProvider extends
+ TransientGraphItemProvider {
+
+ /**
+ * @param adapterFactory
+ * @param graph
+ */
+ public GraphLabelsItemProvider(AdapterFactory adapterFactory,
+ Graph graph) {
+ super(adapterFactory, graph);
+ }
+
+ /**
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#getImage(java.lang.Object)
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage(
+ "full/customobj16/StaticLabel"));
+ } // getImage
+
+ /**
+ * @see org.eclipse.emf.common.notify.impl.AdapterImpl#notifyChanged(org.eclipse.emf.common.notify.Notification)
+ */
+ @Override
+ public void notifyChanged(Notification msg) {
+ switch (msg.getFeatureID(Graph.class)) {
+ case GraphPackage.GRAPH__GRAPH_LABELS:
+ fireNotifyChanged(new NotificationWrapper(this, msg));
+ return;
+ } // switch
+ } // notifyChanged
+
+ /**
+ * This determines the contents of the list of "children" that can be
+ * added to the Graph Labels. We modify
+ * {@link GraphItemProvider#collectNewChildDescriptors(Collection, Object)}
+ * so that it doesn't return "Graph Labels" as an option to be created
+ * under Graph. Of those children, this is where we create "Graph
+ * Labels".
+ *
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#collectNewChildDescriptors(java.util.Collection,
+ * java.lang.Object)
+ */
+ @Override
+ protected void collectNewChildDescriptors(
+ Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+// TODO fix GraphLabelsItemProvider.collectNewChildDescriptors
+// newChildDescriptors.add(createChildParameter(GraphPackage.eINSTANCE
+// .getGraph_GraphLabels(), GraphFactory.eINSTANCE
+// .createLabel()));
+ } // collectNewChildDescriptors
+
+ /**
+ * @see TransientGraphItemProvider#getText(java.lang.Object)
+ */
+ @Override
+ protected String getText() {
+ // TODO NLS "GraphLabels"
+ return "Graph Labels";
+ } // getText
+
+ /**
+ * @see org.eclipse.stem.graph.provider.GraphItemProvider.TransientGraphItemProvider#getIdentifiableMap(org.eclipse.stem.graph.Graph)
+ */
+ @Override
+ protected EMap<URI,Label> getIdentifiableMap(Graph graph) {
+ return graph.getGraphLabels();
+ }
+
+ @Override
+ protected EObject getMapEntry(URI key, Identifiable value) {
+
+ // Use reflection since
+ // there is no generated API for map entries.
+ final EObject retValue = GraphFactory.eINSTANCE
+ .create(GraphPackage.Literals.URI_TO_LABEL_MAP_ENTRY);
+ retValue
+ .eSet(GraphPackage.Literals.URI_TO_LABEL_MAP_ENTRY__KEY, key);
+ retValue.eSet(GraphPackage.Literals.URI_TO_LABEL_MAP_ENTRY__VALUE,
+ value);
+ return retValue;
+
+ } // getMapEntry
+
+ @Override
+ protected EStructuralFeature getMapEntryValueEReference() {
+ return GraphPackage.eINSTANCE.getURIToLabelMapEntry_Value();
+ } // getMapEntryValueEReference
+
+ /**
+ * @see org.eclipse.stem.graph.provider.GraphItemProvider.TransientGraphItemProvider#getMapReference()
+ */
+ @Override
+ protected EReference getMapReference() {
+ return GraphPackage.Literals.GRAPH__GRAPH_LABELS;
+ }
+
+ } // GraphLabelsItemProvider
+
+} // GraphItemProvider
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/GraphItemProviderAdapterFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/GraphItemProviderAdapterFactory.java
new file mode 100644
index 000000000..0f5d3d7e0
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/GraphItemProviderAdapterFactory.java
@@ -0,0 +1,310 @@
+package org.eclipse.stem.core.graph.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.Disposable;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.graph.util.GraphAdapterFactory;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class GraphItemProviderAdapterFactory extends GraphAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+ /**
+ * This keeps track of the root adapter factory that delegates to this adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ComposedAdapterFactory parentAdapterFactory;
+
+ /**
+ * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+ /**
+ * This keeps track of all the item providers created, so that they can be {@link #dispose disposed}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Disposable disposable = new Disposable();
+
+ /**
+ * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+ /**
+ * This constructs an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public GraphItemProviderAdapterFactory() {
+ supportedTypes.add(IEditingDomainItemProvider.class);
+ supportedTypes.add(IStructuredItemContentProvider.class);
+ supportedTypes.add(ITreeItemContentProvider.class);
+ supportedTypes.add(IItemLabelProvider.class);
+ supportedTypes.add(IItemPropertySource.class);
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.graph.Edge} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EdgeItemProvider edgeItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.graph.Edge}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createEdgeAdapter() {
+ if (edgeItemProvider == null) {
+ edgeItemProvider = new EdgeItemProvider(this);
+ }
+
+ return edgeItemProvider;
+ }
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.graph.Graph}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createGraphAdapter() {
+ return new GraphItemProvider(this);
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.graph.Node} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected NodeItemProvider nodeItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.graph.Node}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createNodeAdapter() {
+ if (nodeItemProvider == null) {
+ nodeItemProvider = new NodeItemProvider(this);
+ }
+
+ return nodeItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.graph.SimpleGraphPartitioner} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SimpleGraphPartitionerItemProvider simpleGraphPartitionerItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.graph.SimpleGraphPartitioner}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createSimpleGraphPartitionerAdapter() {
+ if (simpleGraphPartitionerItemProvider == null) {
+ simpleGraphPartitionerItemProvider = new SimpleGraphPartitionerItemProvider(this);
+ }
+
+ return simpleGraphPartitionerItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.graph.Exchange} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ExchangeItemProvider exchangeItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.graph.Exchange}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createExchangeAdapter() {
+ if (exchangeItemProvider == null) {
+ exchangeItemProvider = new ExchangeItemProvider(this);
+ }
+
+ return exchangeItemProvider;
+ }
+
+ /**
+ * This returns the root adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ComposeableAdapterFactory getRootAdapterFactory() {
+ return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+ }
+
+ /**
+ * This sets the composed adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+ this.parentAdapterFactory = parentAdapterFactory;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object type) {
+ return supportedTypes.contains(type) || super.isFactoryForType(type);
+ }
+
+ /**
+ * This implementation substitutes the factory itself as the key for the adapter.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter adapt(Notifier notifier, Object type) {
+ return super.adapt(notifier, this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public Object adapt(Object object, Object type) {
+ if (isFactoryForType(type)) {
+ Object adapter = super.adapt(object, type);
+ if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+ return adapter;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Associates an adapter with a notifier via the base implementation, then records it to ensure it will be disposed.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void associate(Adapter adapter, Notifier target) {
+ super.associate(adapter, target);
+ if (adapter != null) {
+ disposable.add(adapter);
+ }
+ }
+
+ /**
+ * This adds a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void addListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.addListener(notifyChangedListener);
+ }
+
+ /**
+ * This removes a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void removeListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.removeListener(notifyChangedListener);
+ }
+
+ /**
+ * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void fireNotifyChanged(Notification notification) {
+ changeNotifier.fireNotifyChanged(notification);
+
+ if (parentAdapterFactory != null) {
+ parentAdapterFactory.fireNotifyChanged(notification);
+ }
+ }
+
+ /**
+ * This disposes all of the item providers created by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void dispose() {
+ disposable.dispose();
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/GraphPartitionerItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/GraphPartitionerItemProvider.java
new file mode 100644
index 000000000..bf443ce21
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/GraphPartitionerItemProvider.java
@@ -0,0 +1,151 @@
+package org.eclipse.stem.core.graph.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2011 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.common.provider.CoreEditPlugin;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.GraphPartitioner;
+
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.graph.GraphPartitioner} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class GraphPartitionerItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public GraphPartitionerItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addNumProcessesPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Num Processes feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addNumProcessesPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_GraphPartitioner_numProcesses_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_GraphPartitioner_numProcesses_feature", "_UI_GraphPartitioner_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ GraphPackage.Literals.GRAPH_PARTITIONER__NUM_PROCESSES,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ GraphPartitioner graphPartitioner = (GraphPartitioner)object;
+ return getString("_UI_GraphPartitioner_type") + " " + graphPartitioner.getNumProcesses(); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(GraphPartitioner.class)) {
+ case GraphPackage.GRAPH_PARTITIONER__NUM_PROCESSES:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return CoreEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/GraphTimeProviderAdapterFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/GraphTimeProviderAdapterFactory.java
new file mode 100644
index 000000000..e2e7eeb85
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/GraphTimeProviderAdapterFactory.java
@@ -0,0 +1,150 @@
+// GraphTimeProviderAdapterFactory.java
+package org.eclipse.stem.core.graph.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.stem.adapters.time.TimeProvider;
+import org.eclipse.stem.adapters.time.TimeProviderAdapter;
+import org.eclipse.stem.adapters.time.TimeProviderAdapterFactory;
+import org.eclipse.stem.core.graph.DynamicLabel;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.graph.LabelValue;
+import org.eclipse.stem.core.graph.util.GraphAdapterFactory;
+import org.eclipse.stem.core.model.STEMTime;
+
+/**
+ * This class is an {@link TimeProviderAdapterFactory}.
+ */
+public class GraphTimeProviderAdapterFactory extends GraphAdapterFactory
+ implements TimeProviderAdapterFactory {
+
+ /**
+ * This keeps track of the root adapter factory that delegates to this
+ * adapter factory.
+ */
+ protected ComposedAdapterFactory parentAdapterFactory;
+
+ /**
+ * This is used to implement {@link
+ * org.eclipse.emf.edit.provider.IChangeNotifier}.
+ */
+ protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+ /**
+ * Default Constructor
+ */
+ public GraphTimeProviderAdapterFactory() {
+ super();
+ TimeProviderAdapterFactory.INSTANCE.addAdapterFactory(this);
+ }
+
+ /**
+ * @see org.eclipse.stem.core.graph.util.GraphAdapterFactory#
+ * createGraphAdapter()
+ */
+ @Override
+ public Adapter createGraphAdapter() {
+ return new GraphTimeProvider();
+ }
+
+ /**
+ * @see
+ * org.eclipse.emf.edit.provider.IChangeNotifier#addListener(org.eclipse
+ * .emf.edit.provider.INotifyChangedListener)
+ */
+ public void addListener(final INotifyChangedListener notifyChangedListener) {
+ changeNotifier.addListener(notifyChangedListener);
+ }
+
+ /**
+ * @see
+ * org.eclipse.emf.edit.provider.IChangeNotifier#removeListener(org.eclipse
+ * .emf.edit.provider.INotifyChangedListener)
+ */
+ public void removeListener(
+ final INotifyChangedListener notifyChangedListener) {
+ changeNotifier.removeListener(notifyChangedListener);
+ }
+
+ /**
+ * @see org.eclipse.emf.edit.provider.IChangeNotifier#fireNotifyChanged(org.
+ * eclipse.emf.common.notify.Notification)
+ */
+ public void fireNotifyChanged(final Notification notification) {
+ changeNotifier.fireNotifyChanged(notification);
+ if (parentAdapterFactory != null) {
+ parentAdapterFactory.fireNotifyChanged(notification);
+ }
+ }
+
+ /**
+ * @see org.eclipse.emf.edit.provider.ComposeableAdapterFactory#
+ * getRootAdapterFactory()
+ */
+ public ComposeableAdapterFactory getRootAdapterFactory() {
+ return parentAdapterFactory == null ? this : parentAdapterFactory
+ .getRootAdapterFactory();
+ }
+
+ /**
+ * @see org.eclipse.emf.edit.provider.ComposeableAdapterFactory#
+ * setParentAdapterFactory
+ * (org.eclipse.emf.edit.provider.ComposedAdapterFactory)
+ */
+ public void setParentAdapterFactory(
+ final ComposedAdapterFactory parentAdapterFactory) {
+ this.parentAdapterFactory = parentAdapterFactory;
+ }
+
+ /**
+ * @see
+ * org.eclipse.stem.diseasemodels.standard.util.StandardAdapterFactory
+ * #isFactoryForType(java.lang.Object)
+ */
+ @Override
+ public boolean isFactoryForType(final Object type) {
+ return type == TimeProvider.class || super.isFactoryForType(type);
+ } // isFactoryForType
+
+ /**
+ * @see org.eclipse.emf.edit.provider.IDisposable#dispose()
+ */
+ public void dispose() {
+ // Nothing
+ }
+
+ /**
+ * This class is a {@link TimeProvider} for {@link Graph} instances. It
+ * provides a time value for the graph. The value is the time that the
+ * {@link LabelValue}s of {@link DynamicLabel} were last updated.
+ */
+ private static class GraphTimeProvider extends TimeProviderAdapter
+ implements TimeProvider {
+ /**
+ * @see org.eclipse.stem.adapters.time.TimeProviderAdapter#getTime()
+ */
+ @Override
+ public STEMTime getTime() {
+ Graph graph = (Graph)getTarget();
+ return graph.getTime();
+ }
+
+ } // GraphTimeProvider
+
+} // GraphTimeProviderAdapterFactory \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/IntegrationLabelItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/IntegrationLabelItemProvider.java
new file mode 100644
index 000000000..723266307
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/IntegrationLabelItemProvider.java
@@ -0,0 +1,231 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.core.graph.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.IntegrationLabel;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.graph.IntegrationLabel} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IntegrationLabelItemProvider
+ extends DynamicNodeLabelItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IntegrationLabelItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addDeltaValuePropertyDescriptor(object);
+ addTempValuePropertyDescriptor(object);
+ addProbeValuePropertyDescriptor(object);
+ addErrorScalePropertyDescriptor(object);
+ addIdentifierPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Delta Value feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addDeltaValuePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_IntegrationLabel_deltaValue_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_IntegrationLabel_deltaValue_feature", "_UI_IntegrationLabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ GraphPackage.Literals.INTEGRATION_LABEL__DELTA_VALUE,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Temp Value feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addTempValuePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_IntegrationLabel_tempValue_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_IntegrationLabel_tempValue_feature", "_UI_IntegrationLabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ GraphPackage.Literals.INTEGRATION_LABEL__TEMP_VALUE,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Probe Value feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addProbeValuePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_IntegrationLabel_probeValue_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_IntegrationLabel_probeValue_feature", "_UI_IntegrationLabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ GraphPackage.Literals.INTEGRATION_LABEL__PROBE_VALUE,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Error Scale feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addErrorScalePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_IntegrationLabel_errorScale_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_IntegrationLabel_errorScale_feature", "_UI_IntegrationLabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ GraphPackage.Literals.INTEGRATION_LABEL__ERROR_SCALE,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Identifier feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addIdentifierPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_IntegrationLabel_identifier_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_IntegrationLabel_identifier_feature", "_UI_IntegrationLabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ GraphPackage.Literals.INTEGRATION_LABEL__IDENTIFIER,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ URI labelValue = ((IntegrationLabel)object).getURI();
+ String label = labelValue == null ? null : labelValue.toString();
+ return label == null || label.length() == 0 ?
+ getString("_UI_IntegrationLabel_type") : //$NON-NLS-1$
+ getString("_UI_IntegrationLabel_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(IntegrationLabel.class)) {
+ case GraphPackage.INTEGRATION_LABEL__IDENTIFIER:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/IntegrationLabelValueItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/IntegrationLabelValueItemProvider.java
new file mode 100644
index 000000000..0ea757574
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/IntegrationLabelValueItemProvider.java
@@ -0,0 +1,147 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.core.graph.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.stem.core.graph.GraphPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.graph.IntegrationLabelValue} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IntegrationLabelValueItemProvider
+ extends LabelValueItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IntegrationLabelValueItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addArrivalsPropertyDescriptor(object);
+ addDeparturesPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Arrivals feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addArrivalsPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_IntegrationLabelValue_arrivals_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_IntegrationLabelValue_arrivals_feature", "_UI_IntegrationLabelValue_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ GraphPackage.Literals.INTEGRATION_LABEL_VALUE__ARRIVALS,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Departures feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addDeparturesPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_IntegrationLabelValue_departures_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_IntegrationLabelValue_departures_feature", "_UI_IntegrationLabelValue_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ GraphPackage.Literals.INTEGRATION_LABEL_VALUE__DEPARTURES,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_IntegrationLabelValue_type"); //$NON-NLS-1$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/LabelItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/LabelItemProvider.java
new file mode 100644
index 000000000..bc0a17f3e
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/LabelItemProvider.java
@@ -0,0 +1,201 @@
+package org.eclipse.stem.core.graph.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2006, 2008 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.common.provider.CoreEditPlugin;
+import org.eclipse.stem.core.common.provider.IdentifiableItemProvider;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.Label;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.graph.Label} object.
+ * <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ * @generated
+ */
+public class LabelItemProvider extends IdentifiableItemProvider implements
+ IEditingDomainItemProvider, IStructuredItemContentProvider,
+ ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public LabelItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addURIOfIdentifiableToBeLabeledPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the URI Of Identifiable To Be Labeled feature.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addURIOfIdentifiableToBeLabeledPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Label_uRIOfIdentifiableToBeLabeled_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Label_uRIOfIdentifiableToBeLabeled_feature", "_UI_Label_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ GraphPackage.Literals.LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(GraphPackage.Literals.LABEL__CURRENT_VALUE);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * @returns Label.gif. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage(
+ "full/customobj16/StaticLabel"));
+ } // getImage
+
+ /**
+ * This returns the label text for the adapted class. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public String getText(Object object) {
+ return super.getText(object);
+ } // getText
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ * @generated
+ */
+// @Override
+ public String getTextGen(Object object) {
+ URI labelValue = ((Label)object).getURI();
+ String label = labelValue == null ? null : labelValue.toString();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Label_type") : //$NON-NLS-1$
+ getString("_UI_Label_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(Label.class)) {
+ case GraphPackage.LABEL__URI_OF_IDENTIFIABLE_TO_BE_LABELED:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case GraphPackage.LABEL__CURRENT_VALUE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return CoreEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/LabelValueItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/LabelValueItemProvider.java
new file mode 100644
index 000000000..b7b7544c8
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/LabelValueItemProvider.java
@@ -0,0 +1,115 @@
+package org.eclipse.stem.core.graph.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.stem.core.common.provider.CoreEditPlugin;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.graph.LabelValue} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LabelValueItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LabelValueItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_LabelValue_type"); //$NON-NLS-1$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return CoreEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/NodeItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/NodeItemProvider.java
new file mode 100644
index 000000000..fadb3df59
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/NodeItemProvider.java
@@ -0,0 +1,189 @@
+package org.eclipse.stem.core.graph.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2006, 2008 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.common.provider.CoreEditPlugin;
+import org.eclipse.stem.core.common.provider.IdentifiableItemProvider;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.Node;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.graph.Node} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NodeItemProvider
+ extends IdentifiableItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NodeItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addEdgesPropertyDescriptor(object);
+ addLabelsPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Edges feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addEdgesPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Node_edges_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Node_edges_feature", "_UI_Node_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ GraphPackage.Literals.NODE__EDGES,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Labels feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addLabelsPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Node_labels_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Node_labels_feature", "_UI_Node_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ GraphPackage.Literals.NODE__LABELS,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This returns Node.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/customobj16/Node"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String getText(Object object) {
+ return super.getText(object);
+ } // getText
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+// @Override
+ public String getTextGen(Object object) {
+ URI labelValue = ((Node)object).getURI();
+ String label = labelValue == null ? null : labelValue.toString();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Node_type") : //$NON-NLS-1$
+ getString("_UI_Node_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return CoreEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/NodeLabelItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/NodeLabelItemProvider.java
new file mode 100644
index 000000000..c33844d42
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/NodeLabelItemProvider.java
@@ -0,0 +1,143 @@
+package org.eclipse.stem.core.graph.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.NodeLabel;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.graph.NodeLabel} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NodeLabelItemProvider
+ extends LabelItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NodeLabelItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addNodePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Node feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addNodePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_NodeLabel_node_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_NodeLabel_node_feature", "_UI_NodeLabel_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ GraphPackage.Literals.NODE_LABEL__NODE,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This returns NodeLabel.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/NodeLabel")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ URI labelValue = ((NodeLabel)object).getURI();
+ String label = labelValue == null ? null : labelValue.toString();
+ return label == null || label.length() == 0 ?
+ getString("_UI_NodeLabel_type") : //$NON-NLS-1$
+ getString("_UI_NodeLabel_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/SimpleGraphPartitionerItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/SimpleGraphPartitionerItemProvider.java
new file mode 100644
index 000000000..15b56d991
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/SimpleGraphPartitionerItemProvider.java
@@ -0,0 +1,113 @@
+package org.eclipse.stem.core.graph.provider;
+/*******************************************************************************
+ * Copyright (c) 2011 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.graph.SimpleGraphPartitioner;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.graph.SimpleGraphPartitioner} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SimpleGraphPartitionerItemProvider
+ extends GraphPartitionerItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SimpleGraphPartitionerItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns SimpleGraphPartitioner.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/SimpleGraphPartitioner")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ SimpleGraphPartitioner simpleGraphPartitioner = (SimpleGraphPartitioner)object;
+ return getString("_UI_SimpleGraphPartitioner_type") + " " + simpleGraphPartitioner.getNumProcesses(); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/StaticEdgeLabelItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/StaticEdgeLabelItemProvider.java
new file mode 100644
index 000000000..c23a09bc8
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/StaticEdgeLabelItemProvider.java
@@ -0,0 +1,121 @@
+package org.eclipse.stem.core.graph.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.graph.StaticEdgeLabel;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.graph.StaticEdgeLabel} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StaticEdgeLabelItemProvider
+ extends EdgeLabelItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StaticEdgeLabelItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptorsGen(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ URI labelValue = ((StaticEdgeLabel)object).getURI();
+ String label = labelValue == null ? null : labelValue.toString();
+ return label == null || label.length() == 0 ?
+ getString("_UI_StaticEdgeLabel_type") : //$NON-NLS-1$
+ getString("_UI_StaticEdgeLabel_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/StaticLabelItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/StaticLabelItemProvider.java
new file mode 100644
index 000000000..29f0f03e1
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/StaticLabelItemProvider.java
@@ -0,0 +1,128 @@
+package org.eclipse.stem.core.graph.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.LabelValue;
+import org.eclipse.stem.core.graph.StaticLabel;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.graph.StaticLabel} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StaticLabelItemProvider
+ extends LabelItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StaticLabelItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ public static void addCurrentValueProperties(Object object,
+ final List<IItemPropertyDescriptor> itemPropertyDescriptors) {
+ final StaticLabel snl = (StaticLabel) object;
+ final LabelValue lv = (LabelValue) snl
+ .eGet(GraphPackage.Literals.LABEL__CURRENT_VALUE);
+
+ final ComposedAdapterFactory itemProviderFactory = new ComposedAdapterFactory(
+ ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+ final IItemPropertySource propertySource = (IItemPropertySource) itemProviderFactory
+ .adapt(lv, IItemPropertySource.class);
+ if (propertySource != null) {
+ final List<IItemPropertyDescriptor> properties = propertySource
+ .getPropertyDescriptors(lv);
+ itemPropertyDescriptors.addAll(properties);
+ }
+ } // addCurrentValueProperties
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ URI labelValue = ((StaticLabel)object).getURI();
+ String label = labelValue == null ? null : labelValue.toString();
+ return label == null || label.length() == 0 ?
+ getString("_UI_StaticLabel_type") : //$NON-NLS-1$
+ getString("_UI_StaticLabel_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/StaticNodeLabelItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/StaticNodeLabelItemProvider.java
new file mode 100644
index 000000000..f76c781df
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/provider/StaticNodeLabelItemProvider.java
@@ -0,0 +1,122 @@
+package org.eclipse.stem.core.graph.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.graph.StaticNodeLabel;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.graph.StaticNodeLabel} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StaticNodeLabelItemProvider
+ extends NodeLabelItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StaticNodeLabelItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+ StaticLabelItemProvider.addCurrentValueProperties(object,itemPropertyDescriptors);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptorsGen(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ URI labelValue = ((StaticNodeLabel)object).getURI();
+ String label = labelValue == null ? null : labelValue.toString();
+ return label == null || label.length() == 0 ?
+ getString("_UI_StaticNodeLabel_type") : //$NON-NLS-1$
+ getString("_UI_StaticNodeLabel_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/util/GraphAdapterFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/util/GraphAdapterFactory.java
new file mode 100644
index 000000000..e0438ae1a
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/util/GraphAdapterFactory.java
@@ -0,0 +1,637 @@
+package org.eclipse.stem.core.graph.util;
+
+/*******************************************************************************
+ * Copyright (c) 2006, 2008 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
+ *******************************************************************************/
+
+import java.util.Map;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.SanityChecker;
+import org.eclipse.stem.core.graph.DynamicEdgeLabel;
+import org.eclipse.stem.core.graph.DynamicLabel;
+import org.eclipse.stem.core.graph.DynamicNodeLabel;
+import org.eclipse.stem.core.graph.Edge;
+import org.eclipse.stem.core.graph.EdgeLabel;
+import org.eclipse.stem.core.graph.Exchange;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.GraphPartitioner;
+import org.eclipse.stem.core.graph.IntegrationLabel;
+import org.eclipse.stem.core.graph.IntegrationLabelValue;
+import org.eclipse.stem.core.graph.Label;
+import org.eclipse.stem.core.graph.LabelValue;
+import org.eclipse.stem.core.graph.Node;
+import org.eclipse.stem.core.graph.NodeLabel;
+import org.eclipse.stem.core.graph.SimpleGraphPartitioner;
+import org.eclipse.stem.core.graph.StaticEdgeLabel;
+import org.eclipse.stem.core.graph.StaticLabel;
+import org.eclipse.stem.core.graph.StaticNodeLabel;
+import org.eclipse.stem.core.graph.UnresolvedIdentifiable;
+import org.eclipse.stem.core.modifier.Modifiable;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.GraphPackage
+ * @generated
+ */
+public class GraphAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static GraphPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public GraphAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = GraphPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected GraphSwitch<Adapter> modelSwitch =
+ new GraphSwitch<Adapter>() {
+ @Override
+ public Adapter caseDynamicLabel(DynamicLabel object) {
+ return createDynamicLabelAdapter();
+ }
+ @Override
+ public Adapter caseDynamicNodeLabel(DynamicNodeLabel object) {
+ return createDynamicNodeLabelAdapter();
+ }
+ @Override
+ public Adapter caseEdge(Edge object) {
+ return createEdgeAdapter();
+ }
+ @Override
+ public Adapter caseGraph(Graph object) {
+ return createGraphAdapter();
+ }
+ @Override
+ public Adapter caseLabel(Label object) {
+ return createLabelAdapter();
+ }
+ @Override
+ public Adapter caseLabelValue(LabelValue object) {
+ return createLabelValueAdapter();
+ }
+ @Override
+ public Adapter caseNode(Node object) {
+ return createNodeAdapter();
+ }
+ @Override
+ public Adapter caseNodeLabel(NodeLabel object) {
+ return createNodeLabelAdapter();
+ }
+ @Override
+ public Adapter caseStaticNodeLabel(StaticNodeLabel object) {
+ return createStaticNodeLabelAdapter();
+ }
+ @Override
+ public Adapter caseUnresolvedIdentifiable(UnresolvedIdentifiable object) {
+ return createUnresolvedIdentifiableAdapter();
+ }
+ @Override
+ public Adapter caseURIToIdentifiableMapEntry(Map.Entry<URI, Identifiable> object) {
+ return createURIToIdentifiableMapEntryAdapter();
+ }
+ @Override
+ public Adapter caseDynamicEdgeLabel(DynamicEdgeLabel object) {
+ return createDynamicEdgeLabelAdapter();
+ }
+ @Override
+ public Adapter caseEdgeLabel(EdgeLabel object) {
+ return createEdgeLabelAdapter();
+ }
+ @Override
+ public Adapter caseStaticEdgeLabel(StaticEdgeLabel object) {
+ return createStaticEdgeLabelAdapter();
+ }
+ @Override
+ public Adapter caseURIToEdgeMapEntry(Map.Entry<URI, Edge> object) {
+ return createURIToEdgeMapEntryAdapter();
+ }
+ @Override
+ public Adapter caseURIToNodeMapEntry(Map.Entry<URI, Node> object) {
+ return createURIToNodeMapEntryAdapter();
+ }
+ @Override
+ public Adapter caseURIToLabelMapEntry(Map.Entry<URI, Label> object) {
+ return createURIToLabelMapEntryAdapter();
+ }
+ @Override
+ public Adapter caseURIToNodeLabelMapEntry(Map.Entry<URI, NodeLabel> object) {
+ return createURIToNodeLabelMapEntryAdapter();
+ }
+ @Override
+ public Adapter caseStaticLabel(StaticLabel object) {
+ return createStaticLabelAdapter();
+ }
+ @Override
+ public Adapter caseGraphPartitioner(GraphPartitioner object) {
+ return createGraphPartitionerAdapter();
+ }
+ @Override
+ public Adapter caseSimpleGraphPartitioner(SimpleGraphPartitioner object) {
+ return createSimpleGraphPartitionerAdapter();
+ }
+ @Override
+ public Adapter caseExchange(Exchange object) {
+ return createExchangeAdapter();
+ }
+ @Override
+ public Adapter caseIntegrationLabel(IntegrationLabel object) {
+ return createIntegrationLabelAdapter();
+ }
+ @Override
+ public Adapter caseIntegrationLabelValue(IntegrationLabelValue object) {
+ return createIntegrationLabelValueAdapter();
+ }
+ @Override
+ public <T> Adapter caseComparable(Comparable<T> object) {
+ return createComparableAdapter();
+ }
+ @Override
+ public Adapter caseSanityChecker(SanityChecker object) {
+ return createSanityCheckerAdapter();
+ }
+ @Override
+ public Adapter caseIdentifiable(Identifiable object) {
+ return createIdentifiableAdapter();
+ }
+ @Override
+ public Adapter caseModifiable(Modifiable object) {
+ return createModifiableAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.graph.DynamicLabel <em>Dynamic Label</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.graph.DynamicLabel
+ * @generated
+ */
+ public Adapter createDynamicLabelAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.graph.Edge <em>Edge</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.graph.Edge
+ * @generated
+ */
+ public Adapter createEdgeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.graph.Graph <em>Graph</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.graph.Graph
+ * @generated
+ */
+ public Adapter createGraphAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.graph.Label <em>Label</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.graph.Label
+ * @generated
+ */
+ public Adapter createLabelAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.graph.LabelValue <em>Label Value</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.graph.LabelValue
+ * @generated
+ */
+ public Adapter createLabelValueAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.graph.Node <em>Node</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.graph.Node
+ * @generated
+ */
+ public Adapter createNodeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.graph.UnresolvedIdentifiable <em>Unresolved Identifiable</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.graph.UnresolvedIdentifiable
+ * @generated
+ */
+ public Adapter createUnresolvedIdentifiableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link java.util.Map.Entry <em>URI To Identifiable Map Entry</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see java.util.Map.Entry
+ * @generated
+ */
+ public Adapter createURIToIdentifiableMapEntryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.SanityChecker <em>Sanity Checker</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.common.SanityChecker
+ * @generated
+ */
+ public Adapter createSanityCheckerAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.graph.DynamicEdgeLabel <em>Dynamic Edge Label</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.graph.DynamicEdgeLabel
+ * @generated
+ */
+ public Adapter createDynamicEdgeLabelAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.graph.EdgeLabel <em>Edge Label</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.graph.EdgeLabel
+ * @generated
+ */
+ public Adapter createEdgeLabelAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.graph.StaticEdgeLabel <em>Static Edge Label</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.graph.StaticEdgeLabel
+ * @generated
+ */
+ public Adapter createStaticEdgeLabelAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link java.util.Map.Entry <em>URI To Edge Map Entry</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see java.util.Map.Entry
+ * @generated
+ */
+ public Adapter createURIToEdgeMapEntryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link java.util.Map.Entry <em>URI To Node Map Entry</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see java.util.Map.Entry
+ * @generated
+ */
+ public Adapter createURIToNodeMapEntryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link java.util.Map.Entry <em>URI To Label Map Entry</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see java.util.Map.Entry
+ * @generated
+ */
+ public Adapter createURIToLabelMapEntryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link java.util.Map.Entry <em>URI To Node Label Map Entry</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see java.util.Map.Entry
+ * @generated
+ */
+ public Adapter createURIToNodeLabelMapEntryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.graph.StaticLabel <em>Static Label</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.graph.StaticLabel
+ * @generated
+ */
+ public Adapter createStaticLabelAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.graph.GraphPartitioner <em>Partitioner</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.graph.GraphPartitioner
+ * @generated
+ */
+ public Adapter createGraphPartitionerAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.graph.SimpleGraphPartitioner <em>Simple Graph Partitioner</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.graph.SimpleGraphPartitioner
+ * @generated
+ */
+ public Adapter createSimpleGraphPartitionerAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.graph.Exchange <em>Exchange</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.graph.Exchange
+ * @generated
+ */
+ public Adapter createExchangeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.graph.IntegrationLabel <em>Integration Label</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.graph.IntegrationLabel
+ * @generated
+ */
+ public Adapter createIntegrationLabelAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.graph.IntegrationLabelValue <em>Integration Label Value</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.graph.IntegrationLabelValue
+ * @generated
+ */
+ public Adapter createIntegrationLabelValueAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link java.lang.Comparable <em>Comparable</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see java.lang.Comparable
+ * @generated
+ */
+ public Adapter createComparableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.graph.DynamicNodeLabel <em>Dynamic Node Label</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.graph.DynamicNodeLabel
+ * @generated
+ */
+ public Adapter createDynamicNodeLabelAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.graph.StaticNodeLabel <em>Static Node Label</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.graph.StaticNodeLabel
+ * @generated
+ */
+ public Adapter createStaticNodeLabelAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.graph.NodeLabel <em>Node Label</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.graph.NodeLabel
+ * @generated
+ */
+ public Adapter createNodeLabelAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.Identifiable <em>Identifiable</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.common.Identifiable
+ * @generated
+ */
+ public Adapter createIdentifiableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.modifier.Modifiable <em>Modifiable</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.modifier.Modifiable
+ * @generated
+ */
+ public Adapter createModifiableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} //GraphAdapterFactory
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/util/GraphSwitch.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/util/GraphSwitch.java
new file mode 100644
index 000000000..51cb45387
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/graph/util/GraphSwitch.java
@@ -0,0 +1,769 @@
+package org.eclipse.stem.core.graph.util;
+
+/*******************************************************************************
+ * Copyright (c) 2006, 2008 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
+ *******************************************************************************/
+
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.SanityChecker;
+import org.eclipse.stem.core.graph.DynamicEdgeLabel;
+import org.eclipse.stem.core.graph.DynamicLabel;
+import org.eclipse.stem.core.graph.DynamicNodeLabel;
+import org.eclipse.stem.core.graph.Edge;
+import org.eclipse.stem.core.graph.EdgeLabel;
+import org.eclipse.stem.core.graph.Exchange;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.GraphPartitioner;
+import org.eclipse.stem.core.graph.IntegrationLabel;
+import org.eclipse.stem.core.graph.IntegrationLabelValue;
+import org.eclipse.stem.core.graph.Label;
+import org.eclipse.stem.core.graph.LabelValue;
+import org.eclipse.stem.core.graph.Node;
+import org.eclipse.stem.core.graph.NodeLabel;
+import org.eclipse.stem.core.graph.SimpleGraphPartitioner;
+import org.eclipse.stem.core.graph.StaticEdgeLabel;
+import org.eclipse.stem.core.graph.StaticLabel;
+import org.eclipse.stem.core.graph.StaticNodeLabel;
+import org.eclipse.stem.core.graph.UnresolvedIdentifiable;
+import org.eclipse.stem.core.modifier.Modifiable;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.graph.GraphPackage
+ * @generated
+ */
+public class GraphSwitch<T1> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static GraphPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public GraphSwitch() {
+ if (modelPackage == null) {
+ modelPackage = GraphPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ public T1 doSwitch(EObject theEObject) {
+ return doSwitch(theEObject.eClass(), theEObject);
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T1 doSwitch(EClass theEClass, EObject theEObject) {
+ if (theEClass.eContainer() == modelPackage) {
+ return doSwitch(theEClass.getClassifierID(), theEObject);
+ }
+ else {
+ List<EClass> eSuperTypes = theEClass.getESuperTypes();
+ return
+ eSuperTypes.isEmpty() ?
+ defaultCase(theEObject) :
+ doSwitch(eSuperTypes.get(0), theEObject);
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T1 doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case GraphPackage.DYNAMIC_LABEL: {
+ DynamicLabel dynamicLabel = (DynamicLabel)theEObject;
+ T1 result = caseDynamicLabel(dynamicLabel);
+ if (result == null) result = caseLabel(dynamicLabel);
+ if (result == null) result = caseIdentifiable(dynamicLabel);
+ if (result == null) result = caseComparable(dynamicLabel);
+ if (result == null) result = caseSanityChecker(dynamicLabel);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case GraphPackage.DYNAMIC_NODE_LABEL: {
+ DynamicNodeLabel dynamicNodeLabel = (DynamicNodeLabel)theEObject;
+ T1 result = caseDynamicNodeLabel(dynamicNodeLabel);
+ if (result == null) result = caseDynamicLabel(dynamicNodeLabel);
+ if (result == null) result = caseNodeLabel(dynamicNodeLabel);
+ if (result == null) result = caseLabel(dynamicNodeLabel);
+ if (result == null) result = caseIdentifiable(dynamicNodeLabel);
+ if (result == null) result = caseComparable(dynamicNodeLabel);
+ if (result == null) result = caseSanityChecker(dynamicNodeLabel);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case GraphPackage.EDGE: {
+ Edge edge = (Edge)theEObject;
+ T1 result = caseEdge(edge);
+ if (result == null) result = caseIdentifiable(edge);
+ if (result == null) result = caseModifiable(edge);
+ if (result == null) result = caseComparable(edge);
+ if (result == null) result = caseSanityChecker(edge);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case GraphPackage.GRAPH: {
+ Graph graph = (Graph)theEObject;
+ T1 result = caseGraph(graph);
+ if (result == null) result = caseIdentifiable(graph);
+ if (result == null) result = caseComparable(graph);
+ if (result == null) result = caseSanityChecker(graph);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case GraphPackage.LABEL: {
+ Label label = (Label)theEObject;
+ T1 result = caseLabel(label);
+ if (result == null) result = caseIdentifiable(label);
+ if (result == null) result = caseComparable(label);
+ if (result == null) result = caseSanityChecker(label);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case GraphPackage.LABEL_VALUE: {
+ LabelValue labelValue = (LabelValue)theEObject;
+ T1 result = caseLabelValue(labelValue);
+ if (result == null) result = caseSanityChecker(labelValue);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case GraphPackage.NODE: {
+ Node node = (Node)theEObject;
+ T1 result = caseNode(node);
+ if (result == null) result = caseIdentifiable(node);
+ if (result == null) result = caseComparable(node);
+ if (result == null) result = caseSanityChecker(node);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case GraphPackage.NODE_LABEL: {
+ NodeLabel nodeLabel = (NodeLabel)theEObject;
+ T1 result = caseNodeLabel(nodeLabel);
+ if (result == null) result = caseLabel(nodeLabel);
+ if (result == null) result = caseIdentifiable(nodeLabel);
+ if (result == null) result = caseComparable(nodeLabel);
+ if (result == null) result = caseSanityChecker(nodeLabel);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case GraphPackage.STATIC_NODE_LABEL: {
+ StaticNodeLabel staticNodeLabel = (StaticNodeLabel)theEObject;
+ T1 result = caseStaticNodeLabel(staticNodeLabel);
+ if (result == null) result = caseNodeLabel(staticNodeLabel);
+ if (result == null) result = caseStaticLabel(staticNodeLabel);
+ if (result == null) result = caseLabel(staticNodeLabel);
+ if (result == null) result = caseModifiable(staticNodeLabel);
+ if (result == null) result = caseIdentifiable(staticNodeLabel);
+ if (result == null) result = caseComparable(staticNodeLabel);
+ if (result == null) result = caseSanityChecker(staticNodeLabel);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case GraphPackage.UNRESOLVED_IDENTIFIABLE: {
+ UnresolvedIdentifiable unresolvedIdentifiable = (UnresolvedIdentifiable)theEObject;
+ T1 result = caseUnresolvedIdentifiable(unresolvedIdentifiable);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case GraphPackage.URI_TO_IDENTIFIABLE_MAP_ENTRY: {
+ @SuppressWarnings("unchecked") Map.Entry<URI, Identifiable> uriToIdentifiableMapEntry = (Map.Entry<URI, Identifiable>)theEObject;
+ T1 result = caseURIToIdentifiableMapEntry(uriToIdentifiableMapEntry);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case GraphPackage.DYNAMIC_EDGE_LABEL: {
+ DynamicEdgeLabel dynamicEdgeLabel = (DynamicEdgeLabel)theEObject;
+ T1 result = caseDynamicEdgeLabel(dynamicEdgeLabel);
+ if (result == null) result = caseDynamicLabel(dynamicEdgeLabel);
+ if (result == null) result = caseEdgeLabel(dynamicEdgeLabel);
+ if (result == null) result = caseLabel(dynamicEdgeLabel);
+ if (result == null) result = caseIdentifiable(dynamicEdgeLabel);
+ if (result == null) result = caseComparable(dynamicEdgeLabel);
+ if (result == null) result = caseSanityChecker(dynamicEdgeLabel);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case GraphPackage.EDGE_LABEL: {
+ EdgeLabel edgeLabel = (EdgeLabel)theEObject;
+ T1 result = caseEdgeLabel(edgeLabel);
+ if (result == null) result = caseLabel(edgeLabel);
+ if (result == null) result = caseIdentifiable(edgeLabel);
+ if (result == null) result = caseComparable(edgeLabel);
+ if (result == null) result = caseSanityChecker(edgeLabel);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case GraphPackage.STATIC_EDGE_LABEL: {
+ StaticEdgeLabel staticEdgeLabel = (StaticEdgeLabel)theEObject;
+ T1 result = caseStaticEdgeLabel(staticEdgeLabel);
+ if (result == null) result = caseEdgeLabel(staticEdgeLabel);
+ if (result == null) result = caseStaticLabel(staticEdgeLabel);
+ if (result == null) result = caseLabel(staticEdgeLabel);
+ if (result == null) result = caseModifiable(staticEdgeLabel);
+ if (result == null) result = caseIdentifiable(staticEdgeLabel);
+ if (result == null) result = caseComparable(staticEdgeLabel);
+ if (result == null) result = caseSanityChecker(staticEdgeLabel);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case GraphPackage.URI_TO_EDGE_MAP_ENTRY: {
+ @SuppressWarnings("unchecked") Map.Entry<URI, Edge> uriToEdgeMapEntry = (Map.Entry<URI, Edge>)theEObject;
+ T1 result = caseURIToEdgeMapEntry(uriToEdgeMapEntry);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case GraphPackage.URI_TO_NODE_MAP_ENTRY: {
+ @SuppressWarnings("unchecked") Map.Entry<URI, Node> uriToNodeMapEntry = (Map.Entry<URI, Node>)theEObject;
+ T1 result = caseURIToNodeMapEntry(uriToNodeMapEntry);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case GraphPackage.URI_TO_LABEL_MAP_ENTRY: {
+ @SuppressWarnings("unchecked") Map.Entry<URI, Label> uriToLabelMapEntry = (Map.Entry<URI, Label>)theEObject;
+ T1 result = caseURIToLabelMapEntry(uriToLabelMapEntry);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case GraphPackage.URI_TO_NODE_LABEL_MAP_ENTRY: {
+ @SuppressWarnings("unchecked") Map.Entry<URI, NodeLabel> uriToNodeLabelMapEntry = (Map.Entry<URI, NodeLabel>)theEObject;
+ T1 result = caseURIToNodeLabelMapEntry(uriToNodeLabelMapEntry);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case GraphPackage.STATIC_LABEL: {
+ StaticLabel staticLabel = (StaticLabel)theEObject;
+ T1 result = caseStaticLabel(staticLabel);
+ if (result == null) result = caseLabel(staticLabel);
+ if (result == null) result = caseModifiable(staticLabel);
+ if (result == null) result = caseIdentifiable(staticLabel);
+ if (result == null) result = caseComparable(staticLabel);
+ if (result == null) result = caseSanityChecker(staticLabel);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case GraphPackage.GRAPH_PARTITIONER: {
+ GraphPartitioner graphPartitioner = (GraphPartitioner)theEObject;
+ T1 result = caseGraphPartitioner(graphPartitioner);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case GraphPackage.SIMPLE_GRAPH_PARTITIONER: {
+ SimpleGraphPartitioner simpleGraphPartitioner = (SimpleGraphPartitioner)theEObject;
+ T1 result = caseSimpleGraphPartitioner(simpleGraphPartitioner);
+ if (result == null) result = caseGraphPartitioner(simpleGraphPartitioner);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case GraphPackage.EXCHANGE: {
+ Exchange exchange = (Exchange)theEObject;
+ T1 result = caseExchange(exchange);
+ if (result == null) result = caseComparable(exchange);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case GraphPackage.INTEGRATION_LABEL: {
+ IntegrationLabel integrationLabel = (IntegrationLabel)theEObject;
+ T1 result = caseIntegrationLabel(integrationLabel);
+ if (result == null) result = caseDynamicNodeLabel(integrationLabel);
+ if (result == null) result = caseDynamicLabel(integrationLabel);
+ if (result == null) result = caseNodeLabel(integrationLabel);
+ if (result == null) result = caseLabel(integrationLabel);
+ if (result == null) result = caseIdentifiable(integrationLabel);
+ if (result == null) result = caseComparable(integrationLabel);
+ if (result == null) result = caseSanityChecker(integrationLabel);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case GraphPackage.INTEGRATION_LABEL_VALUE: {
+ IntegrationLabelValue integrationLabelValue = (IntegrationLabelValue)theEObject;
+ T1 result = caseIntegrationLabelValue(integrationLabelValue);
+ if (result == null) result = caseLabelValue(integrationLabelValue);
+ if (result == null) result = caseSanityChecker(integrationLabelValue);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Dynamic Label</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Dynamic Label</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseDynamicLabel(DynamicLabel object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Edge</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Edge</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseEdge(Edge object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Graph</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Graph</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseGraph(Graph object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Label</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Label</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseLabel(Label object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Label Value</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Label Value</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseLabelValue(LabelValue object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Node</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Node</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseNode(Node object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Unresolved Identifiable</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Unresolved Identifiable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseUnresolvedIdentifiable(UnresolvedIdentifiable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>URI To Identifiable Map Entry</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>URI To Identifiable Map Entry</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseURIToIdentifiableMapEntry(Map.Entry<URI, Identifiable> object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Sanity Checker</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Sanity Checker</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseSanityChecker(SanityChecker object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Dynamic Edge Label</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Dynamic Edge Label</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseDynamicEdgeLabel(DynamicEdgeLabel object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Edge Label</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Edge Label</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseEdgeLabel(EdgeLabel object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Static Edge Label</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Static Edge Label</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseStaticEdgeLabel(StaticEdgeLabel object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>URI To Edge Map Entry</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>URI To Edge Map Entry</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseURIToEdgeMapEntry(Map.Entry<URI, Edge> object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>URI To Node Map Entry</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>URI To Node Map Entry</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseURIToNodeMapEntry(Map.Entry<URI, Node> object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>URI To Label Map Entry</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>URI To Label Map Entry</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseURIToLabelMapEntry(Map.Entry<URI, Label> object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>URI To Node Label Map Entry</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>URI To Node Label Map Entry</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseURIToNodeLabelMapEntry(Map.Entry<URI, NodeLabel> object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Static Label</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Static Label</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseStaticLabel(StaticLabel object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Partitioner</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Partitioner</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseGraphPartitioner(GraphPartitioner object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Simple Graph Partitioner</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Simple Graph Partitioner</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseSimpleGraphPartitioner(SimpleGraphPartitioner object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Exchange</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Exchange</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseExchange(Exchange object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Integration Label</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Integration Label</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseIntegrationLabel(IntegrationLabel object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Integration Label Value</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Integration Label Value</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseIntegrationLabelValue(IntegrationLabelValue object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Comparable</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Comparable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public <T> T1 caseComparable(Comparable<T> object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Dynamic Node Label</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Dynamic Node Label</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseDynamicNodeLabel(DynamicNodeLabel object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Static Node Label</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Static Node Label</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseStaticNodeLabel(StaticNodeLabel object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Node Label</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Node Label</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseNodeLabel(NodeLabel object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Identifiable</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Identifiable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseIdentifiable(Identifiable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Modifiable</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Modifiable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseModifiable(Modifiable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ public T1 defaultCase(EObject object) {
+ return null;
+ }
+
+} //GraphSwitch
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/Logger.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/Logger.java
new file mode 100644
index 000000000..9c06ea99e
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/Logger.java
@@ -0,0 +1,22 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.core.logger;
+
+import org.eclipse.stem.core.common.Identifiable;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Logger</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.stem.core.logger.LoggerPackage#getLogger()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Logger extends Identifiable {
+} // Logger
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/LoggerFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/LoggerFactory.java
new file mode 100644
index 000000000..9f90692aa
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/LoggerFactory.java
@@ -0,0 +1,37 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.core.logger;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.logger.LoggerPackage
+ * @generated
+ */
+public interface LoggerFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ LoggerFactory eINSTANCE = org.eclipse.stem.core.logger.impl.LoggerFactoryImpl.init();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ LoggerPackage getLoggerPackage();
+
+} //LoggerFactory
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/LoggerPackage.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/LoggerPackage.java
new file mode 100644
index 000000000..23614c79a
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/LoggerPackage.java
@@ -0,0 +1,152 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.core.logger;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.stem.core.common.CommonPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.logger.LoggerFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface LoggerPackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "logger"; //$NON-NLS-1$
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http://org/eclipse/stem/core/logger"; //$NON-NLS-1$
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "org.eclipse.stem.core.logger"; //$NON-NLS-1$
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ LoggerPackage eINSTANCE = org.eclipse.stem.core.logger.impl.LoggerPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.logger.impl.LoggerImpl <em>Logger</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.logger.impl.LoggerImpl
+ * @see org.eclipse.stem.core.logger.impl.LoggerPackageImpl#getLogger()
+ * @generated
+ */
+ int LOGGER = 0;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LOGGER__URI = CommonPackage.IDENTIFIABLE__URI;
+
+ /**
+ * The feature id for the '<em><b>Type URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LOGGER__TYPE_URI = CommonPackage.IDENTIFIABLE__TYPE_URI;
+
+ /**
+ * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LOGGER__DUBLIN_CORE = CommonPackage.IDENTIFIABLE__DUBLIN_CORE;
+
+ /**
+ * The number of structural features of the '<em>Logger</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LOGGER_FEATURE_COUNT = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 0;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.logger.Logger <em>Logger</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Logger</em>'.
+ * @see org.eclipse.stem.core.logger.Logger
+ * @generated
+ */
+ EClass getLogger();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ LoggerFactory getLoggerFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.logger.impl.LoggerImpl <em>Logger</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.logger.impl.LoggerImpl
+ * @see org.eclipse.stem.core.logger.impl.LoggerPackageImpl#getLogger()
+ * @generated
+ */
+ EClass LOGGER = eINSTANCE.getLogger();
+
+ }
+
+} //LoggerPackage
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/impl/LoggerFactoryImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/impl/LoggerFactoryImpl.java
new file mode 100644
index 000000000..e2e30673f
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/impl/LoggerFactoryImpl.java
@@ -0,0 +1,86 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.core.logger.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.stem.core.logger.LoggerFactory;
+import org.eclipse.stem.core.logger.LoggerPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LoggerFactoryImpl extends EFactoryImpl implements LoggerFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static LoggerFactory init() {
+ try {
+ LoggerFactory theLoggerFactory = (LoggerFactory)EPackage.Registry.INSTANCE.getEFactory("http://org/eclipse/stem/core/logger"); //$NON-NLS-1$
+ if (theLoggerFactory != null) {
+ return theLoggerFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new LoggerFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LoggerFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LoggerPackage getLoggerPackage() {
+ return (LoggerPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static LoggerPackage getPackage() {
+ return LoggerPackage.eINSTANCE;
+ }
+
+} //LoggerFactoryImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/impl/LoggerImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/impl/LoggerImpl.java
new file mode 100644
index 000000000..4d44e7cae
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/impl/LoggerImpl.java
@@ -0,0 +1,43 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.core.logger.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.common.impl.IdentifiableImpl;
+import org.eclipse.stem.core.logger.Logger;
+import org.eclipse.stem.core.logger.LoggerPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Logger</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class LoggerImpl extends IdentifiableImpl implements Logger {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LoggerImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return LoggerPackage.Literals.LOGGER;
+ }
+
+} //LoggerImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/impl/LoggerPackageImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/impl/LoggerPackageImpl.java
new file mode 100644
index 000000000..2ba3298a0
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/impl/LoggerPackageImpl.java
@@ -0,0 +1,227 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.core.logger.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.stem.core.common.CommonPackage;
+import org.eclipse.stem.core.common.impl.CommonPackageImpl;
+import org.eclipse.stem.core.experiment.ExperimentPackage;
+import org.eclipse.stem.core.experiment.impl.ExperimentPackageImpl;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.impl.GraphPackageImpl;
+import org.eclipse.stem.core.logger.Logger;
+import org.eclipse.stem.core.logger.LoggerFactory;
+import org.eclipse.stem.core.logger.LoggerPackage;
+import org.eclipse.stem.core.model.ModelPackage;
+import org.eclipse.stem.core.model.impl.ModelPackageImpl;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+import org.eclipse.stem.core.modifier.impl.ModifierPackageImpl;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+import org.eclipse.stem.core.predicate.impl.PredicatePackageImpl;
+import org.eclipse.stem.core.scenario.ScenarioPackage;
+import org.eclipse.stem.core.scenario.impl.ScenarioPackageImpl;
+import org.eclipse.stem.core.sequencer.SequencerPackage;
+import org.eclipse.stem.core.sequencer.impl.SequencerPackageImpl;
+import org.eclipse.stem.core.solver.SolverPackage;
+import org.eclipse.stem.core.solver.impl.SolverPackageImpl;
+import org.eclipse.stem.core.trigger.TriggerPackage;
+import org.eclipse.stem.core.trigger.impl.TriggerPackageImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LoggerPackageImpl extends EPackageImpl implements LoggerPackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass loggerEClass = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.eclipse.stem.core.logger.LoggerPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private LoggerPackageImpl() {
+ super(eNS_URI, LoggerFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link LoggerPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static LoggerPackage init() {
+ if (isInited) return (LoggerPackage)EPackage.Registry.INSTANCE.getEPackage(LoggerPackage.eNS_URI);
+
+ // Obtain or create and register package
+ LoggerPackageImpl theLoggerPackage = (LoggerPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof LoggerPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new LoggerPackageImpl());
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ EcorePackage.eINSTANCE.eClass();
+
+ // Obtain or create and register interdependencies
+ CommonPackageImpl theCommonPackage = (CommonPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(CommonPackage.eNS_URI) instanceof CommonPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(CommonPackage.eNS_URI) : CommonPackage.eINSTANCE);
+ ExperimentPackageImpl theExperimentPackage = (ExperimentPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ExperimentPackage.eNS_URI) instanceof ExperimentPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ExperimentPackage.eNS_URI) : ExperimentPackage.eINSTANCE);
+ GraphPackageImpl theGraphPackage = (GraphPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(GraphPackage.eNS_URI) instanceof GraphPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(GraphPackage.eNS_URI) : GraphPackage.eINSTANCE);
+ ModelPackageImpl theModelPackage = (ModelPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ModelPackage.eNS_URI) instanceof ModelPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ModelPackage.eNS_URI) : ModelPackage.eINSTANCE);
+ ModifierPackageImpl theModifierPackage = (ModifierPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ModifierPackage.eNS_URI) instanceof ModifierPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ModifierPackage.eNS_URI) : ModifierPackage.eINSTANCE);
+ PredicatePackageImpl thePredicatePackage = (PredicatePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(PredicatePackage.eNS_URI) instanceof PredicatePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(PredicatePackage.eNS_URI) : PredicatePackage.eINSTANCE);
+ ScenarioPackageImpl theScenarioPackage = (ScenarioPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ScenarioPackage.eNS_URI) instanceof ScenarioPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ScenarioPackage.eNS_URI) : ScenarioPackage.eINSTANCE);
+ SequencerPackageImpl theSequencerPackage = (SequencerPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SequencerPackage.eNS_URI) instanceof SequencerPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SequencerPackage.eNS_URI) : SequencerPackage.eINSTANCE);
+ TriggerPackageImpl theTriggerPackage = (TriggerPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(TriggerPackage.eNS_URI) instanceof TriggerPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(TriggerPackage.eNS_URI) : TriggerPackage.eINSTANCE);
+ SolverPackageImpl theSolverPackage = (SolverPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SolverPackage.eNS_URI) instanceof SolverPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SolverPackage.eNS_URI) : SolverPackage.eINSTANCE);
+
+ // Create package meta-data objects
+ theLoggerPackage.createPackageContents();
+ theCommonPackage.createPackageContents();
+ theExperimentPackage.createPackageContents();
+ theGraphPackage.createPackageContents();
+ theModelPackage.createPackageContents();
+ theModifierPackage.createPackageContents();
+ thePredicatePackage.createPackageContents();
+ theScenarioPackage.createPackageContents();
+ theSequencerPackage.createPackageContents();
+ theTriggerPackage.createPackageContents();
+ theSolverPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theLoggerPackage.initializePackageContents();
+ theCommonPackage.initializePackageContents();
+ theExperimentPackage.initializePackageContents();
+ theGraphPackage.initializePackageContents();
+ theModelPackage.initializePackageContents();
+ theModifierPackage.initializePackageContents();
+ thePredicatePackage.initializePackageContents();
+ theScenarioPackage.initializePackageContents();
+ theSequencerPackage.initializePackageContents();
+ theTriggerPackage.initializePackageContents();
+ theSolverPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theLoggerPackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(LoggerPackage.eNS_URI, theLoggerPackage);
+ return theLoggerPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getLogger() {
+ return loggerEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LoggerFactory getLoggerFactory() {
+ return (LoggerFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ loggerEClass = createEClass(LOGGER);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ CommonPackage theCommonPackage = (CommonPackage)EPackage.Registry.INSTANCE.getEPackage(CommonPackage.eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ loggerEClass.getESuperTypes().add(theCommonPackage.getIdentifiable());
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(loggerEClass, Logger.class, "Logger", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} //LoggerPackageImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/provider/LoggerItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/provider/LoggerItemProvider.java
new file mode 100644
index 000000000..add40e501
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/provider/LoggerItemProvider.java
@@ -0,0 +1,128 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.core.logger.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.common.provider.CoreEditPlugin;
+import org.eclipse.stem.core.common.provider.IdentifiableItemProvider;
+import org.eclipse.stem.core.logger.Logger;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.logger.Logger} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LoggerItemProvider
+ extends IdentifiableItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LoggerItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns Logger.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Logger")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ URI labelValue = ((Logger)object).getURI();
+ String label = labelValue == null ? null : labelValue.toString();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Logger_type") : //$NON-NLS-1$
+ getString("_UI_Logger_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return CoreEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/provider/LoggerItemProviderAdapterFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/provider/LoggerItemProviderAdapterFactory.java
new file mode 100644
index 000000000..344a22957
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/provider/LoggerItemProviderAdapterFactory.java
@@ -0,0 +1,177 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.core.logger.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.logger.util.LoggerAdapterFactory;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LoggerItemProviderAdapterFactory extends LoggerAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+ /**
+ * This keeps track of the root adapter factory that delegates to this adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ComposedAdapterFactory parentAdapterFactory;
+
+ /**
+ * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+ /**
+ * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+ /**
+ * This constructs an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LoggerItemProviderAdapterFactory() {
+ supportedTypes.add(IEditingDomainItemProvider.class);
+ supportedTypes.add(IStructuredItemContentProvider.class);
+ supportedTypes.add(ITreeItemContentProvider.class);
+ supportedTypes.add(IItemLabelProvider.class);
+ supportedTypes.add(IItemPropertySource.class);
+ }
+
+ /**
+ * This returns the root adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ComposeableAdapterFactory getRootAdapterFactory() {
+ return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+ }
+
+ /**
+ * This sets the composed adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+ this.parentAdapterFactory = parentAdapterFactory;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object type) {
+ return supportedTypes.contains(type) || super.isFactoryForType(type);
+ }
+
+ /**
+ * This implementation substitutes the factory itself as the key for the adapter.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter adapt(Notifier notifier, Object type) {
+ return super.adapt(notifier, this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object adapt(Object object, Object type) {
+ if (isFactoryForType(type)) {
+ Object adapter = super.adapt(object, type);
+ if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+ return adapter;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * This adds a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void addListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.addListener(notifyChangedListener);
+ }
+
+ /**
+ * This removes a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void removeListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.removeListener(notifyChangedListener);
+ }
+
+ /**
+ * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void fireNotifyChanged(Notification notification) {
+ changeNotifier.fireNotifyChanged(notification);
+
+ if (parentAdapterFactory != null) {
+ parentAdapterFactory.fireNotifyChanged(notification);
+ }
+ }
+
+ /**
+ * This disposes all of the item providers created by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void dispose() {
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/util/LoggerAdapterFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/util/LoggerAdapterFactory.java
new file mode 100644
index 000000000..8d10e8a78
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/util/LoggerAdapterFactory.java
@@ -0,0 +1,178 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.core.logger.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.SanityChecker;
+import org.eclipse.stem.core.logger.Logger;
+import org.eclipse.stem.core.logger.LoggerPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.logger.LoggerPackage
+ * @generated
+ */
+public class LoggerAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static LoggerPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LoggerAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = LoggerPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LoggerSwitch<Adapter> modelSwitch =
+ new LoggerSwitch<Adapter>() {
+ @Override
+ public Adapter caseLogger(Logger object) {
+ return createLoggerAdapter();
+ }
+ @Override
+ public <T> Adapter caseComparable(Comparable<T> object) {
+ return createComparableAdapter();
+ }
+ @Override
+ public Adapter caseSanityChecker(SanityChecker object) {
+ return createSanityCheckerAdapter();
+ }
+ @Override
+ public Adapter caseIdentifiable(Identifiable object) {
+ return createIdentifiableAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.logger.Logger <em>Logger</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.logger.Logger
+ * @generated
+ */
+ public Adapter createLoggerAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link java.lang.Comparable <em>Comparable</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see java.lang.Comparable
+ * @generated
+ */
+ public Adapter createComparableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.SanityChecker <em>Sanity Checker</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.common.SanityChecker
+ * @generated
+ */
+ public Adapter createSanityCheckerAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.Identifiable <em>Identifiable</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.common.Identifiable
+ * @generated
+ */
+ public Adapter createIdentifiableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} //LoggerAdapterFactory
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/util/LoggerSwitch.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/util/LoggerSwitch.java
new file mode 100644
index 000000000..a02329ad1
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/util/LoggerSwitch.java
@@ -0,0 +1,180 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.core.logger.util;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.SanityChecker;
+import org.eclipse.stem.core.logger.Logger;
+import org.eclipse.stem.core.logger.LoggerPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.logger.LoggerPackage
+ * @generated
+ */
+public class LoggerSwitch<T1> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static LoggerPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LoggerSwitch() {
+ if (modelPackage == null) {
+ modelPackage = LoggerPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ public T1 doSwitch(EObject theEObject) {
+ return doSwitch(theEObject.eClass(), theEObject);
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T1 doSwitch(EClass theEClass, EObject theEObject) {
+ if (theEClass.eContainer() == modelPackage) {
+ return doSwitch(theEClass.getClassifierID(), theEObject);
+ }
+ else {
+ List<EClass> eSuperTypes = theEClass.getESuperTypes();
+ return
+ eSuperTypes.isEmpty() ?
+ defaultCase(theEObject) :
+ doSwitch(eSuperTypes.get(0), theEObject);
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T1 doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case LoggerPackage.LOGGER: {
+ Logger logger = (Logger)theEObject;
+ T1 result = caseLogger(logger);
+ if (result == null) result = caseIdentifiable(logger);
+ if (result == null) result = caseComparable(logger);
+ if (result == null) result = caseSanityChecker(logger);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Logger</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Logger</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseLogger(Logger object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Comparable</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Comparable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public <T> T1 caseComparable(Comparable<T> object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Sanity Checker</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Sanity Checker</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseSanityChecker(SanityChecker object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Identifiable</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Identifiable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseIdentifiable(Identifiable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ public T1 defaultCase(EObject object) {
+ return null;
+ }
+
+} //LoggerSwitch
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/math/BinomialDistributionUtil.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/math/BinomialDistributionUtil.java
new file mode 100644
index 000000000..51f2c13b1
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/math/BinomialDistributionUtil.java
@@ -0,0 +1,80 @@
+package org.eclipse.stem.core.math;
+
+
+/*******************************************************************************
+ * Copyright (c) 2010 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
+ *******************************************************************************/
+
+/**
+ * Utility primarily used by stochastic models
+ * This technique makes a random pick from a binomial distribution.
+ * The complex part of this operation is to compute the binomial coefficient
+ * efficiently (see for example: http://en.wikipedia.org/wiki/Binomial_distribution)
+ * In order to do the computation for large N (large S) we compute the log of the binomial coefficient
+ * so we do a sum (instead of a factorial product) and then exponentiate the result.
+ */
+public class BinomialDistributionUtil {
+
+ /**
+ * Returns the random pick from a binomial dist
+ * given 0<=rndVar<=1
+ * This sums the binomial distribution and returns the k value with that integrated probability
+ * @param p The probability
+ * @param n N, (e.g. susceptible)
+ * @param rndVAR Random number
+ * @return K Random pick
+ **/
+ public static int fastPickFromBinomialDist(double p, int n, double rndVAR){
+ if(p == 0 || n == 0) return 0;
+ double Bsum = 0.0;
+ // compute this once
+ double lnFactorialN = lnFactorial(n);
+ double lnFactorialK = 0.0;
+ double lnFactorialN_K = lnFactorialN;
+ int n_k = n;
+ for(int k = 0; k <= n; k ++) {
+
+ if(k>=1) {
+ // count up
+ lnFactorialK += Math.log((double)k);
+
+ // count down for n-k
+ lnFactorialN_K -= Math.log((double)n_k);
+ n_k -= 1;
+ }
+ // do the entire computation in log space
+ double logB = lnFactorialN - lnFactorialK - lnFactorialN_K;
+ // now instead of multiplying by p^k * (1-p)^n-k
+ // we add
+ // logB + k*log(p) + (n-k)*log(1-p);
+ logB += (k*Math.log(p)) + ( (n-k) * Math.log (1-p) );
+ // NOW we take the exponent
+ Bsum += Math.exp(logB);
+ if (Bsum >= rndVAR) return k;
+ }
+ return n;
+ }
+
+
+ /**
+ * compute the log(n!)
+ * @param n
+ * @return log(n!)
+ */
+ static double lnFactorial(int n) {
+ double retVal = 0.0;
+
+ for (int i = 1; i <= n; i++) {
+ retVal += Math.log((double)i);
+ }
+
+ return retVal;
+ }
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/Decorator.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/Decorator.java
new file mode 100644
index 000000000..5622f979f
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/Decorator.java
@@ -0,0 +1,217 @@
+// Decorator.java
+package org.eclipse.stem.core.model;
+
+/*******************************************************************************
+ * Copyright (c) 2006, 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.graph.DynamicLabel;
+import org.eclipse.stem.core.graph.Edge;
+import org.eclipse.stem.core.graph.Graph;
+
+/**
+ * A <code>Decorator</code> represents a computational component that can
+ * modify or "decorate" a {@link org.eclipse.stem.core.graph.Graph}.
+ * <p>
+ * The method {@link #decorateGraph(org.eclipse.stem.core.graph.Graph)} is
+ * called once for each <code>Decorator</code> instance during the creation of
+ * the canonical {@link org.eclipse.stem.core.graph.Graph} (see
+ * {@link Model#getCanonicalGraph(org.eclipse.emf.common.util.URI)}).
+ * Typically, this method would add additional {@link DynamicLabel}s to the
+ * {@link org.eclipse.stem.core.graph.Graph} under construction. For
+ * example, a disease model would be implemented as a <code>Decorator</code>
+ * and it would add {@link DynamicLabel}s to the
+ * {@link org.eclipse.stem.core.graph.Node}s of the
+ * {@link org.eclipse.stem.core.graph.Graph} that represent the state of the
+ * disease at each {@link org.eclipse.stem.core.graph.Node}.
+ * </p>
+ * <p>
+ * After the canonical {@link org.eclipse.stem.core.graph.Graph} is created,
+ * the method
+ * {@link #updateLabels(org.eclipse.stem.core.graph.Graph, STEMTime, long)}
+ * will be called once every time the
+ * {@link org.eclipse.stem.core.scenario.Scenario} is "stepped" (see
+ * {@link org.eclipse.stem.core.scenario.Scenario#step()}). The
+ * {@link DynamicLabel}s that it updates are those that were added to the
+ * {@link org.eclipse.stem.core.graph.Graph} in the
+ * {@link #decorateGraph(org.eclipse.stem.core.graph.Graph)} method call. A
+ * reference to each of those {@link DynamicLabel}s is kept in a collection
+ * (see {@link #getLabelsToUpdate()}) maintained by the <code>Decorator</code>.
+ * The {@link #updateLabels(Graph, STEMTime, long)} method computes the "next"
+ * value of all of the {@link DynamicLabel}s in that collection.
+ * </p>
+ * <p>
+ * For maximum flexibility, the nature of that
+ * {@link org.eclipse.stem.core.graph.LabelValue} and its computation are
+ * not defined or restricted. For instance, the <code>Decorator</code> could
+ * compute the {@link org.eclipse.stem.core.graph.LabelValue} from the
+ * contents of the {@link org.eclipse.stem.core.graph.Graph}, read the
+ * value from a file, obtain it from a real-time data source such as a weather
+ * station or something accessible from a web site or a web service.
+ * </p>
+ *
+ * @model
+ */
+public interface Decorator extends Identifiable {
+
+ /**
+ * A {@link Decorator} is enabled by default, but if it is the action of a
+ * {@link Trigger} then it will be disabled by the {@link Trigger} until the
+ * {@link Trigger}'s {@link Predicate} evaluates to <code>true</code>.
+ * <p>
+ * If the value is <code>false</code> then calls to {@link #decorateGraph()}
+ * and {@link #updateLabels(STEMTime, long)} will be ignored.
+ *
+ * @return <code>true</code> if the {@link Decorator} is enabled.
+ * @model default="true"
+ */
+ boolean isEnabled();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.model.Decorator#isEnabled <em>Enabled</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Enabled</em>' attribute.
+ * @see #isEnabled()
+ * @generated
+ */
+ void setEnabled(boolean value);
+
+
+ /**
+ * @return <code>true</code> if {@link #decorateGraph()} has been called and
+ * it has completed decorating the {@link Graph}, <code>false</code>
+ * otherwise.
+ * @model default="false"
+ */
+ boolean isGraphDecorated();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.model.Decorator#isGraphDecorated <em>Graph Decorated</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Graph Decorated</em>' attribute.
+ * @see #isGraphDecorated()
+ * @generated
+ */
+ void setGraphDecorated(boolean value);
+
+ /**
+ * Returns the value of the '<em><b>Progress</b></em>' attribute.
+ * The default value is <code>"0.0"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Progress</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Progress</em>' attribute.
+ * @see #setProgress(double)
+ * @see org.eclipse.stem.core.model.ModelPackage#getDecorator_Progress()
+ * @model default="0.0" transient="true"
+ * @generated
+ */
+ double getProgress();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.model.Decorator#getProgress <em>Progress</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Progress</em>' attribute.
+ * @see #getProgress()
+ * @generated
+ */
+ void setProgress(double value);
+
+ /**Augment the graph by adding components ({@link Edge}s,
+ * {@link org.eclipse.stem.core.graph.Node}s,
+ * {@link org.eclipse.stem.core.graph.Label}s). The added components,
+ * in particular {@link DynamicLabel}s, can be modified later during a call
+ * to {@link #updateLabels(Graph, STEMTime)}. A side effect of this call is
+ * that it adds the decorator to the collection maintained by the
+ * {@link Graph}.
+ * @param tiome
+ * @return boolean
+ * @generated
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ boolean decorateGraph(STEMTime time);
+
+ /**
+ *
+ * @return the {@link Graph} that the <code>Decorator</code> decorates.
+ * @model opposite="decorators"
+ */
+ Graph getGraph();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.model.Decorator#getGraph <em>Graph</em>}' container reference.
+ * <!-- begin-user-doc -->
+ *
+ * Sets the value of the '{@link org.eclipse.stem.core.model.Decorator#getGraph <em>Graph</em>}'
+ * container reference.
+ *
+ * @param value
+ * the new value of the '<em>Graph</em>' container reference.
+ * @see #getGraph()
+ *
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Graph</em>' container reference.
+ * @see #getGraph()
+ * @generated
+ */
+ void setGraph(Graph value);
+
+ /**
+ * @return the list of {@link DynamicLabel}s that this <code>Decorator</code>
+ * is responsible for updating.
+ * @model type="DynamicLabel" containment="false" opposite="decorator"
+ */
+ EList<DynamicLabel> getLabelsToUpdate();
+
+
+ /**
+ * Process each of the {@link DynamicLabel}s that this
+ * <code>Decorator</code> is responsible for and determine their "next"
+ * value.
+ *
+ * @param time
+ * the time to be used when determining the changes to be made to
+ * the Graph
+ * @param timePeriod
+ * the number of milliseconds difference between the time and the
+ * previous time value.
+ * @param cycle
+ * The next cycle number.
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ void updateLabels(final STEMTime time, final long timerPeriod, int cycle);
+
+ /**
+ * Process each of the {@link DynamicLabels} that this
+ * <code>decorator</code> is responsible for and reset their "current"
+ * value to be the initial value assigned during the call to the method
+ * {@link #decorateGraph()}
+ *
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ void resetLabels();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ void prepare(Model model, STEMTime time);
+
+} // Decorator
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/DisplayableCanonical.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/DisplayableCanonical.java
new file mode 100644
index 000000000..6de691598
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/DisplayableCanonical.java
@@ -0,0 +1,14 @@
+package org.eclipse.stem.core.model;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * see Modifiable.java in org.eclipse.core.modifier
+ *
+ *
+ * @model interface="true"
+ */
+public interface DisplayableCanonical extends EObject {
+ // Nothing
+} // Modifiable
+
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/EdgeDecorator.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/EdgeDecorator.java
new file mode 100644
index 000000000..3a856b0cb
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/EdgeDecorator.java
@@ -0,0 +1,31 @@
+// EdgeDecorator.java
+package org.eclipse.stem.core.model;
+
+import org.eclipse.stem.core.graph.Edge;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+/**
+ * An <code>EdgeDecorator</code> is a {@link Decorator} that specifically
+ * modifies {@link Edge}s and their {@link Label}s.
+ *
+ * @see Edge
+ * @see org.eclipse.stem.core.graph.DynamicLabel
+ * @see NodeDecorator
+ * @see GraphDecorator
+ * @see Sequencer
+ *
+ * @model
+ */
+public interface EdgeDecorator extends Decorator {
+ // Nothing Yet
+} // EdgeDecorator
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/GraphDecorator.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/GraphDecorator.java
new file mode 100644
index 000000000..6cd210dc6
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/GraphDecorator.java
@@ -0,0 +1,30 @@
+// GraphDecorator.java
+package org.eclipse.stem.core.model;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+/**
+ * An <code>GraphDecorator</code> is a {@link Decorator} that specifically
+ * modifies {@link org.eclipse.stem.core.graph.Edge}s and their
+ * {@link org.eclipse.stem.core.graph.Label}s.
+ *
+ * @see org.eclipse.stem.core.graph.Graph
+ * @see org.eclipse.stem.core.graph.DynamicLabel
+ * @see NodeDecorator
+ * @see EdgeDecorator
+ * @see org.eclipse.stem.core.sequencer.Sequencer
+ *
+ * @model
+ */
+public interface GraphDecorator extends Decorator {
+ // Nothing Yet
+} // GraphDecorator
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/IntegrationDecorator.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/IntegrationDecorator.java
new file mode 100644
index 000000000..cc0a89f60
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/IntegrationDecorator.java
@@ -0,0 +1,60 @@
+package org.eclipse.stem.core.model;
+/*******************************************************************************
+ * Copyright (c) 2011 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.stem.core.graph.DynamicLabel;
+import org.eclipse.stem.core.graph.LabelValue;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Integration Decorator</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.stem.core.model.ModelPackage#getIntegrationDecorator()
+ * @model abstract="true"
+ * @generated
+ */
+public interface IntegrationDecorator extends NodeDecorator {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model labelsMany="true"
+ * @generated
+ */
+ void applyExternalDeltas(STEMTime time, long timeDelta, EList<DynamicLabel> labels);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model labelsMany="true"
+ * @generated
+ */
+ void calculateDelta(STEMTime time, long timeDelta, EList<DynamicLabel> labels);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ void doModelSpecificAdjustments(LabelValue label);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * @generated
+ */
+ boolean isDeterministic();
+
+} // IntegrationDecorator
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/Model.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/Model.java
new file mode 100644
index 000000000..aaf010a4e
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/Model.java
@@ -0,0 +1,154 @@
+// Model.java
+package org.eclipse.stem.core.model;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.IdentifiableFilter;
+import org.eclipse.stem.core.graph.Graph;
+
+/**
+ * A <code>Model</code> contains all of the components necessary to create a
+ * canonical {@link org.eclipse.stem.core.graph.Graph} suitable for
+ * simulation. In particular it contains a collection of
+ * {@link org.eclipse.stem.core.graph.Graph}'s and a collection of other
+ * (sub) <code>Model</code>'s. This structure forms a "tree" with
+ * <code>Model</code> instances as the tree's root and interior nodes, and
+ * {@link org.eclipse.stem.core.graph.Graph} instances as the tree's leaves.
+ * <p>
+ * Each <code>Model</code> can also contain collection's of {@link Decorator}'s
+ * which can modify the canonical {@link org.eclipse.stem.core.graph.Graph}
+ * when it is first created from the model (see {@link #getCanonicalGraph(URI)}.
+ * </p>
+ * <p>
+ * Each {@link org.eclipse.stem.core.scenario.Scenario} contains a single
+ * reference to a <code>Model</code>. That model is the root of the tree the
+ * defines the canonical {@link org.eclipse.stem.core.graph.Graph} that will
+ * be used for simulation. A {@link org.eclipse.stem.core.scenario.Scenario}
+ * obtains the canonical {@link org.eclipse.stem.core.graph.Graph} from the
+ * model by calling the method {@link #getCanonicalGraph(URI)}. This method
+ * recursively creates the canonical
+ * {@link org.eclipse.stem.core.graph.Graph} by invoking itself on the
+ * <code>Model</code> instances it contains. At each level of the recursion,
+ * it combines the results of those calls with the
+ * {@link org.eclipse.stem.core.graph.Graph}'s it contains (if any). The
+ * {@link Decorator}s in the model are also then allowed to modify (decorate)
+ * the {@link org.eclipse.stem.core.graph.Graph}. Then, the recursion
+ * attempts to resolve any outstanding unresolved links between
+ * {@link org.eclipse.stem.core.graph.Edge}s and
+ * {@link org.eclipse.stem.core.graph.Label}s and the
+ * {@link org.eclipse.stem.core.graph.Node}s in the canonical
+ * {@link org.eclipse.stem.core.graph.Graph} under construction. This is
+ * accomplished by matching up the "target" {@link URI}s of the unresolved
+ * {@link org.eclipse.stem.core.graph.Edge}s or {@link Label}s with a
+ * {@link URI} of a {@link Node}. Any which cannot be resolved are recorded
+ * with a {@link org.eclipse.stem.core.graph.UnresolvedIdentifiable}
+ * instance (see
+ * {@link org.eclipse.stem.core.graph.Graph#getUnresolvedIdentifiables()})
+ * for later reporting.
+ * </p>
+ * <p>
+ * This interface definition is also an "Annotated Java Interface" that defines
+ * one class in a <a href="http://www.uml.org/">UML</a> "model". The UML class
+ * diagram for the model is in the <code>documentation</code> folder of the
+ * project. This file and the other interfaces in this Java package are
+ * processed by the Eclipse Modeling Framework (aka EMF <a
+ * href="http://org.eclipse/emf">http://org.eclipse/emf</a>). to automatically
+ * generate an implementation of the model. EMF is documented in the book <a
+ * href="http://www.awprofessional.com/bookstore/product.asp?isbn=0131425420&rl=1">Eclipse
+ * Modeling Framework </a> by Budinsky, et al.
+ * </p>
+ *
+ * @see org.eclipse.stem.core.graph.Graph
+ * @see org.eclipse.stem.core.scenario.Scenario
+ *
+ * @model
+ */
+public interface Model extends Identifiable {
+
+ /**
+ * This is the segment of the type URI that prefixes all other segments in a
+ * model URI.
+ */
+ String URI_TYPE_MODEL_SEGMENT = "model";
+
+ /**
+ * @return this <code>Model</code>'s collection of (sub)
+ * <code>Model</code>s
+ *
+ * @model type="Model" containment="false"
+ */
+ EList<Model> getModels();
+
+ /**
+ * @return this <code>Model</code>'s collection of {@link org.eclipse.stem.core.graph.Graph}}s
+ *
+ * @model type="Graph" containment="false"
+ */
+ EList<Graph> getGraphs();
+
+ /**
+ * @return the collection of {@link Decorator}s that decorate the canonical
+ * {@link Graph} itself. These decorations are {@link Label}s that
+ * act like "global variables" for the canonical {@link Graph}.
+ *
+ * @model type="GraphDecorator" containment="false"
+ */
+ EList<GraphDecorator> getGraphDecorators();
+
+ /**
+ * @return the collection of {@link Decorator}s that decorate the
+ * {@link Node}s in the canonical {@link Graph}.
+ *
+ * @model type="NodeDecorator" containment="false"
+ */
+ EList<NodeDecorator> getNodeDecorators();
+
+ /**
+ * @return the collection of {@link Decorator}s that decorate the
+ * {@link org.eclipse.stem.core.graph.Edge}s in the canonical {@link Graph}.
+ *
+ * @model type="EdgeDecorator" containment="false"
+ */
+ EList<EdgeDecorator> getEdgeDecorators();
+
+ /**
+ *Recursively process any models this model contains to obtain their
+ * canonical {@link Graph}s. Combine these with any graphs this model
+ * contains to make one aggregate {@link Graph}. Then this
+ * <code>model</code>'s {@link Decorator}s decorate the graph.
+ *
+ * @param uri
+ * the {@link URI} of the newly created canonical graph
+ * @param parentFilter
+ * @param time
+ * @return the canonical graph of the model
+ *
+ * @model volatile="true" transient="true" changeable="false"
+ * resolveProxies="false"
+ *
+ * @generated
+ */
+ Graph getCanonicalGraph(URI uri, IdentifiableFilter filter, STEMTime time);
+
+
+ /**
+ * Prepare the model if needed
+ * @model
+ * @generated
+ */
+ void prepare(STEMTime time);
+
+} // Model
+
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/ModelFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/ModelFactory.java
new file mode 100644
index 000000000..858055b9d
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/ModelFactory.java
@@ -0,0 +1,96 @@
+package org.eclipse.stem.core.model;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.model.ModelPackage
+ * @generated
+ */
+public interface ModelFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ ModelFactory eINSTANCE = org.eclipse.stem.core.model.impl.ModelFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Decorator</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Decorator</em>'.
+ * @generated
+ */
+ Decorator createDecorator();
+
+ /**
+ * Returns a new object of class '<em>Edge Decorator</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Edge Decorator</em>'.
+ * @generated
+ */
+ EdgeDecorator createEdgeDecorator();
+
+ /**
+ * Returns a new object of class '<em>Graph Decorator</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Graph Decorator</em>'.
+ * @generated
+ */
+ GraphDecorator createGraphDecorator();
+
+ /**
+ * Returns a new object of class '<em>Model</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Model</em>'.
+ * @generated
+ */
+ Model createModel();
+
+ /**
+ * Returns a new object of class '<em>Node Decorator</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Node Decorator</em>'.
+ * @generated
+ */
+ NodeDecorator createNodeDecorator();
+
+ /**
+ * Returns a new object of class '<em>STEM Time</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>STEM Time</em>'.
+ * @generated
+ */
+ STEMTime createSTEMTime();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ ModelPackage getModelPackage();
+
+} //ModelFactory
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/ModelPackage.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/ModelPackage.java
new file mode 100644
index 000000000..30d656c43
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/ModelPackage.java
@@ -0,0 +1,1055 @@
+package org.eclipse.stem.core.model;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.stem.core.common.CommonPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.model.ModelFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface ModelPackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "model";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http:///org/eclipse/stem/core/model.ecore";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "org.eclipse.stem.core.model";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ ModelPackage eINSTANCE = org.eclipse.stem.core.model.impl.ModelPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.model.impl.DecoratorImpl <em>Decorator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.model.impl.DecoratorImpl
+ * @see org.eclipse.stem.core.model.impl.ModelPackageImpl#getDecorator()
+ * @generated
+ */
+ int DECORATOR = 0;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECORATOR__URI = CommonPackage.IDENTIFIABLE__URI;
+
+ /**
+ * The feature id for the '<em><b>Type URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECORATOR__TYPE_URI = CommonPackage.IDENTIFIABLE__TYPE_URI;
+
+ /**
+ * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECORATOR__DUBLIN_CORE = CommonPackage.IDENTIFIABLE__DUBLIN_CORE;
+
+ /**
+ * The feature id for the '<em><b>Labels To Update</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECORATOR__LABELS_TO_UPDATE = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Graph</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECORATOR__GRAPH = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Enabled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECORATOR__ENABLED = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Graph Decorated</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECORATOR__GRAPH_DECORATED = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Progress</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECORATOR__PROGRESS = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 4;
+
+ /**
+ * The number of structural features of the '<em>Decorator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DECORATOR_FEATURE_COUNT = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 5;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.model.impl.EdgeDecoratorImpl <em>Edge Decorator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.model.impl.EdgeDecoratorImpl
+ * @see org.eclipse.stem.core.model.impl.ModelPackageImpl#getEdgeDecorator()
+ * @generated
+ */
+ int EDGE_DECORATOR = 1;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE_DECORATOR__URI = DECORATOR__URI;
+
+ /**
+ * The feature id for the '<em><b>Type URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE_DECORATOR__TYPE_URI = DECORATOR__TYPE_URI;
+
+ /**
+ * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE_DECORATOR__DUBLIN_CORE = DECORATOR__DUBLIN_CORE;
+
+ /**
+ * The feature id for the '<em><b>Labels To Update</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE_DECORATOR__LABELS_TO_UPDATE = DECORATOR__LABELS_TO_UPDATE;
+
+ /**
+ * The feature id for the '<em><b>Graph</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE_DECORATOR__GRAPH = DECORATOR__GRAPH;
+
+ /**
+ * The feature id for the '<em><b>Enabled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE_DECORATOR__ENABLED = DECORATOR__ENABLED;
+
+ /**
+ * The feature id for the '<em><b>Graph Decorated</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE_DECORATOR__GRAPH_DECORATED = DECORATOR__GRAPH_DECORATED;
+
+ /**
+ * The feature id for the '<em><b>Progress</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE_DECORATOR__PROGRESS = DECORATOR__PROGRESS;
+
+ /**
+ * The number of structural features of the '<em>Edge Decorator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE_DECORATOR_FEATURE_COUNT = DECORATOR_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.model.impl.GraphDecoratorImpl <em>Graph Decorator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.model.impl.GraphDecoratorImpl
+ * @see org.eclipse.stem.core.model.impl.ModelPackageImpl#getGraphDecorator()
+ * @generated
+ */
+ int GRAPH_DECORATOR = 2;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH_DECORATOR__URI = DECORATOR__URI;
+
+ /**
+ * The feature id for the '<em><b>Type URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH_DECORATOR__TYPE_URI = DECORATOR__TYPE_URI;
+
+ /**
+ * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH_DECORATOR__DUBLIN_CORE = DECORATOR__DUBLIN_CORE;
+
+ /**
+ * The feature id for the '<em><b>Labels To Update</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH_DECORATOR__LABELS_TO_UPDATE = DECORATOR__LABELS_TO_UPDATE;
+
+ /**
+ * The feature id for the '<em><b>Graph</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH_DECORATOR__GRAPH = DECORATOR__GRAPH;
+
+ /**
+ * The feature id for the '<em><b>Enabled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH_DECORATOR__ENABLED = DECORATOR__ENABLED;
+
+ /**
+ * The feature id for the '<em><b>Graph Decorated</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH_DECORATOR__GRAPH_DECORATED = DECORATOR__GRAPH_DECORATED;
+
+ /**
+ * The feature id for the '<em><b>Progress</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH_DECORATOR__PROGRESS = DECORATOR__PROGRESS;
+
+ /**
+ * The number of structural features of the '<em>Graph Decorator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH_DECORATOR_FEATURE_COUNT = DECORATOR_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.model.impl.ModelImpl <em>Model</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.model.impl.ModelImpl
+ * @see org.eclipse.stem.core.model.impl.ModelPackageImpl#getModel()
+ * @generated
+ */
+ int MODEL = 3;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MODEL__URI = CommonPackage.IDENTIFIABLE__URI;
+
+ /**
+ * The feature id for the '<em><b>Type URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MODEL__TYPE_URI = CommonPackage.IDENTIFIABLE__TYPE_URI;
+
+ /**
+ * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MODEL__DUBLIN_CORE = CommonPackage.IDENTIFIABLE__DUBLIN_CORE;
+
+ /**
+ * The feature id for the '<em><b>Models</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MODEL__MODELS = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Graphs</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MODEL__GRAPHS = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Graph Decorators</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MODEL__GRAPH_DECORATORS = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Node Decorators</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MODEL__NODE_DECORATORS = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Edge Decorators</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MODEL__EDGE_DECORATORS = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 4;
+
+ /**
+ * The number of structural features of the '<em>Model</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MODEL_FEATURE_COUNT = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 5;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.model.impl.NodeDecoratorImpl <em>Node Decorator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.model.impl.NodeDecoratorImpl
+ * @see org.eclipse.stem.core.model.impl.ModelPackageImpl#getNodeDecorator()
+ * @generated
+ */
+ int NODE_DECORATOR = 4;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE_DECORATOR__URI = DECORATOR__URI;
+
+ /**
+ * The feature id for the '<em><b>Type URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE_DECORATOR__TYPE_URI = DECORATOR__TYPE_URI;
+
+ /**
+ * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE_DECORATOR__DUBLIN_CORE = DECORATOR__DUBLIN_CORE;
+
+ /**
+ * The feature id for the '<em><b>Labels To Update</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE_DECORATOR__LABELS_TO_UPDATE = DECORATOR__LABELS_TO_UPDATE;
+
+ /**
+ * The feature id for the '<em><b>Graph</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE_DECORATOR__GRAPH = DECORATOR__GRAPH;
+
+ /**
+ * The feature id for the '<em><b>Enabled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE_DECORATOR__ENABLED = DECORATOR__ENABLED;
+
+ /**
+ * The feature id for the '<em><b>Graph Decorated</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE_DECORATOR__GRAPH_DECORATED = DECORATOR__GRAPH_DECORATED;
+
+ /**
+ * The feature id for the '<em><b>Progress</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE_DECORATOR__PROGRESS = DECORATOR__PROGRESS;
+
+ /**
+ * The number of structural features of the '<em>Node Decorator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE_DECORATOR_FEATURE_COUNT = DECORATOR_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link java.lang.Comparable <em>Comparable</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Comparable
+ * @see org.eclipse.stem.core.model.impl.ModelPackageImpl#getComparable()
+ * @generated
+ */
+ int COMPARABLE = 6;
+
+ /**
+ * The number of structural features of the '<em>Comparable</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPARABLE_FEATURE_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.model.impl.STEMTimeImpl <em>STEM Time</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.model.impl.STEMTimeImpl
+ * @see org.eclipse.stem.core.model.impl.ModelPackageImpl#getSTEMTime()
+ * @generated
+ */
+ int STEM_TIME = 5;
+
+ /**
+ * The feature id for the '<em><b>Time</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME__TIME = COMPARABLE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>STEM Time</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_FEATURE_COUNT = COMPARABLE_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.model.impl.IntegrationDecoratorImpl <em>Integration Decorator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.model.impl.IntegrationDecoratorImpl
+ * @see org.eclipse.stem.core.model.impl.ModelPackageImpl#getIntegrationDecorator()
+ * @generated
+ */
+ int INTEGRATION_DECORATOR = 7;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGRATION_DECORATOR__URI = NODE_DECORATOR__URI;
+
+ /**
+ * The feature id for the '<em><b>Type URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGRATION_DECORATOR__TYPE_URI = NODE_DECORATOR__TYPE_URI;
+
+ /**
+ * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGRATION_DECORATOR__DUBLIN_CORE = NODE_DECORATOR__DUBLIN_CORE;
+
+ /**
+ * The feature id for the '<em><b>Labels To Update</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGRATION_DECORATOR__LABELS_TO_UPDATE = NODE_DECORATOR__LABELS_TO_UPDATE;
+
+ /**
+ * The feature id for the '<em><b>Graph</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGRATION_DECORATOR__GRAPH = NODE_DECORATOR__GRAPH;
+
+ /**
+ * The feature id for the '<em><b>Enabled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGRATION_DECORATOR__ENABLED = NODE_DECORATOR__ENABLED;
+
+ /**
+ * The feature id for the '<em><b>Graph Decorated</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGRATION_DECORATOR__GRAPH_DECORATED = NODE_DECORATOR__GRAPH_DECORATED;
+
+ /**
+ * The feature id for the '<em><b>Progress</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGRATION_DECORATOR__PROGRESS = NODE_DECORATOR__PROGRESS;
+
+ /**
+ * The number of structural features of the '<em>Integration Decorator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGRATION_DECORATOR_FEATURE_COUNT = NODE_DECORATOR_FEATURE_COUNT + 0;
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.model.Decorator <em>Decorator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Decorator</em>'.
+ * @see org.eclipse.stem.core.model.Decorator
+ * @generated
+ */
+ EClass getDecorator();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.stem.core.model.Decorator#getLabelsToUpdate <em>Labels To Update</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Labels To Update</em>'.
+ * @see org.eclipse.stem.core.model.Decorator#getLabelsToUpdate()
+ * @see #getDecorator()
+ * @generated
+ */
+ EReference getDecorator_LabelsToUpdate();
+
+ /**
+ * Returns the meta object for the container reference '{@link org.eclipse.stem.core.model.Decorator#getGraph <em>Graph</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the container reference '<em>Graph</em>'.
+ * @see org.eclipse.stem.core.model.Decorator#getGraph()
+ * @see #getDecorator()
+ * @generated
+ */
+ EReference getDecorator_Graph();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.model.Decorator#isEnabled <em>Enabled</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Enabled</em>'.
+ * @see org.eclipse.stem.core.model.Decorator#isEnabled()
+ * @see #getDecorator()
+ * @generated
+ */
+ EAttribute getDecorator_Enabled();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.model.Decorator#isGraphDecorated <em>Graph Decorated</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Graph Decorated</em>'.
+ * @see org.eclipse.stem.core.model.Decorator#isGraphDecorated()
+ * @see #getDecorator()
+ * @generated
+ */
+ EAttribute getDecorator_GraphDecorated();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.model.Decorator#getProgress <em>Progress</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Progress</em>'.
+ * @see org.eclipse.stem.core.model.Decorator#getProgress()
+ * @see #getDecorator()
+ * @generated
+ */
+ EAttribute getDecorator_Progress();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.model.EdgeDecorator <em>Edge Decorator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Edge Decorator</em>'.
+ * @see org.eclipse.stem.core.model.EdgeDecorator
+ * @generated
+ */
+ EClass getEdgeDecorator();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.model.GraphDecorator <em>Graph Decorator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Graph Decorator</em>'.
+ * @see org.eclipse.stem.core.model.GraphDecorator
+ * @generated
+ */
+ EClass getGraphDecorator();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.model.Model <em>Model</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Model</em>'.
+ * @see org.eclipse.stem.core.model.Model
+ * @generated
+ */
+ EClass getModel();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.stem.core.model.Model#getModels <em>Models</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Models</em>'.
+ * @see org.eclipse.stem.core.model.Model#getModels()
+ * @see #getModel()
+ * @generated
+ */
+ EReference getModel_Models();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.stem.core.model.Model#getGraphs <em>Graphs</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Graphs</em>'.
+ * @see org.eclipse.stem.core.model.Model#getGraphs()
+ * @see #getModel()
+ * @generated
+ */
+ EReference getModel_Graphs();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.stem.core.model.Model#getGraphDecorators <em>Graph Decorators</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Graph Decorators</em>'.
+ * @see org.eclipse.stem.core.model.Model#getGraphDecorators()
+ * @see #getModel()
+ * @generated
+ */
+ EReference getModel_GraphDecorators();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.stem.core.model.Model#getNodeDecorators <em>Node Decorators</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Node Decorators</em>'.
+ * @see org.eclipse.stem.core.model.Model#getNodeDecorators()
+ * @see #getModel()
+ * @generated
+ */
+ EReference getModel_NodeDecorators();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.stem.core.model.Model#getEdgeDecorators <em>Edge Decorators</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Edge Decorators</em>'.
+ * @see org.eclipse.stem.core.model.Model#getEdgeDecorators()
+ * @see #getModel()
+ * @generated
+ */
+ EReference getModel_EdgeDecorators();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.model.NodeDecorator <em>Node Decorator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Node Decorator</em>'.
+ * @see org.eclipse.stem.core.model.NodeDecorator
+ * @generated
+ */
+ EClass getNodeDecorator();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.model.STEMTime <em>STEM Time</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>STEM Time</em>'.
+ * @see org.eclipse.stem.core.model.STEMTime
+ * @generated
+ */
+ EClass getSTEMTime();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.model.STEMTime#getTime <em>Time</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Time</em>'.
+ * @see org.eclipse.stem.core.model.STEMTime#getTime()
+ * @see #getSTEMTime()
+ * @generated
+ */
+ EAttribute getSTEMTime_Time();
+
+ /**
+ * Returns the meta object for class '{@link java.lang.Comparable <em>Comparable</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Comparable</em>'.
+ * @see java.lang.Comparable
+ * @model instanceClass="java.lang.Comparable" typeParameters="T"
+ * @generated
+ */
+ EClass getComparable();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.model.IntegrationDecorator <em>Integration Decorator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Integration Decorator</em>'.
+ * @see org.eclipse.stem.core.model.IntegrationDecorator
+ * @generated
+ */
+ EClass getIntegrationDecorator();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ ModelFactory getModelFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.model.impl.DecoratorImpl <em>Decorator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.model.impl.DecoratorImpl
+ * @see org.eclipse.stem.core.model.impl.ModelPackageImpl#getDecorator()
+ * @generated
+ */
+ EClass DECORATOR = eINSTANCE.getDecorator();
+
+ /**
+ * The meta object literal for the '<em><b>Labels To Update</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DECORATOR__LABELS_TO_UPDATE = eINSTANCE.getDecorator_LabelsToUpdate();
+
+ /**
+ * The meta object literal for the '<em><b>Graph</b></em>' container reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DECORATOR__GRAPH = eINSTANCE.getDecorator_Graph();
+
+ /**
+ * The meta object literal for the '<em><b>Enabled</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DECORATOR__ENABLED = eINSTANCE.getDecorator_Enabled();
+
+ /**
+ * The meta object literal for the '<em><b>Graph Decorated</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DECORATOR__GRAPH_DECORATED = eINSTANCE.getDecorator_GraphDecorated();
+
+ /**
+ * The meta object literal for the '<em><b>Progress</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DECORATOR__PROGRESS = eINSTANCE.getDecorator_Progress();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.model.impl.EdgeDecoratorImpl <em>Edge Decorator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.model.impl.EdgeDecoratorImpl
+ * @see org.eclipse.stem.core.model.impl.ModelPackageImpl#getEdgeDecorator()
+ * @generated
+ */
+ EClass EDGE_DECORATOR = eINSTANCE.getEdgeDecorator();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.model.impl.GraphDecoratorImpl <em>Graph Decorator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.model.impl.GraphDecoratorImpl
+ * @see org.eclipse.stem.core.model.impl.ModelPackageImpl#getGraphDecorator()
+ * @generated
+ */
+ EClass GRAPH_DECORATOR = eINSTANCE.getGraphDecorator();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.model.impl.ModelImpl <em>Model</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.model.impl.ModelImpl
+ * @see org.eclipse.stem.core.model.impl.ModelPackageImpl#getModel()
+ * @generated
+ */
+ EClass MODEL = eINSTANCE.getModel();
+
+ /**
+ * The meta object literal for the '<em><b>Models</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference MODEL__MODELS = eINSTANCE.getModel_Models();
+
+ /**
+ * The meta object literal for the '<em><b>Graphs</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference MODEL__GRAPHS = eINSTANCE.getModel_Graphs();
+
+ /**
+ * The meta object literal for the '<em><b>Graph Decorators</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference MODEL__GRAPH_DECORATORS = eINSTANCE.getModel_GraphDecorators();
+
+ /**
+ * The meta object literal for the '<em><b>Node Decorators</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference MODEL__NODE_DECORATORS = eINSTANCE.getModel_NodeDecorators();
+
+ /**
+ * The meta object literal for the '<em><b>Edge Decorators</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference MODEL__EDGE_DECORATORS = eINSTANCE.getModel_EdgeDecorators();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.model.impl.NodeDecoratorImpl <em>Node Decorator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.model.impl.NodeDecoratorImpl
+ * @see org.eclipse.stem.core.model.impl.ModelPackageImpl#getNodeDecorator()
+ * @generated
+ */
+ EClass NODE_DECORATOR = eINSTANCE.getNodeDecorator();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.model.impl.STEMTimeImpl <em>STEM Time</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.model.impl.STEMTimeImpl
+ * @see org.eclipse.stem.core.model.impl.ModelPackageImpl#getSTEMTime()
+ * @generated
+ */
+ EClass STEM_TIME = eINSTANCE.getSTEMTime();
+
+ /**
+ * The meta object literal for the '<em><b>Time</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute STEM_TIME__TIME = eINSTANCE.getSTEMTime_Time();
+
+ /**
+ * The meta object literal for the '{@link java.lang.Comparable <em>Comparable</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.Comparable
+ * @see org.eclipse.stem.core.model.impl.ModelPackageImpl#getComparable()
+ * @generated
+ */
+ EClass COMPARABLE = eINSTANCE.getComparable();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.model.impl.IntegrationDecoratorImpl <em>Integration Decorator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.model.impl.IntegrationDecoratorImpl
+ * @see org.eclipse.stem.core.model.impl.ModelPackageImpl#getIntegrationDecorator()
+ * @generated
+ */
+ EClass INTEGRATION_DECORATOR = eINSTANCE.getIntegrationDecorator();
+
+ }
+
+} //ModelPackage
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/NodeDecorator.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/NodeDecorator.java
new file mode 100644
index 000000000..673a6a2c8
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/NodeDecorator.java
@@ -0,0 +1,30 @@
+// NodeDecorator.java
+package org.eclipse.stem.core.model;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+/**
+ * An <code>GraphDecorator</code> is a {@link Decorator} that specifically
+ * modifies {@link org.eclipse.stem.core.graph.Edge}s and their
+ * {@link org.eclipse.stem.core.graph.Label}s.
+ *
+ * @see org.eclipse.stem.core.graph.Node
+ * @see org.eclipse.stem.core.graph.DynamicLabel
+ * @see EdgeDecorator
+ * @see GraphDecorator
+ * @see org.eclipse.stem.core.sequencer.Sequencer
+ *
+ * @model
+ */
+public interface NodeDecorator extends Decorator {
+ // Nothing yet
+} // NodeDecorator
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/STEMTime.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/STEMTime.java
new file mode 100644
index 000000000..b2cabf1b5
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/STEMTime.java
@@ -0,0 +1,88 @@
+// STEMTime.java
+package org.eclipse.stem.core.model;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import java.lang.Comparable;
+import java.util.Date;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * A <code>STEMTime</code> instance represents a point in time in in the STEM
+ * system.
+ *
+ * @see org.eclipse.stem.core.sequencer.Sequencer
+ *
+ * @model
+ */
+public interface STEMTime extends EObject, Comparable<STEMTime> {
+
+ /**
+ * This is an enumeration of different common time units with their duration
+ * in milliseconds.
+ */
+ enum Units {
+ MILLISECOND(1),
+ SECOND(1000),
+ MINUTE(60*1000),
+ HOUR(60*60*1000),
+ DAY(24*60*60*1000),
+ WEEK(7*24*60*60*1000),
+ YEAR(52*7*24*60*60*1000);
+ private int duration;
+
+ private Units(int duration) {
+ this.duration = duration;
+ }
+
+ /**
+ * @return the number of milliseconds that is equivalent to this time unit.
+ */
+ public long getMilliseconds() {
+ return duration;
+ }
+ }; // Units
+
+ /**
+ * @return the time
+ * @model
+ */
+ Date getTime();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.model.STEMTime#getTime <em>Time</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @param value the new value of the '<em>Time</em>' attribute.
+ * @see #getTime()
+ * @generated
+ */
+ void setTime(Date value);
+
+ /**
+ * @param timeIncrement
+ * the number of milliseconds the new STEMTime is in the future.
+ * @return a new STEMTime that is a specified number of milliseconds from
+ * the current time.
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ STEMTime addIncrement(long timeIncrement);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ boolean valueEquals(STEMTime obj);
+
+} // STEMTime
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/DecoratorImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/DecoratorImpl.java
new file mode 100644
index 000000000..ba11e1764
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/DecoratorImpl.java
@@ -0,0 +1,488 @@
+package org.eclipse.stem.core.model.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.stem.core.CorePlugin;
+import org.eclipse.stem.core.common.impl.IdentifiableImpl;
+import org.eclipse.stem.core.graph.DynamicLabel;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.Label;
+import org.eclipse.stem.core.model.Decorator;
+import org.eclipse.stem.core.model.Model;
+import org.eclipse.stem.core.model.ModelPackage;
+import org.eclipse.stem.core.model.STEMTime;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Decorator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.model.impl.DecoratorImpl#getLabelsToUpdate <em>Labels To Update</em>}</li>
+ * <li>{@link org.eclipse.stem.core.model.impl.DecoratorImpl#getGraph <em>Graph</em>}</li>
+ * <li>{@link org.eclipse.stem.core.model.impl.DecoratorImpl#isEnabled <em>Enabled</em>}</li>
+ * <li>{@link org.eclipse.stem.core.model.impl.DecoratorImpl#isGraphDecorated <em>Graph Decorated</em>}</li>
+ * <li>{@link org.eclipse.stem.core.model.impl.DecoratorImpl#getProgress <em>Progress</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DecoratorImpl extends IdentifiableImpl implements Decorator {
+ /**
+ * The cached value of the '{@link #getLabelsToUpdate() <em>Labels To Update</em>}' reference list.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getLabelsToUpdate()
+ * @generated
+ * @ordered
+ */
+ protected EList<DynamicLabel> labelsToUpdate;
+
+ /**
+ * The default value of the '{@link #isEnabled() <em>Enabled</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isEnabled()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean ENABLED_EDEFAULT = true;
+ /**
+ * The cached value of the '{@link #isEnabled() <em>Enabled</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isEnabled()
+ * @generated
+ * @ordered
+ */
+ protected boolean enabled = ENABLED_EDEFAULT;
+ /**
+ * The default value of the '{@link #isGraphDecorated() <em>Graph Decorated</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isGraphDecorated()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean GRAPH_DECORATED_EDEFAULT = false;
+ /**
+ * The cached value of the '{@link #isGraphDecorated() <em>Graph Decorated</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isGraphDecorated()
+ * @generated
+ * @ordered
+ */
+ protected boolean graphDecorated = GRAPH_DECORATED_EDEFAULT;
+
+
+ /**
+ * The default value of the '{@link #getProgress() <em>Progress</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getProgress()
+ * @generated
+ * @ordered
+ */
+ protected static final double PROGRESS_EDEFAULT = 0.0;
+
+ /**
+ * The cached value of the '{@link #getProgress() <em>Progress</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getProgress()
+ * @generated
+ * @ordered
+ */
+ protected double progress = PROGRESS_EDEFAULT;
+
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ protected DecoratorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ModelPackage.Literals.DECORATOR;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<DynamicLabel> getLabelsToUpdate() {
+ if (labelsToUpdate == null) {
+ labelsToUpdate = new EObjectWithInverseResolvingEList<DynamicLabel>(DynamicLabel.class, this, ModelPackage.DECORATOR__LABELS_TO_UPDATE, GraphPackage.DYNAMIC_LABEL__DECORATOR);
+ }
+ return labelsToUpdate;
+ }
+
+
+
+ /**
+ * Prepare the decorator. A subclass needs to override this method if
+ * pre-processing steps are necessary before the decorator is being used
+ * @generated NOT
+ */
+ public void prepare(Model model, STEMTime time) {
+ // Nothing to do
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Graph getGraph() {
+ if (eContainerFeatureID() != ModelPackage.DECORATOR__GRAPH) return null;
+ return (Graph)eContainer();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetGraph(Graph newGraph, NotificationChain msgs) {
+ msgs = eBasicSetContainer((InternalEObject)newGraph, ModelPackage.DECORATOR__GRAPH, msgs);
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setGraph(Graph newGraph) {
+ if (newGraph != eInternalContainer() || (eContainerFeatureID() != ModelPackage.DECORATOR__GRAPH && newGraph != null)) {
+ if (EcoreUtil.isAncestor(this, newGraph))
+ throw new IllegalArgumentException("Recursive containment not allowed for " + toString()); //$NON-NLS-1$
+ NotificationChain msgs = null;
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ if (newGraph != null)
+ msgs = ((InternalEObject)newGraph).eInverseAdd(this, GraphPackage.GRAPH__DECORATORS, Graph.class, msgs);
+ msgs = basicSetGraph(newGraph, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModelPackage.DECORATOR__GRAPH, newGraph, newGraph));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isEnabled() {
+ return enabled;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setEnabled(boolean newEnabled) {
+ boolean oldEnabled = enabled;
+ enabled = newEnabled;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModelPackage.DECORATOR__ENABLED, oldEnabled, enabled));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isGraphDecorated() {
+ return graphDecorated;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setGraphDecorated(boolean newGraphDecorated) {
+ boolean oldGraphDecorated = graphDecorated;
+ graphDecorated = newGraphDecorated;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModelPackage.DECORATOR__GRAPH_DECORATED, oldGraphDecorated, graphDecorated));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public double getProgress() {
+ return progress;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setProgress(double newProgress) {
+ double oldProgress = progress;
+ progress = newProgress;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModelPackage.DECORATOR__PROGRESS, oldProgress, progress));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean decorateGraph(STEMTime time) {
+ CorePlugin.logError("decorateGraph() not implemented in \""+
+ getDublinCore().getTitle()
+ + "\" of type \"" + this.getClass().getCanonicalName()
+ + "\"", null);
+ throw new UnsupportedOperationException();
+ }
+
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void updateLabels(STEMTime time, long timerPeriod, int cycle) {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public void resetLabels() {
+ setEnabled(ENABLED_EDEFAULT);
+ setGraphDecorated(GRAPH_DECORATED_EDEFAULT);
+ for (final Iterator<DynamicLabel> labelIter = getLabelsToUpdate()
+ .iterator(); labelIter.hasNext();) {
+ final DynamicLabel dynamicLabel = labelIter.next();
+ dynamicLabel.reset();
+ }
+ } // resetLabels
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case ModelPackage.DECORATOR__LABELS_TO_UPDATE:
+ return ((InternalEList<InternalEObject>)(InternalEList<?>)getLabelsToUpdate()).basicAdd(otherEnd, msgs);
+ case ModelPackage.DECORATOR__GRAPH:
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ return basicSetGraph((Graph)otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case ModelPackage.DECORATOR__LABELS_TO_UPDATE:
+ return ((InternalEList<?>)getLabelsToUpdate()).basicRemove(otherEnd, msgs);
+ case ModelPackage.DECORATOR__GRAPH:
+ return basicSetGraph(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
+ switch (eContainerFeatureID()) {
+ case ModelPackage.DECORATOR__GRAPH:
+ return eInternalContainer().eInverseRemove(this, GraphPackage.GRAPH__DECORATORS, Graph.class, msgs);
+ }
+ return super.eBasicRemoveFromContainerFeature(msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ModelPackage.DECORATOR__LABELS_TO_UPDATE:
+ return getLabelsToUpdate();
+ case ModelPackage.DECORATOR__GRAPH:
+ return getGraph();
+ case ModelPackage.DECORATOR__ENABLED:
+ return isEnabled();
+ case ModelPackage.DECORATOR__GRAPH_DECORATED:
+ return isGraphDecorated();
+ case ModelPackage.DECORATOR__PROGRESS:
+ return getProgress();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ModelPackage.DECORATOR__LABELS_TO_UPDATE:
+ getLabelsToUpdate().clear();
+ getLabelsToUpdate().addAll((Collection<? extends DynamicLabel>)newValue);
+ return;
+ case ModelPackage.DECORATOR__GRAPH:
+ setGraph((Graph)newValue);
+ return;
+ case ModelPackage.DECORATOR__ENABLED:
+ setEnabled((Boolean)newValue);
+ return;
+ case ModelPackage.DECORATOR__GRAPH_DECORATED:
+ setGraphDecorated((Boolean)newValue);
+ return;
+ case ModelPackage.DECORATOR__PROGRESS:
+ setProgress((Double)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ModelPackage.DECORATOR__LABELS_TO_UPDATE:
+ getLabelsToUpdate().clear();
+ return;
+ case ModelPackage.DECORATOR__GRAPH:
+ setGraph((Graph)null);
+ return;
+ case ModelPackage.DECORATOR__ENABLED:
+ setEnabled(ENABLED_EDEFAULT);
+ return;
+ case ModelPackage.DECORATOR__GRAPH_DECORATED:
+ setGraphDecorated(GRAPH_DECORATED_EDEFAULT);
+ return;
+ case ModelPackage.DECORATOR__PROGRESS:
+ setProgress(PROGRESS_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ModelPackage.DECORATOR__LABELS_TO_UPDATE:
+ return labelsToUpdate != null && !labelsToUpdate.isEmpty();
+ case ModelPackage.DECORATOR__GRAPH:
+ return getGraph() != null;
+ case ModelPackage.DECORATOR__ENABLED:
+ return enabled != ENABLED_EDEFAULT;
+ case ModelPackage.DECORATOR__GRAPH_DECORATED:
+ return graphDecorated != GRAPH_DECORATED_EDEFAULT;
+ case ModelPackage.DECORATOR__PROGRESS:
+ return progress != PROGRESS_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (enabled: "); //$NON-NLS-1$
+ result.append(enabled);
+ result.append(", graphDecorated: "); //$NON-NLS-1$
+ result.append(graphDecorated);
+ result.append(", progress: "); //$NON-NLS-1$
+ result.append(progress);
+ result.append(')');
+ return result.toString();
+ }
+
+ /**
+ * @see org.eclipse.stem.common.impl.IdentifiableImpl#sane()
+ * @generated NOT
+ */
+ @Override
+ public boolean sane() {
+ boolean retValue = super.sane();
+ for (final Iterator<DynamicLabel> labelIter = getLabelsToUpdate().iterator(); labelIter
+ .hasNext()
+ && retValue;) {
+ final Label label = labelIter.next();
+
+ retValue = retValue && label.sane();
+ assert retValue;
+ }
+
+ return retValue;
+ } // sane
+} // DecoratorImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/EdgeDecoratorImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/EdgeDecoratorImpl.java
new file mode 100644
index 000000000..5aca58ffd
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/EdgeDecoratorImpl.java
@@ -0,0 +1,55 @@
+package org.eclipse.stem.core.model.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.model.EdgeDecorator;
+import org.eclipse.stem.core.model.ModelPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Edge Decorator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class EdgeDecoratorImpl extends DecoratorImpl implements EdgeDecorator {
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ protected EdgeDecoratorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ModelPackage.Literals.EDGE_DECORATOR;
+ }
+
+ /**
+ * @see org.eclipse.stem.model.impl.DecoratorImpl#sane()
+ * @generated NOT
+ */
+ @Override
+ public boolean sane() {
+ boolean retValue = super.sane();
+
+ return retValue;
+ } // sane
+
+} // EdgeDecoratorImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/GraphDecoratorImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/GraphDecoratorImpl.java
new file mode 100644
index 000000000..4fb0fef4f
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/GraphDecoratorImpl.java
@@ -0,0 +1,54 @@
+package org.eclipse.stem.core.model.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.model.GraphDecorator;
+import org.eclipse.stem.core.model.ModelPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Graph Decorator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class GraphDecoratorImpl extends DecoratorImpl implements GraphDecorator {
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ protected GraphDecoratorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ModelPackage.Literals.GRAPH_DECORATOR;
+ }
+
+ /**
+ * @see org.eclipse.stem.model.impl.DecoratorImpl#sane()
+ * @generated NOT
+ */
+ @Override
+ public boolean sane() {
+ boolean retValue = super.sane();
+
+ return retValue;
+ } // sane
+} // GraphDecoratorImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/IntegrationDecoratorImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/IntegrationDecoratorImpl.java
new file mode 100644
index 000000000..c2b3ce30a
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/IntegrationDecoratorImpl.java
@@ -0,0 +1,93 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.core.model.impl;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.stem.core.graph.DynamicLabel;
+import org.eclipse.stem.core.graph.LabelValue;
+
+import org.eclipse.stem.core.model.IntegrationDecorator;
+import org.eclipse.stem.core.model.ModelPackage;
+import org.eclipse.stem.core.model.STEMTime;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Integration Decorator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class IntegrationDecoratorImpl extends NodeDecoratorImpl implements IntegrationDecorator {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IntegrationDecoratorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ModelPackage.Literals.INTEGRATION_DECORATOR;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void applyExternalDeltas(STEMTime time, long timeDelta, EList<DynamicLabel> labels) {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void calculateDelta(STEMTime time, long timeDelta, EList<DynamicLabel> labels) {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void doModelSpecificAdjustments(LabelValue label) {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isDeterministic() {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+} //IntegrationDecoratorImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/ModelFactoryImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/ModelFactoryImpl.java
new file mode 100644
index 000000000..392eb235c
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/ModelFactoryImpl.java
@@ -0,0 +1,183 @@
+package org.eclipse.stem.core.model.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.stem.core.model.Decorator;
+import org.eclipse.stem.core.model.EdgeDecorator;
+import org.eclipse.stem.core.model.GraphDecorator;
+import org.eclipse.stem.core.model.Model;
+import org.eclipse.stem.core.model.ModelFactory;
+import org.eclipse.stem.core.model.ModelPackage;
+import org.eclipse.stem.core.model.NodeDecorator;
+import org.eclipse.stem.core.model.STEMTime;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ModelFactoryImpl extends EFactoryImpl implements ModelFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static ModelFactory init() {
+ try {
+ ModelFactory theModelFactory = (ModelFactory)EPackage.Registry.INSTANCE.getEFactory("http:///org/eclipse/stem/core/model.ecore"); //$NON-NLS-1$
+ if (theModelFactory != null) {
+ return theModelFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new ModelFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ModelFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case ModelPackage.DECORATOR: return createDecorator();
+ case ModelPackage.EDGE_DECORATOR: return createEdgeDecorator();
+ case ModelPackage.GRAPH_DECORATOR: return createGraphDecorator();
+ case ModelPackage.MODEL: return createModel();
+ case ModelPackage.NODE_DECORATOR: return createNodeDecorator();
+ case ModelPackage.STEM_TIME: return createSTEMTime();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Decorator createDecorator() {
+ DecoratorImpl decorator = new DecoratorImpl();
+ return decorator;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EdgeDecorator createEdgeDecorator() {
+ EdgeDecoratorImpl edgeDecorator = new EdgeDecoratorImpl();
+ return edgeDecorator;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public GraphDecorator createGraphDecorator() {
+ GraphDecoratorImpl graphDecorator = new GraphDecoratorImpl();
+ return graphDecorator;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Model createModel() {
+ ModelImpl model = new ModelImpl();
+ return model;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NodeDecorator createNodeDecorator() {
+ NodeDecoratorImpl nodeDecorator = new NodeDecoratorImpl();
+ return nodeDecorator;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public STEMTime createSTEMTime() {
+ STEMTimeImpl stemTime = new STEMTimeImpl();
+ return stemTime;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public URI createURIFromString(EDataType eDataType, String initialValue) {
+ return URI.createURI(initialValue);
+ } // createURIFromString
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public String convertURIToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue.toString();
+ } // convertURIToString
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ModelPackage getModelPackage() {
+ return (ModelPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static ModelPackage getPackage() {
+ return ModelPackage.eINSTANCE;
+ }
+
+} //ModelFactoryImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/ModelImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/ModelImpl.java
new file mode 100644
index 000000000..d9f0cd15f
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/ModelImpl.java
@@ -0,0 +1,661 @@
+package org.eclipse.stem.core.model.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2006, 2008 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
+ *******************************************************************************/
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.stem.core.STEMURI;
+import org.eclipse.stem.core.Utility;
+import org.eclipse.stem.core.common.DublinCore;
+import org.eclipse.stem.core.common.IdentifiableFilter;
+import org.eclipse.stem.core.common.impl.IdentifiableFilterImpl;
+import org.eclipse.stem.core.common.impl.IdentifiableImpl;
+import org.eclipse.stem.core.graph.Edge;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.graph.GraphFactory;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.Node;
+import org.eclipse.stem.core.graph.NodeLabel;
+import org.eclipse.stem.core.graph.UnresolvedIdentifiable;
+import org.eclipse.stem.core.model.Decorator;
+import org.eclipse.stem.core.model.EdgeDecorator;
+import org.eclipse.stem.core.model.GraphDecorator;
+import org.eclipse.stem.core.model.Model;
+import org.eclipse.stem.core.model.ModelPackage;
+import org.eclipse.stem.core.model.NodeDecorator;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.scenario.impl.ScenarioImpl;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Model</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.model.impl.ModelImpl#getModels <em>Models</em>}</li>
+ * <li>{@link org.eclipse.stem.core.model.impl.ModelImpl#getGraphs <em>Graphs</em>}</li>
+ * <li>{@link org.eclipse.stem.core.model.impl.ModelImpl#getGraphDecorators <em>Graph Decorators</em>}</li>
+ * <li>{@link org.eclipse.stem.core.model.impl.ModelImpl#getNodeDecorators <em>Node Decorators</em>}</li>
+ * <li>{@link org.eclipse.stem.core.model.impl.ModelImpl#getEdgeDecorators <em>Edge Decorators</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ModelImpl extends IdentifiableImpl implements Model {
+
+
+ /**
+ * The cached value of the '{@link #getModels() <em>Models</em>}' reference list.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getModels()
+ * @generated
+ * @ordered
+ */
+ protected EList<Model> models;
+
+ /**
+ * The cached value of the '{@link #getGraphs() <em>Graphs</em>}' reference list.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getGraphs()
+ * @generated
+ * @ordered
+ */
+ protected EList<Graph> graphs;
+
+ /**
+ * The cached value of the '{@link #getGraphDecorators() <em>Graph Decorators</em>}' reference list.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getGraphDecorators()
+ * @generated
+ * @ordered
+ */
+ protected EList<GraphDecorator> graphDecorators;
+
+ /**
+ * The cached value of the '{@link #getNodeDecorators() <em>Node Decorators</em>}' reference list.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getNodeDecorators()
+ * @generated
+ * @ordered
+ */
+ protected EList<NodeDecorator> nodeDecorators;
+
+ /**
+ * The cached value of the '{@link #getEdgeDecorators() <em>Edge Decorators</em>}' reference list.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getEdgeDecorators()
+ * @generated
+ * @ordered
+ */
+ protected EList<EdgeDecorator> edgeDecorators;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ protected ModelImpl() {
+ super();
+ setURI(STEMURI.createURI(URI_TYPE_MODEL_SEGMENT + "/"
+ + STEMURI.generateUniquePart()));
+ setTypeURI(STEMURI.MODEL_TYPE_URI);
+ } // ModelImpl
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ModelPackage.Literals.MODEL;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Model> getModels() {
+ if (models == null) {
+ models = new EObjectResolvingEList<Model>(Model.class, this, ModelPackage.MODEL__MODELS);
+ }
+ return models;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Graph> getGraphs() {
+ if (graphs == null) {
+ graphs = new EObjectResolvingEList<Graph>(Graph.class, this, ModelPackage.MODEL__GRAPHS);
+ }
+ return graphs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<GraphDecorator> getGraphDecorators() {
+ if (graphDecorators == null) {
+ graphDecorators = new EObjectResolvingEList<GraphDecorator>(GraphDecorator.class, this, ModelPackage.MODEL__GRAPH_DECORATORS);
+ }
+ return graphDecorators;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<NodeDecorator> getNodeDecorators() {
+ if (nodeDecorators == null) {
+ nodeDecorators = new EObjectResolvingEList<NodeDecorator>(NodeDecorator.class, this, ModelPackage.MODEL__NODE_DECORATORS);
+ }
+ return nodeDecorators;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<EdgeDecorator> getEdgeDecorators() {
+ if (edgeDecorators == null) {
+ edgeDecorators = new EObjectResolvingEList<EdgeDecorator>(EdgeDecorator.class, this, ModelPackage.MODEL__EDGE_DECORATORS);
+ }
+ return edgeDecorators;
+ }
+
+ /**
+ *
+ *
+ * This method combines all of the graph "fragments" together to make a
+ * graph suitable for simulation.
+ *
+ *
+ *
+ * @generated NOT
+ */
+ public Graph getCanonicalGraph(final URI uri, IdentifiableFilter parentFilter, STEMTime time) {
+ IdentifiableFilterImpl _parentfilter = (IdentifiableFilterImpl)parentFilter;
+ final Graph retValue = GraphFactory.eINSTANCE.createGraph();
+ retValue.setURI(uri);
+
+ IdentifiableFilterImpl myFilter = new IdentifiableFilterImpl(this.getDublinCore().getCoverage());
+ if(parentFilter != null)myFilter.restrict(_parentfilter);
+
+ // Basically, we iterate through each of the models getting their
+ // canonical graphs and then merge them together. Then we add in the
+ // graphs of this model and finally "resolve" all the "dangling" links
+
+ for (final Iterator<Model> modelIter = getModels().iterator(); modelIter
+ .hasNext();) {
+ final Model model = (Model) modelIter.next();
+ retValue.addGraph(model.getCanonicalGraph(uri, myFilter, time), myFilter);
+ } // for models
+
+ // Now do the graphs that are part of this model
+ for (final Iterator<Graph> graphIter = getGraphs().iterator(); graphIter
+ .hasNext();) {
+ final Graph graph = (Graph) graphIter.next();
+
+ final Graph copyGraph = (Graph) EcoreUtil.copy(graph);
+ // final Graph graph = (Graph) graphIter.next();
+ // final Copier copier = new Copier();
+ // final Graph copyGraph = (Graph) copier.copy(graph);
+ // copier.copyReferences();
+ retValue.addGraph(copyGraph, myFilter);
+ } // for graphs
+
+ // Hook up the Identifiables with other ones they reference via URI's,
+ // if any URI are unresolved, then instances of UnresolvedIdentifiables
+ // will be added to the graph's collection of "unresolved
+ // identifiables".
+ resolveURIs(this, retValue);
+
+ invokeNodeDecorators(retValue, time);
+ invokeEdgeDecorators(retValue, time);
+ invokeGraphDecorators(retValue, time);
+
+ // Update the Dublin Core for this graph
+ final DublinCore dc = retValue.getDublinCore();
+ dc.populate();
+ dc.setFormat(GraphPackage.eNS_URI);
+
+ return retValue;
+ } // getCanonicalGraph
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void prepare(STEMTime time) {
+ // Iterate submodels and call prepare
+ for (final Iterator<Model> modelIter = getModels().iterator(); modelIter
+ .hasNext();) {
+ final Model model = (Model) modelIter.next();
+ model.prepare(time);
+ } // for models
+
+ ArrayList<NodeDecorator>list = (ArrayList<NodeDecorator>)EcoreUtil.copyAll(getNodeDecorators());
+ for (final Iterator<NodeDecorator> nodeDecoratorIter = list.iterator(); nodeDecoratorIter
+ .hasNext();) {
+ final NodeDecorator nodeDecorator = (NodeDecorator) nodeDecoratorIter.next();
+ nodeDecorator.prepare(this, time);
+ }
+
+ ArrayList<EdgeDecorator>list2 = (ArrayList<EdgeDecorator>)EcoreUtil.copyAll(getEdgeDecorators());
+ for (final Iterator<EdgeDecorator> edgeDecoratorIter = list2.iterator(); edgeDecoratorIter
+ .hasNext();) {
+ final EdgeDecorator edgeDecorator = (EdgeDecorator) edgeDecoratorIter.next();
+ edgeDecorator.prepare(this, time);
+ }
+
+ ArrayList<GraphDecorator>list3 = (ArrayList<GraphDecorator>)EcoreUtil.copyAll(getGraphDecorators());
+ for (final Iterator<GraphDecorator> graphDecoratorIter = list3.iterator(); graphDecoratorIter
+ .hasNext();) {
+ final GraphDecorator graphDecorator = (GraphDecorator) graphDecoratorIter.next();
+ graphDecorator.prepare(this, time);
+ }
+
+ }
+
+ /**
+ * Process all of the components of a graph and link up all unresolved URI
+ * references in the graph.
+ *
+ * @param model
+ * the model that contains the graph
+ * @param graph
+ * a graph
+ *
+ * @generated NOT
+ */
+ private void resolveURIs(final Model model, final Graph graph) {
+
+ // TODO optimize by keeping a list of unresolved edges
+
+ // Go through each edge in the graph and try to hook it up with the
+ // nodes it references
+ for (final Iterator<Edge> edgeIter = graph.getEdges().values().iterator(); edgeIter
+ .hasNext();) {
+ final Edge edge = (Edge) edgeIter.next();
+
+ // Does Node A of this edge need resolving?
+ if (!edge.eIsSet(GraphPackage.Literals.EDGE__A)) {
+ // Yes
+ final Node nodeA = graph.getNode(edge.getNodeAURI());
+ // Did we find it?
+ if (nodeA != null) {
+ // Yes
+ edge.setA(nodeA);
+ nodeA.getEdges().add(edge);
+ } else {
+ // No
+ final UnresolvedIdentifiable ui = GraphFactory.eINSTANCE
+ .createUnresolvedIdentifiable();
+ ui.setModel(model);
+ ui.setGraph(graph);
+ ui.setUnresolvedURI(edge.getNodeAURI());
+ ui.setIdentifiable(edge);
+ ui.setFieldName("NODE_A");
+ if(ScenarioImpl.reportDanglingAirTransportEdges ||
+ !edge.getURI().toString().contains("/pipetransport"))
+ graph.getUnresolvedIdentifiables().add(ui);
+ } // else
+ } // if nodeA
+
+ // Does Node B of this edge need resolving?
+ if (!edge.eIsSet(GraphPackage.Literals.EDGE__B)
+ && edge.eIsSet(GraphPackage.Literals.EDGE__A)) {
+ // Yes
+ final Node nodeB = graph.getNode(edge.getNodeBURI());
+ // Did we find it?
+ if (nodeB != null) {
+ // Yes
+ edge.setB(nodeB);
+ nodeB.getEdges().add(edge);
+ } else {
+ // No
+ // Was Node A found though?
+ if (edge.getA() != null) {
+ // Yes
+ // We remove our link with it then so that we don't have
+ // a dangling edge in the graph
+ final Node nodeA = edge.getA();
+ edge.setA(null);
+ nodeA.getEdges().remove(edge);
+ } // if Node A
+
+ final UnresolvedIdentifiable ui = GraphFactory.eINSTANCE
+ .createUnresolvedIdentifiable();
+ ui.setModel(model);
+ ui.setGraph(graph);
+ ui.setUnresolvedURI(edge.getNodeBURI());
+ ui.setIdentifiable(edge);
+ ui.setFieldName("NODE_B");
+ if(ScenarioImpl.reportDanglingAirTransportEdges ||
+ !edge.getURI().toString().contains("/pipetransport"))
+ graph.getUnresolvedIdentifiables().add(ui);
+ } // else
+ } // if nodeB
+ } // for each edge
+
+ // Now do the labels
+ for (final Iterator<NodeLabel> labelIter = graph.getNodeLabels().values()
+ .iterator(); labelIter.hasNext();) {
+ final NodeLabel label = (NodeLabel) labelIter.next();
+ // Can you find the Node for this label?
+ final Node node = graph.getNode(label
+ .getURIOfIdentifiableToBeLabeled());
+ if (node != null) {
+ // Yes
+ node.getLabels().add(label);
+ } else {
+ // No
+ final UnresolvedIdentifiable ui = GraphFactory.eINSTANCE
+ .createUnresolvedIdentifiable();
+ ui.setModel(model);
+ ui.setGraph(graph);
+ ui.setUnresolvedURI(label.getURIOfIdentifiableToBeLabeled());
+ ui.setIdentifiable(label);
+ ui.setFieldName("Node");
+ graph.getUnresolvedIdentifiables().add(ui);
+ }
+ } // for
+
+ } // resolveURIs
+
+ /**
+ * Iterate through each node decorator and give it a chance to decorate the
+ * nodes of the graph.
+ *
+ * @param graph
+ * the {@link Graph} to decorate
+ * @param time STEM time
+ */
+ private void invokeNodeDecorators(Graph graph, STEMTime time) {
+ ArrayList<Decorator>failed = null;
+
+ // Stefan fix. We add the decorators to the graph first since we need to know
+ // about what decorators are available when we determine how to decorate when
+ // there are overlapping sets of nodes (e.g. for population models)
+ for (final Iterator<NodeDecorator> nodeDecoratorIter = getNodeDecorators().iterator(); nodeDecoratorIter
+ .hasNext();) {
+ final NodeDecorator nodeDecorator = (NodeDecorator) nodeDecoratorIter
+ .next();
+ final Decorator canonicalDecorator = (Decorator) EcoreUtil
+ .copy(nodeDecorator);
+ graph.getDecorators().add(canonicalDecorator);
+ }
+
+ // Here the code is confusing and we need to be clear on which graph the decorator is
+ // decorating. It is actually the canonical graph since if you look in any of the decorators
+ // it's using the method getGraph() to determine which graph to decorator. However,
+ // getGraph() simply returns the eContainer(), but that is correct since the decorators
+ // are now inside the passed in graph object (the canonical graph).
+ // Dang who wrote this code!!!!
+
+ for (Decorator canonicalDecorator:graph.getDecorators()) {
+ boolean success = canonicalDecorator.decorateGraph(time);
+ if(!success) {
+ if(failed == null)failed = new ArrayList<Decorator>();
+ failed.add(canonicalDecorator);
+ } else canonicalDecorator.setGraphDecorated(true);
+ } // for
+
+ // Redo failed decorators. This can happen due to dependencies, for instance a population model must be allowed to decorate
+ // before a disease model.
+ // ASSUMING THE USER HAS BUILD THE MODEL WITH THE CORRECT HIERARCHY, THIS WILL NEVER HAPPEN
+
+ if(failed!=null) {
+ // We should log a warning here that we were forced to reinit. The user should check the model nesting
+ Utility.displayScenarioCompositionWarning(Utility.NESTING_WARNING);
+ for(Decorator d:failed) {
+ d.decorateGraph(time);
+ d.setGraphDecorated(true);
+ }
+ }
+ } // invokeNodeDecorators
+
+ /**
+ * Iterate through each edge decorator and give it a chance to decorate the
+ * edges of the graph.
+ *
+ * @param graph
+ * the {@link Graph} to decorate
+ * @param time
+ */
+ private void invokeEdgeDecorators(final Graph graph, STEMTime time) {
+ for (final Iterator<EdgeDecorator> edgeDecoratorIter = getEdgeDecorators().iterator(); edgeDecoratorIter
+ .hasNext();) {
+ final EdgeDecorator edgeDecorator = (EdgeDecorator) edgeDecoratorIter
+ .next();
+ final Decorator canonicalDecorator = (Decorator) EcoreUtil
+ .copy(edgeDecorator);
+ graph.getDecorators().add(canonicalDecorator);
+ canonicalDecorator.decorateGraph(time);
+ } // for
+ } // invokeEdgeDecorators
+
+ /**
+ * Iterate through each graph decorator and give it a chance to decorate the
+ * graph itself.
+ *
+ * @param graph
+ * the {@link Graph} to decorate
+ * @param time
+ */
+ private void invokeGraphDecorators(Graph graph, STEMTime time) {
+ for (final Iterator<GraphDecorator> graphDecoratorIter = getGraphDecorators()
+ .iterator(); graphDecoratorIter.hasNext();) {
+ final GraphDecorator graphDecorator = (GraphDecorator) graphDecoratorIter
+ .next();
+ final Decorator canonicalDecorator = (Decorator) EcoreUtil
+ .copy(graphDecorator);
+ graph.getDecorators().add(canonicalDecorator);
+ canonicalDecorator.decorateGraph(time);
+ } // for
+
+ } // invokeGraphDecorators
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ModelPackage.MODEL__MODELS:
+ return getModels();
+ case ModelPackage.MODEL__GRAPHS:
+ return getGraphs();
+ case ModelPackage.MODEL__GRAPH_DECORATORS:
+ return getGraphDecorators();
+ case ModelPackage.MODEL__NODE_DECORATORS:
+ return getNodeDecorators();
+ case ModelPackage.MODEL__EDGE_DECORATORS:
+ return getEdgeDecorators();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ModelPackage.MODEL__MODELS:
+ getModels().clear();
+ getModels().addAll((Collection<? extends Model>)newValue);
+ return;
+ case ModelPackage.MODEL__GRAPHS:
+ getGraphs().clear();
+ getGraphs().addAll((Collection<? extends Graph>)newValue);
+ return;
+ case ModelPackage.MODEL__GRAPH_DECORATORS:
+ getGraphDecorators().clear();
+ getGraphDecorators().addAll((Collection<? extends GraphDecorator>)newValue);
+ return;
+ case ModelPackage.MODEL__NODE_DECORATORS:
+ getNodeDecorators().clear();
+ getNodeDecorators().addAll((Collection<? extends NodeDecorator>)newValue);
+ return;
+ case ModelPackage.MODEL__EDGE_DECORATORS:
+ getEdgeDecorators().clear();
+ getEdgeDecorators().addAll((Collection<? extends EdgeDecorator>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ModelPackage.MODEL__MODELS:
+ getModels().clear();
+ return;
+ case ModelPackage.MODEL__GRAPHS:
+ getGraphs().clear();
+ return;
+ case ModelPackage.MODEL__GRAPH_DECORATORS:
+ getGraphDecorators().clear();
+ return;
+ case ModelPackage.MODEL__NODE_DECORATORS:
+ getNodeDecorators().clear();
+ return;
+ case ModelPackage.MODEL__EDGE_DECORATORS:
+ getEdgeDecorators().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ModelPackage.MODEL__MODELS:
+ return models != null && !models.isEmpty();
+ case ModelPackage.MODEL__GRAPHS:
+ return graphs != null && !graphs.isEmpty();
+ case ModelPackage.MODEL__GRAPH_DECORATORS:
+ return graphDecorators != null && !graphDecorators.isEmpty();
+ case ModelPackage.MODEL__NODE_DECORATORS:
+ return nodeDecorators != null && !nodeDecorators.isEmpty();
+ case ModelPackage.MODEL__EDGE_DECORATORS:
+ return edgeDecorators != null && !edgeDecorators.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * @see org.eclipse.stem.common.impl.IdentifiableImpl#toString()
+ */
+ @Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder("\"" + getURI().lastSegment()
+ + "\"\n");
+
+ sb.append(getModels() != null ? getModels().size() + " models\n" : "");
+ sb.append(getGraphs() != null ? getGraphs().size() + " graphs\n" : "");
+ sb.append(getGraphDecorators() != null ? getGraphDecorators().size()
+ + " graph decorators\n" : "");
+ sb.append(getNodeDecorators() != null ? getNodeDecorators().size()
+ + " node decorators\n" : "");
+ sb.append(getEdgeDecorators() != null ? getEdgeDecorators().size()
+ + "edge decorators\n" : "");
+
+ return sb.toString();
+ } // toString
+
+ /**
+ * @see org.eclipse.stem.common.impl.IdentifiableImpl#sane()
+ * @generated NOT
+ */
+ @Override
+ public boolean sane() {
+ boolean retValue = super.sane();
+
+ if (retValue && getModels() != null) {
+ for (final Iterator<Model> modelIter = getModels().iterator(); modelIter
+ .hasNext()
+ && retValue;) {
+ final Model model = (Model) modelIter.next();
+ retValue = retValue && model.sane();
+ assert retValue;
+ } // for each model
+ }
+
+ if (retValue && getGraphs() != null) {
+ for (final Iterator<Graph> graphIter = getGraphs().iterator(); graphIter
+ .hasNext()
+ && retValue;) {
+ final Graph graph = (Graph) graphIter.next();
+ retValue = retValue && graph.sane();
+ assert retValue;
+ } // for each graph
+ }
+
+ if (retValue && getGraphDecorators() != null) {
+ for (final Iterator<GraphDecorator> graphDecoratorIter = getGraphDecorators().iterator(); graphDecoratorIter
+ .hasNext()
+ && retValue;) {
+ final GraphDecorator graphDecorator = (GraphDecorator) graphDecoratorIter
+ .next();
+ retValue = retValue && graphDecorator.sane();
+ assert retValue;
+ } // for each graphDecorator
+ } // if
+
+ if (retValue && getNodeDecorators() != null) {
+ for (Iterator<NodeDecorator> nodeDecoratorIter = getNodeDecorators().iterator(); nodeDecoratorIter
+ .hasNext()
+ && retValue;) {
+ NodeDecorator nodeDecorator = (NodeDecorator) nodeDecoratorIter
+ .next();
+ retValue = retValue && nodeDecorator.sane();
+ assert retValue;
+ } // for each noeDecorator
+ } // if
+
+ if (retValue && getEdgeDecorators() != null) {
+ for (Iterator<EdgeDecorator> edgeDecoratorIter = getEdgeDecorators().iterator(); edgeDecoratorIter
+ .hasNext()
+ && retValue;) {
+ EdgeDecorator edgeDecorator = (EdgeDecorator) edgeDecoratorIter
+ .next();
+ retValue = retValue && edgeDecorator.sane();
+ assert retValue;
+ } // for each edgeDecorator
+ }
+ return retValue;
+ } // sane
+} // ModelImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/ModelPackageImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/ModelPackageImpl.java
new file mode 100644
index 000000000..5d035109b
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/ModelPackageImpl.java
@@ -0,0 +1,559 @@
+package org.eclipse.stem.core.model.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2006, 2008 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
+ *******************************************************************************/
+
+import java.lang.Comparable;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EGenericType;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.stem.core.common.CommonPackage;
+import org.eclipse.stem.core.common.impl.CommonPackageImpl;
+import org.eclipse.stem.core.experiment.ExperimentPackage;
+import org.eclipse.stem.core.experiment.impl.ExperimentPackageImpl;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.impl.GraphPackageImpl;
+import org.eclipse.stem.core.logger.LoggerPackage;
+import org.eclipse.stem.core.logger.impl.LoggerPackageImpl;
+import org.eclipse.stem.core.model.Decorator;
+import org.eclipse.stem.core.model.EdgeDecorator;
+import org.eclipse.stem.core.model.GraphDecorator;
+import org.eclipse.stem.core.model.IntegrationDecorator;
+import org.eclipse.stem.core.model.Model;
+import org.eclipse.stem.core.model.ModelFactory;
+import org.eclipse.stem.core.model.ModelPackage;
+import org.eclipse.stem.core.model.NodeDecorator;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+import org.eclipse.stem.core.modifier.impl.ModifierPackageImpl;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+import org.eclipse.stem.core.predicate.impl.PredicatePackageImpl;
+import org.eclipse.stem.core.scenario.ScenarioPackage;
+import org.eclipse.stem.core.scenario.impl.ScenarioPackageImpl;
+import org.eclipse.stem.core.sequencer.SequencerPackage;
+import org.eclipse.stem.core.sequencer.impl.SequencerPackageImpl;
+import org.eclipse.stem.core.solver.SolverPackage;
+import org.eclipse.stem.core.solver.impl.SolverPackageImpl;
+import org.eclipse.stem.core.trigger.TriggerPackage;
+import org.eclipse.stem.core.trigger.impl.TriggerPackageImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ModelPackageImpl extends EPackageImpl implements ModelPackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass decoratorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass edgeDecoratorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass graphDecoratorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass modelEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass nodeDecoratorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass stemTimeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass comparableEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass integrationDecoratorEClass = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.eclipse.stem.core.model.ModelPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private ModelPackageImpl() {
+ super(eNS_URI, ModelFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link ModelPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static ModelPackage init() {
+ if (isInited) return (ModelPackage)EPackage.Registry.INSTANCE.getEPackage(ModelPackage.eNS_URI);
+
+ // Obtain or create and register package
+ ModelPackageImpl theModelPackage = (ModelPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof ModelPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new ModelPackageImpl());
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ EcorePackage.eINSTANCE.eClass();
+
+ // Obtain or create and register interdependencies
+ CommonPackageImpl theCommonPackage = (CommonPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(CommonPackage.eNS_URI) instanceof CommonPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(CommonPackage.eNS_URI) : CommonPackage.eINSTANCE);
+ ExperimentPackageImpl theExperimentPackage = (ExperimentPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ExperimentPackage.eNS_URI) instanceof ExperimentPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ExperimentPackage.eNS_URI) : ExperimentPackage.eINSTANCE);
+ GraphPackageImpl theGraphPackage = (GraphPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(GraphPackage.eNS_URI) instanceof GraphPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(GraphPackage.eNS_URI) : GraphPackage.eINSTANCE);
+ ModifierPackageImpl theModifierPackage = (ModifierPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ModifierPackage.eNS_URI) instanceof ModifierPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ModifierPackage.eNS_URI) : ModifierPackage.eINSTANCE);
+ PredicatePackageImpl thePredicatePackage = (PredicatePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(PredicatePackage.eNS_URI) instanceof PredicatePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(PredicatePackage.eNS_URI) : PredicatePackage.eINSTANCE);
+ ScenarioPackageImpl theScenarioPackage = (ScenarioPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ScenarioPackage.eNS_URI) instanceof ScenarioPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ScenarioPackage.eNS_URI) : ScenarioPackage.eINSTANCE);
+ SequencerPackageImpl theSequencerPackage = (SequencerPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SequencerPackage.eNS_URI) instanceof SequencerPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SequencerPackage.eNS_URI) : SequencerPackage.eINSTANCE);
+ TriggerPackageImpl theTriggerPackage = (TriggerPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(TriggerPackage.eNS_URI) instanceof TriggerPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(TriggerPackage.eNS_URI) : TriggerPackage.eINSTANCE);
+ SolverPackageImpl theSolverPackage = (SolverPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SolverPackage.eNS_URI) instanceof SolverPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SolverPackage.eNS_URI) : SolverPackage.eINSTANCE);
+ LoggerPackageImpl theLoggerPackage = (LoggerPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(LoggerPackage.eNS_URI) instanceof LoggerPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(LoggerPackage.eNS_URI) : LoggerPackage.eINSTANCE);
+
+ // Create package meta-data objects
+ theModelPackage.createPackageContents();
+ theCommonPackage.createPackageContents();
+ theExperimentPackage.createPackageContents();
+ theGraphPackage.createPackageContents();
+ theModifierPackage.createPackageContents();
+ thePredicatePackage.createPackageContents();
+ theScenarioPackage.createPackageContents();
+ theSequencerPackage.createPackageContents();
+ theTriggerPackage.createPackageContents();
+ theSolverPackage.createPackageContents();
+ theLoggerPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theModelPackage.initializePackageContents();
+ theCommonPackage.initializePackageContents();
+ theExperimentPackage.initializePackageContents();
+ theGraphPackage.initializePackageContents();
+ theModifierPackage.initializePackageContents();
+ thePredicatePackage.initializePackageContents();
+ theScenarioPackage.initializePackageContents();
+ theSequencerPackage.initializePackageContents();
+ theTriggerPackage.initializePackageContents();
+ theSolverPackage.initializePackageContents();
+ theLoggerPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theModelPackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(ModelPackage.eNS_URI, theModelPackage);
+ return theModelPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDecorator() {
+ return decoratorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDecorator_LabelsToUpdate() {
+ return (EReference)decoratorEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDecorator_Graph() {
+ return (EReference)decoratorEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDecorator_Enabled() {
+ return (EAttribute)decoratorEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDecorator_GraphDecorated() {
+ return (EAttribute)decoratorEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDecorator_Progress() {
+ return (EAttribute)decoratorEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getEdgeDecorator() {
+ return edgeDecoratorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getGraphDecorator() {
+ return graphDecoratorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getModel() {
+ return modelEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getModel_Models() {
+ return (EReference)modelEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getModel_Graphs() {
+ return (EReference)modelEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getModel_GraphDecorators() {
+ return (EReference)modelEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getModel_NodeDecorators() {
+ return (EReference)modelEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getModel_EdgeDecorators() {
+ return (EReference)modelEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getNodeDecorator() {
+ return nodeDecoratorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSTEMTime() {
+ return stemTimeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getSTEMTime_Time() {
+ return (EAttribute)stemTimeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getComparable() {
+ return comparableEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getIntegrationDecorator() {
+ return integrationDecoratorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ModelFactory getModelFactory() {
+ return (ModelFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ decoratorEClass = createEClass(DECORATOR);
+ createEReference(decoratorEClass, DECORATOR__LABELS_TO_UPDATE);
+ createEReference(decoratorEClass, DECORATOR__GRAPH);
+ createEAttribute(decoratorEClass, DECORATOR__ENABLED);
+ createEAttribute(decoratorEClass, DECORATOR__GRAPH_DECORATED);
+ createEAttribute(decoratorEClass, DECORATOR__PROGRESS);
+
+ edgeDecoratorEClass = createEClass(EDGE_DECORATOR);
+
+ graphDecoratorEClass = createEClass(GRAPH_DECORATOR);
+
+ modelEClass = createEClass(MODEL);
+ createEReference(modelEClass, MODEL__MODELS);
+ createEReference(modelEClass, MODEL__GRAPHS);
+ createEReference(modelEClass, MODEL__GRAPH_DECORATORS);
+ createEReference(modelEClass, MODEL__NODE_DECORATORS);
+ createEReference(modelEClass, MODEL__EDGE_DECORATORS);
+
+ nodeDecoratorEClass = createEClass(NODE_DECORATOR);
+
+ stemTimeEClass = createEClass(STEM_TIME);
+ createEAttribute(stemTimeEClass, STEM_TIME__TIME);
+
+ comparableEClass = createEClass(COMPARABLE);
+
+ integrationDecoratorEClass = createEClass(INTEGRATION_DECORATOR);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ CommonPackage theCommonPackage = (CommonPackage)EPackage.Registry.INSTANCE.getEPackage(CommonPackage.eNS_URI);
+ GraphPackage theGraphPackage = (GraphPackage)EPackage.Registry.INSTANCE.getEPackage(GraphPackage.eNS_URI);
+ EcorePackage theEcorePackage = (EcorePackage)EPackage.Registry.INSTANCE.getEPackage(EcorePackage.eNS_URI);
+
+ // Create type parameters
+ addETypeParameter(comparableEClass, "T"); //$NON-NLS-1$
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ decoratorEClass.getESuperTypes().add(theCommonPackage.getIdentifiable());
+ edgeDecoratorEClass.getESuperTypes().add(this.getDecorator());
+ graphDecoratorEClass.getESuperTypes().add(this.getDecorator());
+ modelEClass.getESuperTypes().add(theCommonPackage.getIdentifiable());
+ nodeDecoratorEClass.getESuperTypes().add(this.getDecorator());
+ EGenericType g1 = createEGenericType(this.getComparable());
+ EGenericType g2 = createEGenericType(this.getSTEMTime());
+ g1.getETypeArguments().add(g2);
+ stemTimeEClass.getEGenericSuperTypes().add(g1);
+ integrationDecoratorEClass.getESuperTypes().add(this.getNodeDecorator());
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(decoratorEClass, Decorator.class, "Decorator", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getDecorator_LabelsToUpdate(), theGraphPackage.getDynamicLabel(), theGraphPackage.getDynamicLabel_Decorator(), "labelsToUpdate", null, 0, -1, Decorator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getDecorator_Graph(), theGraphPackage.getGraph(), theGraphPackage.getGraph_Decorators(), "graph", null, 0, 1, Decorator.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getDecorator_Enabled(), ecorePackage.getEBoolean(), "enabled", "true", 0, 1, Decorator.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+ initEAttribute(getDecorator_GraphDecorated(), ecorePackage.getEBoolean(), "graphDecorated", "false", 0, 1, Decorator.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+ initEAttribute(getDecorator_Progress(), ecorePackage.getEDouble(), "progress", "0.0", 0, 1, Decorator.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+
+ EOperation op = addEOperation(decoratorEClass, theEcorePackage.getEBoolean(), "decorateGraph", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, this.getSTEMTime(), "time", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ op = addEOperation(decoratorEClass, null, "updateLabels", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, this.getSTEMTime(), "time", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, ecorePackage.getELong(), "timerPeriod", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, ecorePackage.getEInt(), "cycle", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ addEOperation(decoratorEClass, null, "resetLabels", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ op = addEOperation(decoratorEClass, null, "prepare", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, this.getModel(), "model", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, this.getSTEMTime(), "time", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(edgeDecoratorEClass, EdgeDecorator.class, "EdgeDecorator", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(graphDecoratorEClass, GraphDecorator.class, "GraphDecorator", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(modelEClass, Model.class, "Model", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getModel_Models(), this.getModel(), null, "models", null, 0, -1, Model.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getModel_Graphs(), theGraphPackage.getGraph(), null, "graphs", null, 0, -1, Model.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getModel_GraphDecorators(), this.getGraphDecorator(), null, "graphDecorators", null, 0, -1, Model.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getModel_NodeDecorators(), this.getNodeDecorator(), null, "nodeDecorators", null, 0, -1, Model.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getModel_EdgeDecorators(), this.getEdgeDecorator(), null, "edgeDecorators", null, 0, -1, Model.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ op = addEOperation(modelEClass, theGraphPackage.getGraph(), "getCanonicalGraph", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, theCommonPackage.getURI(), "uri", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, theCommonPackage.getIdentifiableFilter(), "filter", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, this.getSTEMTime(), "time", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ op = addEOperation(modelEClass, null, "prepare", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, this.getSTEMTime(), "time", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(nodeDecoratorEClass, NodeDecorator.class, "NodeDecorator", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(stemTimeEClass, STEMTime.class, "STEMTime", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getSTEMTime_Time(), ecorePackage.getEDate(), "time", null, 0, 1, STEMTime.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ op = addEOperation(stemTimeEClass, this.getSTEMTime(), "addIncrement", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, ecorePackage.getELong(), "timeIncrement", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ op = addEOperation(stemTimeEClass, ecorePackage.getEBoolean(), "valueEquals", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, this.getSTEMTime(), "obj", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(comparableEClass, Comparable.class, "Comparable", IS_ABSTRACT, IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(integrationDecoratorEClass, IntegrationDecorator.class, "IntegrationDecorator", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ op = addEOperation(integrationDecoratorEClass, null, "applyExternalDeltas", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, this.getSTEMTime(), "time", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, theEcorePackage.getELong(), "timeDelta", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, theGraphPackage.getDynamicLabel(), "labels", 0, -1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ op = addEOperation(integrationDecoratorEClass, null, "calculateDelta", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, this.getSTEMTime(), "time", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, theEcorePackage.getELong(), "timeDelta", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, theGraphPackage.getDynamicLabel(), "labels", 0, -1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ op = addEOperation(integrationDecoratorEClass, null, "doModelSpecificAdjustments", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, theGraphPackage.getLabelValue(), "label", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ addEOperation(integrationDecoratorEClass, theEcorePackage.getEBoolean(), "isDeterministic", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} //ModelPackageImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/NodeDecoratorImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/NodeDecoratorImpl.java
new file mode 100644
index 000000000..7ece81a2a
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/NodeDecoratorImpl.java
@@ -0,0 +1,54 @@
+package org.eclipse.stem.core.model.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.model.ModelPackage;
+import org.eclipse.stem.core.model.NodeDecorator;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Node Decorator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class NodeDecoratorImpl extends DecoratorImpl implements NodeDecorator {
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ protected NodeDecoratorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ModelPackage.Literals.NODE_DECORATOR;
+ }
+
+ /**
+ * @see org.eclipse.stem.model.impl.DecoratorImpl#sane()
+ * @generated NOT
+ */
+ @Override
+ public boolean sane() {
+ boolean retValue = super.sane();
+
+ return retValue;
+ } // sane
+} // NodeDecoratorImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/STEMTimeImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/STEMTimeImpl.java
new file mode 100644
index 000000000..049b59c4d
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/impl/STEMTimeImpl.java
@@ -0,0 +1,209 @@
+package org.eclipse.stem.core.model.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import java.util.Calendar;
+import java.util.Date;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.stem.core.model.ModelFactory;
+import org.eclipse.stem.core.model.ModelPackage;
+import org.eclipse.stem.core.model.STEMTime;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>STEM Time</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.model.impl.STEMTimeImpl#getTime <em>Time</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class STEMTimeImpl extends EObjectImpl implements STEMTime {
+ /**
+ * The default value of the '{@link #getTime() <em>Time</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getTime()
+ * @generated
+ * @ordered
+ */
+ protected static final Date TIME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getTime() <em>Time</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getTime()
+ * @generated
+ * @ordered
+ */
+ protected Date time = TIME_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ protected STEMTimeImpl() {
+ super();
+ // Set the default time to the current time.
+ setTime(Calendar.getInstance().getTime());
+ } // STEMTimeImpl
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ModelPackage.Literals.STEM_TIME;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public Date getTime() {
+ return (Date)time.clone();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setTime(Date newTime) {
+ Date oldTime = time;
+ time = (Date)newTime.clone();
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModelPackage.STEM_TIME__TIME, oldTime, time));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public STEMTime addIncrement(long timeIncrement) {
+ final STEMTime retValue = ModelFactory.eINSTANCE.createSTEMTime();
+
+ final long newTime = getTime().getTime() + timeIncrement;
+ final Date newDate = new Date(newTime);
+
+ retValue.setTime(newDate);
+
+ return retValue;
+ } // addIncrement
+
+
+
+ /**
+ * compares STEMTimes
+ *
+ */
+ public int compareTo(STEMTime otherTime) {
+ return getTime().compareTo(otherTime.getTime());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean valueEquals(STEMTime obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (time == null) {
+ if (obj.getTime() != null)
+ return false;
+ } else if (!time.equals(obj.getTime()))
+ return false;
+ return true;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ModelPackage.STEM_TIME__TIME:
+ return getTime();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ModelPackage.STEM_TIME__TIME:
+ setTime((Date)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ModelPackage.STEM_TIME__TIME:
+ setTime(TIME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ModelPackage.STEM_TIME__TIME:
+ return TIME_EDEFAULT == null ? time != null : !TIME_EDEFAULT.equals(time);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+
+ // StringBuffer result = new StringBuffer(super.toString());
+ // result.append(" (time: ");
+ // result.append(time);
+ // result.append(')');
+ return time.toString();
+ } // toString
+
+} // STEMTimeImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/DecoratorItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/DecoratorItemProvider.java
new file mode 100644
index 000000000..cc8f0148d
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/DecoratorItemProvider.java
@@ -0,0 +1,183 @@
+package org.eclipse.stem.core.model.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.common.provider.CoreEditPlugin;
+import org.eclipse.stem.core.common.provider.IdentifiableItemProvider;
+import org.eclipse.stem.core.model.Decorator;
+import org.eclipse.stem.core.model.ModelPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.model.Decorator} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DecoratorItemProvider
+ extends IdentifiableItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DecoratorItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ //addLabelsToUpdatePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptorsGen(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(ModelPackage.Literals.DECORATOR__LABELS_TO_UPDATE);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns Decorator.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/customobj16/Decorator")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ return super.getText(object);
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(Decorator.class)) {
+ case ModelPackage.DECORATOR__PROGRESS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return CoreEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/EdgeDecoratorItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/EdgeDecoratorItemProvider.java
new file mode 100644
index 000000000..c206ecd7d
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/EdgeDecoratorItemProvider.java
@@ -0,0 +1,107 @@
+package org.eclipse.stem.core.model.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.model.EdgeDecorator;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.model.EdgeDecorator} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EdgeDecoratorItemProvider
+ extends DecoratorItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EdgeDecoratorItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ URI labelValue = ((EdgeDecorator)object).getURI();
+ String label = labelValue == null ? null : labelValue.toString();
+ return label == null || label.length() == 0 ?
+ getString("_UI_EdgeDecorator_type") : //$NON-NLS-1$
+ getString("_UI_EdgeDecorator_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/GraphDecoratorItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/GraphDecoratorItemProvider.java
new file mode 100644
index 000000000..1f270b7f0
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/GraphDecoratorItemProvider.java
@@ -0,0 +1,107 @@
+package org.eclipse.stem.core.model.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.model.GraphDecorator;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.model.GraphDecorator} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class GraphDecoratorItemProvider
+ extends DecoratorItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public GraphDecoratorItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ URI labelValue = ((GraphDecorator)object).getURI();
+ String label = labelValue == null ? null : labelValue.toString();
+ return label == null || label.length() == 0 ?
+ getString("_UI_GraphDecorator_type") : //$NON-NLS-1$
+ getString("_UI_GraphDecorator_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/IntegrationDecoratorItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/IntegrationDecoratorItemProvider.java
new file mode 100644
index 000000000..a2f0eb9b8
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/IntegrationDecoratorItemProvider.java
@@ -0,0 +1,116 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.stem.core.model.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.stem.core.model.IntegrationDecorator;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.model.IntegrationDecorator} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IntegrationDecoratorItemProvider
+ extends NodeDecoratorItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IntegrationDecoratorItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getTextGen(Object object) {
+ URI labelValue = ((IntegrationDecorator)object).getURI();
+ String label = labelValue == null ? null : labelValue.toString();
+ return label == null || label.length() == 0 ?
+ getString("_UI_IntegrationDecorator_type") : //$NON-NLS-1$
+ getString("_UI_IntegrationDecorator_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ return super.getText(object);
+ }
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/ModelEditPlugin.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/ModelEditPlugin.java
new file mode 100644
index 000000000..7babd54c7
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/ModelEditPlugin.java
@@ -0,0 +1,102 @@
+package org.eclipse.stem.core.model.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.ui.EclipseUIPlugin;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.stem.core.common.provider.CommonEditPlugin;
+import org.eclipse.stem.core.graph.provider.GraphEditPlugin;
+
+/**
+ * This is the central singleton for the Model editor plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class ModelEditPlugin extends EMFPlugin {
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final ModelEditPlugin INSTANCE = new ModelEditPlugin();
+
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static Implementation plugin;
+
+ /**
+ * Create the instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ModelEditPlugin() {
+ super
+ (new ResourceLocator [] {
+ GraphEditPlugin.INSTANCE,
+ CommonEditPlugin.INSTANCE,
+ });
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the singleton instance.
+ * @generated
+ */
+ public ResourceLocator getPluginResourceLocator() {
+ return plugin;
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the singleton instance.
+ * @generated
+ */
+ public static Implementation getPlugin() {
+ return plugin;
+ }
+
+ /**
+ * The actual implementation of the Eclipse <b>Plugin</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static class Implementation extends EclipseUIPlugin {
+ /**
+ * Creates an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Implementation() {
+ super();
+
+ // Remember the static instance.
+ //
+ plugin = this;
+ }
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/ModelItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/ModelItemProvider.java
new file mode 100644
index 000000000..f27452085
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/ModelItemProvider.java
@@ -0,0 +1,366 @@
+package org.eclipse.stem.core.model.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2006, 2008 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
+ *******************************************************************************/
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CompoundCommand;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.edit.command.AddCommand;
+import org.eclipse.emf.edit.command.CreateChildCommand;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.Utility;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.provider.CoreEditPlugin;
+import org.eclipse.stem.core.common.provider.IdentifiableItemProvider;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.graph.GraphFactory;
+import org.eclipse.stem.core.model.Model;
+import org.eclipse.stem.core.model.ModelFactory;
+import org.eclipse.stem.core.model.ModelPackage;
+import org.eclipse.swt.dnd.DND;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.model.Model} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ModelItemProvider
+ extends IdentifiableItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ModelItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(ModelPackage.Literals.MODEL__MODELS);
+ childrenFeatures.add(ModelPackage.Literals.MODEL__GRAPHS);
+ childrenFeatures.add(ModelPackage.Literals.MODEL__GRAPH_DECORATORS);
+ childrenFeatures.add(ModelPackage.Literals.MODEL__NODE_DECORATORS);
+ childrenFeatures.add(ModelPackage.Literals.MODEL__EDGE_DECORATORS);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+ Object temp = child;
+ if (child instanceof IFile) {
+ // Yes
+ final IFile iFile = (IFile) child;
+ final URI uri = URI.createFileURI(iFile.getLocation().toString());
+ final Identifiable identifable = Utility.getIdentifiable(uri);
+ temp = identifable;
+ } // if IFile
+
+ else if (child instanceof String) {
+ // Yes
+ // These come from IdentifablePluginView
+ final String uriString = (String) child;
+ try {
+ final URI uri = URI.createURI(uriString);
+ final Identifiable identifable = Utility.getIdentifiable(uri);
+ temp = identifable;
+ } catch (Exception e) {
+ // Ignore it
+ }
+ } // if String
+
+ if (temp instanceof Identifiable) {
+ return super.getChildFeature(object, temp);
+ } else
+ return super.getChildFeature(object, child);
+
+ } // getChildFeature
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EStructuralFeature getChildFeatureGen(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns Model.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+// return getImageGen(object);
+ return overlayImage(object, getResourceLocator().getImage("full/customobj16/Model"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ return super.getText(object);
+ } // getText
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+// @Override
+ @Override
+ public String getTextGen(Object object) {
+ URI labelValue = ((Model)object).getURI();
+ String label = labelValue == null ? null : labelValue.toString();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Model_type") : //$NON-NLS-1$
+ getString("_UI_Model_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(Model.class)) {
+ case ModelPackage.MODEL__MODELS:
+ case ModelPackage.MODEL__GRAPHS:
+ case ModelPackage.MODEL__GRAPH_DECORATORS:
+ case ModelPackage.MODEL__NODE_DECORATORS:
+ case ModelPackage.MODEL__EDGE_DECORATORS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (ModelPackage.Literals.MODEL__MODELS,
+ ModelFactory.eINSTANCE.createModel()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (ModelPackage.Literals.MODEL__GRAPHS,
+ GraphFactory.eINSTANCE.createGraph()));
+ }
+
+
+ /**
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createDragAndDropCommand(org.eclipse.emf.edit.domain.EditingDomain, java.lang.Object, float, int, int, java.util.Collection)
+ */
+ @Override
+ protected Command createDragAndDropCommand(EditingDomain domain,
+ Object owner, float location, int operations, int operation,
+ Collection<?> collection) {
+ // We add DND.DROP_LINK as an allowed operation because all drops will
+ // be links and some sources don't allow links, we convert to links anyway
+ return super.createDragAndDropCommand(domain, owner, location, operations | DND.DROP_LINK,
+ operation, collection);
+ } // createDragAndDropCommand
+
+ /**
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createAddCommand(org.eclipse.emf.edit.domain.EditingDomain, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.util.Collection, int)
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ protected Command createAddCommand(EditingDomain domain, EObject owner,
+ EStructuralFeature feature, Collection<?> collection, int index) {
+ final Collection identifiableCollection = new ArrayList();
+ for (Object value : collection) {
+
+ Object temp = value;
+ if (value instanceof IFile) {
+ // Yes
+ final IFile iFile = (IFile) value;
+ final URI uri = URI.createFileURI(iFile.getLocation()
+ .toString());
+ final Identifiable identifable = Utility.getIdentifiable(uri);
+ identifiableCollection.add(identifable);
+ temp = identifable;
+ } // if IFile
+
+ else if (value instanceof String) {
+ // Yes
+ final String uriString = (String) value;
+ try {
+ final URI uri = URI.createURI(uriString);
+ final Identifiable identifable = Utility
+ .getIdentifiable(uri);
+ temp = identifable;
+ } catch (Exception e) {
+ // Ignore it
+ }
+ } // if String
+
+ if (temp instanceof Identifiable) {
+ identifiableCollection.add(temp);
+ }
+ } // for each Object
+
+ return super.createAddCommand(domain, owner, feature,
+ identifiableCollection, index);
+ } // createAddCommand
+
+ @Override
+ protected Command createCreateChildCommand(EditingDomain domain,
+ EObject owner, EStructuralFeature feature, Object value, int index,
+ Collection<?> collection) {
+
+ return new CreateChildCommand(domain,owner,feature,value,index,collection,this) {
+
+ @Override
+ protected Command createCommand() {
+
+ Command retValue = null;
+
+ final Command createChildCommand = super.createCommand();
+
+ final Resource parentResource = owner.eResource();
+ // Are we creating a Model or a Graph?
+ if (parentResource != null && (child instanceof Model || child instanceof Graph)) {
+ // Yes
+ final EObject temp = (EObject) child;
+ // Does the child have a resource already?
+ if (temp.eResource() == null) {
+ // No
+ final Command addCommand = new AddCommand(domain,
+ parentResource.getContents(), temp);
+
+ final CompoundCommand compoundCommand = new CompoundCommand(
+ 0, createChildCommand.getLabel(),
+ createChildCommand.getDescription());
+ compoundCommand.append(createChildCommand);
+ compoundCommand.append(addCommand);
+ retValue = compoundCommand;
+ } // if Model does not have a resource
+ } // if Model
+ else {
+ retValue = createChildCommand;
+ }
+
+ return retValue;
+ } // createCommand
+
+ }; // CreateChildCommand
+
+ } // createCreateChildCommand
+
+ /**
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#isWrappingNeeded(java.lang.Object)
+ */
+ @Override
+ protected boolean isWrappingNeeded(Object object) {
+ // return super.isWrappingNeeded(object);
+ // We return true so that non-containment references are wrapped. This
+ // enables the delete command in the editor's context menu.
+ return true;
+ } // isWrappingNeeded
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return CoreEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/ModelItemProviderAdapterFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/ModelItemProviderAdapterFactory.java
new file mode 100644
index 000000000..9722dba09
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/ModelItemProviderAdapterFactory.java
@@ -0,0 +1,327 @@
+package org.eclipse.stem.core.model.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.model.util.ModelAdapterFactory;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ModelItemProviderAdapterFactory extends ModelAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+ /**
+ * This keeps track of the root adapter factory that delegates to this adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ComposedAdapterFactory parentAdapterFactory;
+
+ /**
+ * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+ /**
+ * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+ /**
+ * This constructs an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ModelItemProviderAdapterFactory() {
+ supportedTypes.add(IEditingDomainItemProvider.class);
+ supportedTypes.add(IStructuredItemContentProvider.class);
+ supportedTypes.add(ITreeItemContentProvider.class);
+ supportedTypes.add(IItemLabelProvider.class);
+ supportedTypes.add(IItemPropertySource.class);
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.model.Decorator} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DecoratorItemProvider decoratorItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.model.Decorator}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createDecoratorAdapter() {
+ if (decoratorItemProvider == null) {
+ decoratorItemProvider = new DecoratorItemProvider(this);
+ }
+
+ return decoratorItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.model.EdgeDecorator} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EdgeDecoratorItemProvider edgeDecoratorItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.model.EdgeDecorator}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createEdgeDecoratorAdapter() {
+ if (edgeDecoratorItemProvider == null) {
+ edgeDecoratorItemProvider = new EdgeDecoratorItemProvider(this);
+ }
+
+ return edgeDecoratorItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.model.GraphDecorator} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected GraphDecoratorItemProvider graphDecoratorItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.model.GraphDecorator}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createGraphDecoratorAdapter() {
+ if (graphDecoratorItemProvider == null) {
+ graphDecoratorItemProvider = new GraphDecoratorItemProvider(this);
+ }
+
+ return graphDecoratorItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.model.Model} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ModelItemProvider modelItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.model.Model}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createModelAdapter() {
+ if (modelItemProvider == null) {
+ modelItemProvider = new ModelItemProvider(this);
+ }
+
+ return modelItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.model.NodeDecorator} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected NodeDecoratorItemProvider nodeDecoratorItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.model.NodeDecorator}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createNodeDecoratorAdapter() {
+ if (nodeDecoratorItemProvider == null) {
+ nodeDecoratorItemProvider = new NodeDecoratorItemProvider(this);
+ }
+
+ return nodeDecoratorItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.model.STEMTime} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected STEMTimeItemProvider stemTimeItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.model.STEMTime}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createSTEMTimeAdapter() {
+ if (stemTimeItemProvider == null) {
+ stemTimeItemProvider = new STEMTimeItemProvider(this);
+ }
+
+ return stemTimeItemProvider;
+ }
+
+ /**
+ * This returns the root adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ComposeableAdapterFactory getRootAdapterFactory() {
+ return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+ }
+
+ /**
+ * This sets the composed adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+ this.parentAdapterFactory = parentAdapterFactory;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object type) {
+ return supportedTypes.contains(type) || super.isFactoryForType(type);
+ }
+
+ /**
+ * This implementation substitutes the factory itself as the key for the adapter.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter adapt(Notifier notifier, Object type) {
+ return super.adapt(notifier, this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public Object adapt(Object object, Object type) {
+ if (isFactoryForType(type)) {
+ Object adapter = super.adapt(object, type);
+ if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+ return adapter;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * This adds a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void addListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.addListener(notifyChangedListener);
+ }
+
+ /**
+ * This removes a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void removeListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.removeListener(notifyChangedListener);
+ }
+
+ /**
+ * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void fireNotifyChanged(Notification notification) {
+ changeNotifier.fireNotifyChanged(notification);
+
+ if (parentAdapterFactory != null) {
+ parentAdapterFactory.fireNotifyChanged(notification);
+ }
+ }
+
+ /**
+ * This disposes all of the item providers created by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void dispose() {
+ if (decoratorItemProvider != null) decoratorItemProvider.dispose();
+ if (edgeDecoratorItemProvider != null) edgeDecoratorItemProvider.dispose();
+ if (graphDecoratorItemProvider != null) graphDecoratorItemProvider.dispose();
+ if (modelItemProvider != null) modelItemProvider.dispose();
+ if (nodeDecoratorItemProvider != null) nodeDecoratorItemProvider.dispose();
+ if (stemTimeItemProvider != null) stemTimeItemProvider.dispose();
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/NodeDecoratorItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/NodeDecoratorItemProvider.java
new file mode 100644
index 000000000..9ab0ad218
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/NodeDecoratorItemProvider.java
@@ -0,0 +1,101 @@
+package org.eclipse.stem.core.model.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.model.NodeDecorator} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NodeDecoratorItemProvider
+ extends DecoratorItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NodeDecoratorItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ return super.getText(object);
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/STEMTimeItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/STEMTimeItemProvider.java
new file mode 100644
index 000000000..206a40d1c
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/provider/STEMTimeItemProvider.java
@@ -0,0 +1,159 @@
+package org.eclipse.stem.core.model.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.Date;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.common.provider.CoreEditPlugin;
+import org.eclipse.stem.core.model.ModelPackage;
+import org.eclipse.stem.core.model.STEMTime;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.model.STEMTime} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class STEMTimeItemProvider extends ItemProviderAdapter implements
+ IEditingDomainItemProvider, IStructuredItemContentProvider,
+ ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public STEMTimeItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addTimePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Time feature.
+ * <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addTimePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_STEMTime_time_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_STEMTime_time_feature", "_UI_STEMTime_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ModelPackage.Literals.STEM_TIME__TIME,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns STEMTime.gif.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/STEMTime")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ Date labelValue = ((STEMTime)object).getTime();
+ String label = labelValue == null ? null : labelValue.toString();
+ return label == null || label.length() == 0 ?
+ getString("_UI_STEMTime_type") : //$NON-NLS-1$
+ getString("_UI_STEMTime_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(STEMTime.class)) {
+ case ModelPackage.STEM_TIME__TIME:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return CoreEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/util/ModelAdapterFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/util/ModelAdapterFactory.java
new file mode 100644
index 000000000..8eeb3c221
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/util/ModelAdapterFactory.java
@@ -0,0 +1,315 @@
+package org.eclipse.stem.core.model.util;
+
+/*******************************************************************************
+ * Copyright (c) 2006, 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.SanityChecker;
+import org.eclipse.stem.core.model.Decorator;
+import org.eclipse.stem.core.model.EdgeDecorator;
+import org.eclipse.stem.core.model.GraphDecorator;
+import org.eclipse.stem.core.model.IntegrationDecorator;
+import org.eclipse.stem.core.model.Model;
+import org.eclipse.stem.core.model.ModelPackage;
+import org.eclipse.stem.core.model.NodeDecorator;
+import org.eclipse.stem.core.model.STEMTime;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.model.ModelPackage
+ * @generated
+ */
+public class ModelAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static ModelPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ModelAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = ModelPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ModelSwitch<Adapter> modelSwitch =
+ new ModelSwitch<Adapter>() {
+ @Override
+ public Adapter caseDecorator(Decorator object) {
+ return createDecoratorAdapter();
+ }
+ @Override
+ public Adapter caseEdgeDecorator(EdgeDecorator object) {
+ return createEdgeDecoratorAdapter();
+ }
+ @Override
+ public Adapter caseGraphDecorator(GraphDecorator object) {
+ return createGraphDecoratorAdapter();
+ }
+ @Override
+ public Adapter caseModel(Model object) {
+ return createModelAdapter();
+ }
+ @Override
+ public Adapter caseNodeDecorator(NodeDecorator object) {
+ return createNodeDecoratorAdapter();
+ }
+ @Override
+ public Adapter caseSTEMTime(STEMTime object) {
+ return createSTEMTimeAdapter();
+ }
+ @Override
+ public <T> Adapter caseComparable(Comparable<T> object) {
+ return createComparableAdapter();
+ }
+ @Override
+ public Adapter caseIntegrationDecorator(IntegrationDecorator object) {
+ return createIntegrationDecoratorAdapter();
+ }
+ @Override
+ public <T> Adapter caseCommon_Comparable(Comparable<T> object) {
+ return createCommon_ComparableAdapter();
+ }
+ @Override
+ public Adapter caseSanityChecker(SanityChecker object) {
+ return createSanityCheckerAdapter();
+ }
+ @Override
+ public Adapter caseIdentifiable(Identifiable object) {
+ return createIdentifiableAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.model.Decorator <em>Decorator</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.model.Decorator
+ * @generated
+ */
+ public Adapter createDecoratorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.model.EdgeDecorator <em>Edge Decorator</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.model.EdgeDecorator
+ * @generated
+ */
+ public Adapter createEdgeDecoratorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.model.GraphDecorator <em>Graph Decorator</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.model.GraphDecorator
+ * @generated
+ */
+ public Adapter createGraphDecoratorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.model.Model <em>Model</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.model.Model
+ * @generated
+ */
+ public Adapter createModelAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.model.NodeDecorator <em>Node Decorator</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.model.NodeDecorator
+ * @generated
+ */
+ public Adapter createNodeDecoratorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.model.STEMTime <em>STEM Time</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.model.STEMTime
+ * @generated
+ */
+ public Adapter createSTEMTimeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link java.lang.Comparable <em>Comparable</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see java.lang.Comparable
+ * @generated
+ */
+ public Adapter createComparableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.model.IntegrationDecorator <em>Integration Decorator</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.model.IntegrationDecorator
+ * @generated
+ */
+ public Adapter createIntegrationDecoratorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link java.lang.Comparable <em>Comparable</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see java.lang.Comparable
+ * @generated
+ */
+ public Adapter createCommon_ComparableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.SanityChecker <em>Sanity Checker</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.common.SanityChecker
+ * @generated
+ */
+ public Adapter createSanityCheckerAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.Identifiable <em>Identifiable</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.common.Identifiable
+ * @generated
+ */
+ public Adapter createIdentifiableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} //ModelAdapterFactory
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/util/ModelSwitch.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/util/ModelSwitch.java
new file mode 100644
index 000000000..ac86f87d8
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/model/util/ModelSwitch.java
@@ -0,0 +1,353 @@
+package org.eclipse.stem.core.model.util;
+
+/*******************************************************************************
+ * Copyright (c) 2006, 2008 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
+ *******************************************************************************/
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.SanityChecker;
+import org.eclipse.stem.core.model.Decorator;
+import org.eclipse.stem.core.model.EdgeDecorator;
+import org.eclipse.stem.core.model.GraphDecorator;
+import org.eclipse.stem.core.model.IntegrationDecorator;
+import org.eclipse.stem.core.model.Model;
+import org.eclipse.stem.core.model.ModelPackage;
+import org.eclipse.stem.core.model.NodeDecorator;
+import org.eclipse.stem.core.model.STEMTime;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.model.ModelPackage
+ * @generated
+ */
+public class ModelSwitch<T1> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static ModelPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ModelSwitch() {
+ if (modelPackage == null) {
+ modelPackage = ModelPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ public T1 doSwitch(EObject theEObject) {
+ return doSwitch(theEObject.eClass(), theEObject);
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T1 doSwitch(EClass theEClass, EObject theEObject) {
+ if (theEClass.eContainer() == modelPackage) {
+ return doSwitch(theEClass.getClassifierID(), theEObject);
+ }
+ else {
+ List<EClass> eSuperTypes = theEClass.getESuperTypes();
+ return
+ eSuperTypes.isEmpty() ?
+ defaultCase(theEObject) :
+ doSwitch(eSuperTypes.get(0), theEObject);
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T1 doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case ModelPackage.DECORATOR: {
+ Decorator decorator = (Decorator)theEObject;
+ T1 result = caseDecorator(decorator);
+ if (result == null) result = caseIdentifiable(decorator);
+ if (result == null) result = caseCommon_Comparable(decorator);
+ if (result == null) result = caseSanityChecker(decorator);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ModelPackage.EDGE_DECORATOR: {
+ EdgeDecorator edgeDecorator = (EdgeDecorator)theEObject;
+ T1 result = caseEdgeDecorator(edgeDecorator);
+ if (result == null) result = caseDecorator(edgeDecorator);
+ if (result == null) result = caseIdentifiable(edgeDecorator);
+ if (result == null) result = caseCommon_Comparable(edgeDecorator);
+ if (result == null) result = caseSanityChecker(edgeDecorator);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ModelPackage.GRAPH_DECORATOR: {
+ GraphDecorator graphDecorator = (GraphDecorator)theEObject;
+ T1 result = caseGraphDecorator(graphDecorator);
+ if (result == null) result = caseDecorator(graphDecorator);
+ if (result == null) result = caseIdentifiable(graphDecorator);
+ if (result == null) result = caseCommon_Comparable(graphDecorator);
+ if (result == null) result = caseSanityChecker(graphDecorator);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ModelPackage.MODEL: {
+ Model model = (Model)theEObject;
+ T1 result = caseModel(model);
+ if (result == null) result = caseIdentifiable(model);
+ if (result == null) result = caseCommon_Comparable(model);
+ if (result == null) result = caseSanityChecker(model);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ModelPackage.NODE_DECORATOR: {
+ NodeDecorator nodeDecorator = (NodeDecorator)theEObject;
+ T1 result = caseNodeDecorator(nodeDecorator);
+ if (result == null) result = caseDecorator(nodeDecorator);
+ if (result == null) result = caseIdentifiable(nodeDecorator);
+ if (result == null) result = caseCommon_Comparable(nodeDecorator);
+ if (result == null) result = caseSanityChecker(nodeDecorator);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ModelPackage.STEM_TIME: {
+ STEMTime stemTime = (STEMTime)theEObject;
+ T1 result = caseSTEMTime(stemTime);
+ if (result == null) result = caseComparable(stemTime);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ModelPackage.INTEGRATION_DECORATOR: {
+ IntegrationDecorator integrationDecorator = (IntegrationDecorator)theEObject;
+ T1 result = caseIntegrationDecorator(integrationDecorator);
+ if (result == null) result = caseNodeDecorator(integrationDecorator);
+ if (result == null) result = caseDecorator(integrationDecorator);
+ if (result == null) result = caseIdentifiable(integrationDecorator);
+ if (result == null) result = caseCommon_Comparable(integrationDecorator);
+ if (result == null) result = caseSanityChecker(integrationDecorator);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Decorator</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Decorator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseDecorator(Decorator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Edge Decorator</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Edge Decorator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseEdgeDecorator(EdgeDecorator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Graph Decorator</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Graph Decorator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseGraphDecorator(GraphDecorator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Model</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Model</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseModel(Model object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Node Decorator</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Node Decorator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseNodeDecorator(NodeDecorator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>STEM Time</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>STEM Time</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseSTEMTime(STEMTime object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Comparable</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Comparable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public <T> T1 caseComparable(Comparable<T> object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Integration Decorator</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Integration Decorator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseIntegrationDecorator(IntegrationDecorator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Comparable</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Comparable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public <T> T1 caseCommon_Comparable(Comparable<T> object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Sanity Checker</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Sanity Checker</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseSanityChecker(SanityChecker object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Identifiable</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Identifiable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseIdentifiable(Identifiable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ public T1 defaultCase(EObject object) {
+ return null;
+ }
+
+} //ModelSwitch
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/DoubleModifier.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/DoubleModifier.java
new file mode 100644
index 000000000..9e1f6bb47
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/DoubleModifier.java
@@ -0,0 +1,86 @@
+package org.eclipse.stem.core.modifier;
+
+/*******************************************************************************
+ * Copyright (c) 2009 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
+ *******************************************************************************/
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Double Modifier</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.modifier.DoubleModifier#getValue <em>Value</em>}</li>
+ * <li>{@link org.eclipse.stem.core.modifier.DoubleModifier#getOriginalValue <em>Original Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.core.modifier.ModifierPackage#getDoubleModifier()
+ * @model
+ * @generated
+ */
+public interface DoubleModifier extends SingleValueModifier {
+
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Value</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(double)
+ * @see org.eclipse.stem.core.modifier.ModifierPackage#getDoubleModifier_Value()
+ * @model
+ * @generated
+ */
+ double getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.modifier.DoubleModifier#getValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(double value);
+
+ /**
+ * Returns the value of the '<em><b>Original Value</b></em>' attribute.
+ * The default value is <code>"-1E200"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Original Value</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Original Value</em>' attribute.
+ * @see #setOriginalValue(double)
+ * @see org.eclipse.stem.core.modifier.ModifierPackage#getDoubleModifier_OriginalValue()
+ * @model default="-1E200" transient="true"
+ * @generated
+ */
+ double getOriginalValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.modifier.DoubleModifier#getOriginalValue <em>Original Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Original Value</em>' attribute.
+ * @see #getOriginalValue()
+ * @generated
+ */
+ void setOriginalValue(double value);
+} // DoubleModifier
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/DoubleNOPModifier.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/DoubleNOPModifier.java
new file mode 100644
index 000000000..333ed2161
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/DoubleNOPModifier.java
@@ -0,0 +1,24 @@
+// DoubleNOPModifier.java
+package org.eclipse.stem.core.modifier;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+/**
+ * A <code>NOPModifier</code> does nothing. It is useful for the GUI
+ * components that edit {@link FeatureModifier}s to have one that is available
+ * for the case when no {@link FeatureModifier} is specified by the user.
+ *
+ * @model
+ */
+public interface DoubleNOPModifier extends NOPModifier {
+ // Nothing
+} // DoubleNOPModifier
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/DoubleRangeModifier.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/DoubleRangeModifier.java
new file mode 100644
index 000000000..4914e55b1
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/DoubleRangeModifier.java
@@ -0,0 +1,100 @@
+// DoubleRangeModifier.java
+package org.eclipse.stem.core.modifier;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+/**
+ * A <code>DoubleRangeModifier</code> modifies a double valued feature from a
+ * starting value to and end value (inclusive> by increments.
+ *
+ * @model
+ */
+public interface DoubleRangeModifier extends RangeModifier {
+
+ /**
+ * @model
+ */
+ double getOriginalValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.modifier.DoubleRangeModifier#getOriginalValue <em>Original Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Original Value</em>' attribute.
+ * @see #getOriginalValue()
+ * @generated
+ */
+ void setOriginalValue(double value);
+
+ /**
+ * @model default="-99999999.0"
+ */
+ double getStartValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.modifier.DoubleRangeModifier#getStartValue <em>Start Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Start Value</em>' attribute.
+ * @see #getStartValue()
+ * @generated
+ */
+ void setStartValue(double value);
+
+ /**
+ * @model default="-99999999.0"
+ */
+ double getEndValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.modifier.DoubleRangeModifier#getEndValue <em>End Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>End Value</em>' attribute.
+ * @see #getEndValue()
+ * @generated
+ */
+ void setEndValue(double value);
+
+ /**
+ * @model default="-99999999.0"
+ */
+ double getIncrement();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.modifier.DoubleRangeModifier#getIncrement <em>Increment</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Increment</em>' attribute.
+ * @see #getIncrement()
+ * @generated
+ */
+ void setIncrement(double value);
+
+ /**
+ * @return the next value of the feature
+ * @model default="0.0" changeable="true"
+ */
+ double getNextValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.modifier.DoubleRangeModifier#getNextValue <em>Next Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Next Value</em>' attribute.
+ * @see #getNextValue()
+ * @generated
+ */
+ void setNextValue(double value);
+
+
+} // DoubleRangeModifier
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/DoubleSequenceModifier.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/DoubleSequenceModifier.java
new file mode 100644
index 000000000..ab520a948
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/DoubleSequenceModifier.java
@@ -0,0 +1,30 @@
+// DoubleSequenceModifier.java
+package org.eclipse.stem.core.modifier;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * A {@link DoubleSequenceModifier} modifies a feature by setting it to a
+ * sequence of "double" values.
+ *
+ * @model
+ */
+public interface DoubleSequenceModifier extends SequenceModifier {
+
+ /**
+ * @model
+ */
+ EList<Double> getSequence();
+
+} // DoubleSequenceModifier
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/FeatureModifier.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/FeatureModifier.java
new file mode 100644
index 000000000..b8e66c334
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/FeatureModifier.java
@@ -0,0 +1,128 @@
+// FeatureModifier.java
+package org.eclipse.stem.core.modifier;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.SanityChecker;
+
+/**
+ * A {@link FeatureModifier} specifies how to change the value of
+ * "feature" in an {@link Identifiable}.
+ *
+ * @model abstract="true"
+ * @implements SanityChecker
+ */
+public interface FeatureModifier extends EObject, SanityChecker {
+
+ /**
+ * @return the {@link Identifiable} that will be modified.
+ * @model
+ */
+ EObject getTarget();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.modifier.FeatureModifier#getTarget <em>Target</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Target</em>' reference.
+ * @see #getTarget()
+ * @generated
+ */
+ void setTarget(EObject value);
+
+ /**
+ * @return the id of the feature being modified
+ * @model transient="true" resolveProxies="false"
+ */
+ EStructuralFeature getEStructuralFeature();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.modifier.FeatureModifier#getEStructuralFeature <em>EStructural Feature</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>EStructural Feature</em>' reference.
+ * @see #getEStructuralFeature()
+ * @generated
+ */
+ void setEStructuralFeature(EStructuralFeature value);
+
+ /**
+ * @model
+ */
+ String getFeatureName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.modifier.FeatureModifier#getFeatureName <em>Feature Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Feature Name</em>' attribute.
+ * @see #getFeatureName()
+ * @generated
+ */
+ void setFeatureName(String value);
+
+ /**
+ * @return the featureID of the {@link EStructuralFeature} to be modified.
+ * @model
+ */
+ int getFeatureId();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.modifier.FeatureModifier#getFeatureId <em>Feature Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Feature Id</em>' attribute.
+ * @see #getFeatureId()
+ * @generated
+ */
+ void setFeatureId(int value);
+
+ /**
+ * @return the textual representation of the value that was used in the
+ * last call to {@link #updateFeature()}
+ * @see #getNextValue()
+ * @model transient="true" changeable="false"
+ */
+ String getCurrentValueText();
+
+ /**
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ void updateFeature();
+
+ /**
+ * @return a {@link List} of {@link String}s that summarize the
+ * modifications made to the last {@link EObject} by the call to
+ * {@link #updateFeature()}.
+ * model volatile="true" transient="true" changeable="false"
+ */
+ String getModificationSummary();
+
+ /**
+ * @return <code>true</code> if all of the modifications to the feature
+ * been completed, <code>false</code>, otherwise.
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ boolean isComplete();
+
+ /**
+ * Restore the value of the feature being modified to its original value
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ void reset();
+
+} // FeatureModifier
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/IntegerModifier.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/IntegerModifier.java
new file mode 100644
index 000000000..e72aa941f
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/IntegerModifier.java
@@ -0,0 +1,86 @@
+package org.eclipse.stem.core.modifier;
+
+/*******************************************************************************
+ * Copyright (c) 2009 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
+ *******************************************************************************/
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Integer Modifier</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.modifier.IntegerModifier#getValue <em>Value</em>}</li>
+ * <li>{@link org.eclipse.stem.core.modifier.IntegerModifier#getOriginalValue <em>Original Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.core.modifier.ModifierPackage#getIntegerModifier()
+ * @model
+ * @generated
+ */
+public interface IntegerModifier extends SingleValueModifier {
+
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Value</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(int)
+ * @see org.eclipse.stem.core.modifier.ModifierPackage#getIntegerModifier_Value()
+ * @model
+ * @generated
+ */
+ int getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.modifier.IntegerModifier#getValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(int value);
+
+ /**
+ * Returns the value of the '<em><b>Original Value</b></em>' attribute.
+ * The default value is <code>"-2000000000"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Original Value</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Original Value</em>' attribute.
+ * @see #setOriginalValue(int)
+ * @see org.eclipse.stem.core.modifier.ModifierPackage#getIntegerModifier_OriginalValue()
+ * @model default="-2000000000" transient="true"
+ * @generated
+ */
+ int getOriginalValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.modifier.IntegerModifier#getOriginalValue <em>Original Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Original Value</em>' attribute.
+ * @see #getOriginalValue()
+ * @generated
+ */
+ void setOriginalValue(int value);
+} // IntegerModifier
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/IntegerNOPModifier.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/IntegerNOPModifier.java
new file mode 100644
index 000000000..5f3a291c4
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/IntegerNOPModifier.java
@@ -0,0 +1,24 @@
+// IntegerNOPModifier.java
+package org.eclipse.stem.core.modifier;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+/**
+ * A <code>NOPModifier</code> does nothing. It is useful for the GUI
+ * components that edit {@link FeatureModifier}s to have one that is available
+ * for the case when no {@link FeatureModifier} is specified by the user.
+ *
+ * @model
+ */
+public interface IntegerNOPModifier extends NOPModifier {
+ // Nothing
+} // IntegerNOPModifier \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/IntegerRangeModifier.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/IntegerRangeModifier.java
new file mode 100644
index 000000000..22e26aeba
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/IntegerRangeModifier.java
@@ -0,0 +1,99 @@
+// IntegerRangeModifier.java
+package org.eclipse.stem.core.modifier;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+/**
+ * A <code>IntegerRangeModifier</code> modifies an integer valued feature from
+ * a starting value to and end value (inclusive> by increments.
+ *
+ * @model
+ */
+public interface IntegerRangeModifier extends RangeModifier {
+
+ /**
+ * @model
+ */
+ int getOriginalValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.modifier.IntegerRangeModifier#getOriginalValue <em>Original Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Original Value</em>' attribute.
+ * @see #getOriginalValue()
+ * @generated
+ */
+ void setOriginalValue(int value);
+
+ /**
+ * @model default="-99999999"
+ */
+ int getStartValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.modifier.IntegerRangeModifier#getStartValue <em>Start Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Start Value</em>' attribute.
+ * @see #getStartValue()
+ * @generated
+ */
+ void setStartValue(int value);
+
+ /**
+ * @model default="-99999999"
+ */
+ int getEndValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.modifier.IntegerRangeModifier#getEndValue <em>End Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>End Value</em>' attribute.
+ * @see #getEndValue()
+ * @generated
+ */
+ void setEndValue(int value);
+
+ /**
+ * @model default="-99999999"
+ */
+ int getIncrement();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.modifier.IntegerRangeModifier#getIncrement <em>Increment</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Increment</em>' attribute.
+ * @see #getIncrement()
+ * @generated
+ */
+ void setIncrement(int value);
+
+ /**
+ * @return the next value of the feature
+ * @model default="-99999999" changeable="true"
+ */
+ int getNextValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.modifier.IntegerRangeModifier#getNextValue <em>Next Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Next Value</em>' attribute.
+ * @see #getNextValue()
+ * @generated
+ */
+ void setNextValue(int value);
+
+} // IntegerRangeModifier
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/IntegerSequenceModifier.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/IntegerSequenceModifier.java
new file mode 100644
index 000000000..a7098e476
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/IntegerSequenceModifier.java
@@ -0,0 +1,28 @@
+// IntegerSequenceModifier.java
+package org.eclipse.stem.core.modifier;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * A {@link IntegerSequenceModifier} modifies a feature by setting it to a
+ * sequence of "integer" values.
+ *
+ * @model
+ */
+public interface IntegerSequenceModifier extends SequenceModifier {
+ /**
+ * @model
+ */
+ EList<Integer> getSequence();
+} // IntegerSequenceModifier \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/LongModifier.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/LongModifier.java
new file mode 100644
index 000000000..db64032a4
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/LongModifier.java
@@ -0,0 +1,86 @@
+package org.eclipse.stem.core.modifier;
+
+/*******************************************************************************
+ * Copyright (c) 2009 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
+ *******************************************************************************/
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Long Modifier</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.modifier.LongModifier#getValue <em>Value</em>}</li>
+ * <li>{@link org.eclipse.stem.core.modifier.LongModifier#getOriginalValue <em>Original Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.core.modifier.ModifierPackage#getLongModifier()
+ * @model
+ * @generated
+ */
+public interface LongModifier extends SingleValueModifier {
+
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Value</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(long)
+ * @see org.eclipse.stem.core.modifier.ModifierPackage#getLongModifier_Value()
+ * @model
+ * @generated
+ */
+ long getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.modifier.LongModifier#getValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(long value);
+
+ /**
+ * Returns the value of the '<em><b>Original Value</b></em>' attribute.
+ * The default value is <code>"-2000000000"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Original Value</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Original Value</em>' attribute.
+ * @see #setOriginalValue(long)
+ * @see org.eclipse.stem.core.modifier.ModifierPackage#getLongModifier_OriginalValue()
+ * @model default="-2000000000" transient="true"
+ * @generated
+ */
+ long getOriginalValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.modifier.LongModifier#getOriginalValue <em>Original Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Original Value</em>' attribute.
+ * @see #getOriginalValue()
+ * @generated
+ */
+ void setOriginalValue(long value);
+} // LongModifier
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/LongNOPModifier.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/LongNOPModifier.java
new file mode 100644
index 000000000..62652b82e
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/LongNOPModifier.java
@@ -0,0 +1,24 @@
+// LongNOPModifier.java
+package org.eclipse.stem.core.modifier;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+/**
+ * A <code>NOPModifier</code> does nothing. It is useful for the GUI
+ * components that edit {@link FeatureModifier}s to have one that is available
+ * for the case when no {@link FeatureModifier} is specified by the user.
+ *
+ * @model
+ */
+public interface LongNOPModifier extends NOPModifier {
+ // Nothing
+} // LongNOPModifier
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/LongRangeModifier.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/LongRangeModifier.java
new file mode 100644
index 000000000..d860a85fb
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/LongRangeModifier.java
@@ -0,0 +1,98 @@
+// LongRangeModifier.java
+package org.eclipse.stem.core.modifier;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+/**
+ * A <code>LongRangeModifier</code> modifies an long valued feature from
+ * a starting value to and end value (inclusive> by increments.
+ *
+ * @model
+ */
+public interface LongRangeModifier extends RangeModifier {
+
+ /**
+ * @model default="-99999999"
+ */
+ long getOriginalValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.modifier.LongRangeModifier#getOriginalValue <em>Original Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Original Value</em>' attribute.
+ * @see #getOriginalValue()
+ * @generated
+ */
+ void setOriginalValue(long value);
+
+ /**
+ * @model default="-99999999"
+ */
+ long getStartValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.modifier.LongRangeModifier#getStartValue <em>Start Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Start Value</em>' attribute.
+ * @see #getStartValue()
+ * @generated
+ */
+ void setStartValue(long value);
+
+ /**
+ * @model default="-99999999"
+ */
+ long getEndValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.modifier.LongRangeModifier#getEndValue <em>End Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>End Value</em>' attribute.
+ * @see #getEndValue()
+ * @generated
+ */
+ void setEndValue(long value);
+
+ /**
+ * @model default="-99999999"
+ */
+ long getIncrement();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.modifier.LongRangeModifier#getIncrement <em>Increment</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Increment</em>' attribute.
+ * @see #getIncrement()
+ * @generated
+ */
+ void setIncrement(long value);
+
+ /**
+ * @return the next value of the feature
+ * @model default="-99999999" changeable="true"
+ */
+ long getNextValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.modifier.LongRangeModifier#getNextValue <em>Next Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Next Value</em>' attribute.
+ * @see #getNextValue()
+ * @generated
+ */
+ void setNextValue(long value);
+} // LongRangeModifier \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/LongSequenceModifier.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/LongSequenceModifier.java
new file mode 100644
index 000000000..88219837a
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/LongSequenceModifier.java
@@ -0,0 +1,28 @@
+// LongSequenceModifier.java
+package org.eclipse.stem.core.modifier;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * A {@link LongSequenceModifier} modifies a feature by setting it to a
+ * sequence of "long" values.
+ *
+ * @model
+ */
+public interface LongSequenceModifier extends SequenceModifier {
+ /**
+ * @model
+ */
+ EList<Long> getSequence();
+} // LongSequenceModifier \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/Modifiable.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/Modifiable.java
new file mode 100644
index 000000000..48a8d5400
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/Modifiable.java
@@ -0,0 +1,54 @@
+// Modifiable.java
+package org.eclipse.stem.core.modifier;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.core.runtime.IAdapterFactory;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.core.common.Identifiable;
+
+/**
+ * This interface is a "marker interface" used to identify {@link Identifiable}s
+ * that can be modified by a {@link Modifier}. The main use of this marker is in
+ * <a href="http://wiki.eclipse.org/Command_Core_Expressions">Command Core
+ * Expressions</a> where they are used in <em>adapt</em> elements to test if the
+ * current selection can be adapted to the type <code>Modifiable</code>. </p>
+ * <p>
+ * An example of its use can be found in
+ * <code>org.eclipse.stem.ui/plugin.xml</code>. In that file there are
+ * several instances of extensions of the extension point
+ * <code>org.eclipse.core.expressions.definitions</code>; one contains the
+ * definition of the expression
+ * <code>org.eclipse.stem.ui.isModifiableIdentifiable</code> which includes
+ * a test that the current selection can be adapted to <code>Modifiable</code>
+ * (among other things). The value of the expression is used to enable the
+ * command <code>org.eclipse.stem.ui.command.newmodifierwizard</code>
+ * defined via a <code>org.eclipse.ui.commands</code> extension point elsewhere
+ * in the same file. The command opens the wizard for creating a new
+ * <code>Modifiable</code> given the current selection. The "Create Modifier"
+ * entry in the popup context menu for the current selection will appear when
+ * this command is enabled.
+ * </p>
+ * <p>
+ * It is not sufficient to simply implement the <code>Modifiable</code>
+ * interface for this test to return <code>true</code> in the core expression.
+ * An instance of {@link IAdapterFactory} needs to be defined and then
+ * registered as a "run time adapter factory" using the extension point
+ * <code>org.eclipse.core.runtime.adapters</code>. The file
+ * <code>org.eclipse.stem.ui/plugin.xml</code> contains examples.
+ *
+ *
+ * @model interface="true"
+ */
+public interface Modifiable extends EObject {
+ // Nothing
+} // Modifiable \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/Modifier.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/Modifier.java
new file mode 100644
index 000000000..6a8afface
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/Modifier.java
@@ -0,0 +1,119 @@
+// Modifier.java
+package org.eclipse.stem.core.modifier;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.List;
+
+import javax.sql.rowset.Predicate;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.experiment.Experiment;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.graph.Label;
+import org.eclipse.stem.core.graph.LabelValue;
+import org.eclipse.stem.core.model.Decorator;
+import org.eclipse.stem.core.scenario.Scenario;
+import org.eclipse.stem.core.trigger.Trigger;
+
+/**
+ * A <code>Modifier</code> specifies the changes to be made to the features of
+ * an specific "target" {@link EObject}. It contains the {@link URI} of the
+ * {@link Identifiable} and a collection of {@link FeatureModifier}s that
+ * perform the actual feature modification. A <code>Modifier</code> can change
+ * the value of a feature in a {@link LabelValue}, instances of which are not
+ * {@link Identifiable}s. In such cases, the {@link URI} specifies the
+ * {@link Label} instance which contains a reference to the {@link LabelValue}
+ * instance that will be modified.
+ * <p>
+ * <code>Modifiers</code> are used by both {@link Experiment}s and
+ * {@link Trigger}s to modify elements of a canonical {@link Graph} that
+ * represents simulation state. In the former case, the <code>Modifier</code>
+ * makes alterations to a {@link Scenario} instance before it is used to launch
+ * a Simulation. In the later case, a <code>Modifier</code> is used as a
+ * {@link Decorator} that is conditionally enabled by the value of the
+ * {@link Predicate} referenced by a {@link Trigger}.
+ * <p>
+ * The {@link FeatureModifier}s perform the actual modifications to the
+ * {@link EObject}s.
+ * <p>
+ * This interface definition is also an "Annotated Java Interface" that defines
+ * one class in a <a href="http://www.uml.org/">UML</a> "model". The UML class
+ * diagram for the model is in the <code>documentation</code> folder of the
+ * project. This file and the other interfaces in this Java package are
+ * processed by the Eclipse Modeling Framework (aka EMF <a
+ * href="http://org.eclipse/emf">http://org.eclipse/emf</a>). to automatically
+ * generate an implementation of the model. EMF is documented in the book <a
+ * href="http://www.awprofessional.com/bookstore/product.asp?isbn=0131425420&rl=1">Eclipse
+ * Modeling Framework </a> by Budinsky, et al.
+ * </p>
+ * @model
+ */
+public interface Modifier extends Decorator {
+
+ String URI_TYPE_MODIFIER_SEGMENT = "modifier";
+
+ /**
+ * @model
+ */
+ URI getTargetURI();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.modifier.Modifier#getTargetURI <em>Target URI</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Target URI</em>' attribute.
+ * @see #getTargetURI()
+ * @generated
+ */
+ void setTargetURI(URI value);
+
+ /**
+ * @model containment="true"
+ */
+ EList<FeatureModifier> getFeatureModifiers();
+
+ /**
+ * @param baseScenario
+ * the {@link Scenario} to be modified.
+ *
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ void updateScenario(final Scenario baseScenario);
+
+ /**
+ * @return a {@link List} of {@link String}s that summarize the
+ * modifications made to the last {@link Scenario} by the call to
+ * {@link #updateScenario(Scenario)}.
+ * model volatile="true" transient="true" changeable="false"
+ */
+ List<String> getModificationSummary();
+
+ /**
+ * @return <code>true</code> if all of the modifications to the
+ * {@link Identifiable} have been completed, <code>false</code>,
+ * otherwise.
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ boolean isComplete();
+
+ /**
+ * Restore the value of all of the features being modified to their original
+ * values.
+ *
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ void reset();
+} // Modifier
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/ModifierFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/ModifierFactory.java
new file mode 100644
index 000000000..6bfa374cd
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/ModifierFactory.java
@@ -0,0 +1,222 @@
+package org.eclipse.stem.core.modifier;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.ModifierPackage
+ * @generated
+ */
+public interface ModifierFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ ModifierFactory eINSTANCE = org.eclipse.stem.core.modifier.impl.ModifierFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Double NOP Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Double NOP Modifier</em>'.
+ * @generated
+ */
+ DoubleNOPModifier createDoubleNOPModifier();
+
+ /**
+ * Returns a new object of class '<em>Double Range Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Double Range Modifier</em>'.
+ * @generated
+ */
+ DoubleRangeModifier createDoubleRangeModifier();
+
+ /**
+ * Returns a new object of class '<em>Double Sequence Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Double Sequence Modifier</em>'.
+ * @generated
+ */
+ DoubleSequenceModifier createDoubleSequenceModifier();
+
+ /**
+ * Returns a new object of class '<em>Integer NOP Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Integer NOP Modifier</em>'.
+ * @generated
+ */
+ IntegerNOPModifier createIntegerNOPModifier();
+
+ /**
+ * Returns a new object of class '<em>Integer Range Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Integer Range Modifier</em>'.
+ * @generated
+ */
+ IntegerRangeModifier createIntegerRangeModifier();
+
+ /**
+ * Returns a new object of class '<em>Integer Sequence Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Integer Sequence Modifier</em>'.
+ * @generated
+ */
+ IntegerSequenceModifier createIntegerSequenceModifier();
+
+ /**
+ * Returns a new object of class '<em>Long NOP Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Long NOP Modifier</em>'.
+ * @generated
+ */
+ LongNOPModifier createLongNOPModifier();
+
+ /**
+ * Returns a new object of class '<em>Long Range Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Long Range Modifier</em>'.
+ * @generated
+ */
+ LongRangeModifier createLongRangeModifier();
+
+ /**
+ * Returns a new object of class '<em>Long Sequence Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Long Sequence Modifier</em>'.
+ * @generated
+ */
+ LongSequenceModifier createLongSequenceModifier();
+
+ /**
+ * Returns a new object of class '<em>Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Modifier</em>'.
+ * @generated
+ */
+ Modifier createModifier();
+
+ /**
+ * Returns a new object of class '<em>NOP Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>NOP Modifier</em>'.
+ * @generated
+ */
+ NOPModifier createNOPModifier();
+
+ /**
+ * Returns a new object of class '<em>STEM Time NOP Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>STEM Time NOP Modifier</em>'.
+ * @generated
+ */
+ STEMTimeNOPModifier createSTEMTimeNOPModifier();
+
+ /**
+ * Returns a new object of class '<em>STEM Time Range Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>STEM Time Range Modifier</em>'.
+ * @generated
+ */
+ STEMTimeRangeModifier createSTEMTimeRangeModifier();
+
+ /**
+ * Returns a new object of class '<em>STEM Time Sequence Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>STEM Time Sequence Modifier</em>'.
+ * @generated
+ */
+ STEMTimeSequenceModifier createSTEMTimeSequenceModifier();
+
+ /**
+ * Returns a new object of class '<em>String NOP Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>String NOP Modifier</em>'.
+ * @generated
+ */
+ StringNOPModifier createStringNOPModifier();
+
+ /**
+ * Returns a new object of class '<em>String Sequence Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>String Sequence Modifier</em>'.
+ * @generated
+ */
+ StringSequenceModifier createStringSequenceModifier();
+
+ /**
+ * Returns a new object of class '<em>Double Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Double Modifier</em>'.
+ * @generated
+ */
+ DoubleModifier createDoubleModifier();
+
+ /**
+ * Returns a new object of class '<em>Integer Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Integer Modifier</em>'.
+ * @generated
+ */
+ IntegerModifier createIntegerModifier();
+
+ /**
+ * Returns a new object of class '<em>Long Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Long Modifier</em>'.
+ * @generated
+ */
+ LongModifier createLongModifier();
+
+ /**
+ * Returns a new object of class '<em>STEM Time Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>STEM Time Modifier</em>'.
+ * @generated
+ */
+ STEMTimeModifier createSTEMTimeModifier();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ ModifierPackage getModifierPackage();
+
+} //ModifierFactory
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/ModifierPackage.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/ModifierPackage.java
new file mode 100644
index 000000000..950534452
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/ModifierPackage.java
@@ -0,0 +1,3795 @@
+package org.eclipse.stem.core.modifier;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.stem.core.model.ModelPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.ModifierFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface ModifierPackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "modifier"; //$NON-NLS-1$
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http:///org/eclipse/stem/core/modifier.ecore"; //$NON-NLS-1$
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "org.eclipse.stem.core.modifier"; //$NON-NLS-1$
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ ModifierPackage eINSTANCE = org.eclipse.stem.core.modifier.impl.ModifierPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.modifier.impl.FeatureModifierImpl <em>Feature Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.FeatureModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getFeatureModifier()
+ * @generated
+ */
+ int FEATURE_MODIFIER = 3;
+
+ /**
+ * The feature id for the '<em><b>Target</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FEATURE_MODIFIER__TARGET = 0;
+
+ /**
+ * The feature id for the '<em><b>EStructural Feature</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FEATURE_MODIFIER__ESTRUCTURAL_FEATURE = 1;
+
+ /**
+ * The feature id for the '<em><b>Feature Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FEATURE_MODIFIER__FEATURE_NAME = 2;
+
+ /**
+ * The feature id for the '<em><b>Feature Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FEATURE_MODIFIER__FEATURE_ID = 3;
+
+ /**
+ * The feature id for the '<em><b>Current Value Text</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FEATURE_MODIFIER__CURRENT_VALUE_TEXT = 4;
+
+ /**
+ * The feature id for the '<em><b>Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FEATURE_MODIFIER__COMPLETE = 5;
+
+ /**
+ * The number of structural features of the '<em>Feature Modifier</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FEATURE_MODIFIER_FEATURE_COUNT = 6;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.modifier.impl.NOPModifierImpl <em>NOP Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.NOPModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getNOPModifier()
+ * @generated
+ */
+ int NOP_MODIFIER = 11;
+
+ /**
+ * The feature id for the '<em><b>Target</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NOP_MODIFIER__TARGET = FEATURE_MODIFIER__TARGET;
+
+ /**
+ * The feature id for the '<em><b>EStructural Feature</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NOP_MODIFIER__ESTRUCTURAL_FEATURE = FEATURE_MODIFIER__ESTRUCTURAL_FEATURE;
+
+ /**
+ * The feature id for the '<em><b>Feature Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NOP_MODIFIER__FEATURE_NAME = FEATURE_MODIFIER__FEATURE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Feature Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NOP_MODIFIER__FEATURE_ID = FEATURE_MODIFIER__FEATURE_ID;
+
+ /**
+ * The feature id for the '<em><b>Current Value Text</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NOP_MODIFIER__CURRENT_VALUE_TEXT = FEATURE_MODIFIER__CURRENT_VALUE_TEXT;
+
+ /**
+ * The feature id for the '<em><b>Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NOP_MODIFIER__COMPLETE = FEATURE_MODIFIER__COMPLETE;
+
+ /**
+ * The number of structural features of the '<em>NOP Modifier</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NOP_MODIFIER_FEATURE_COUNT = FEATURE_MODIFIER_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.modifier.impl.DoubleNOPModifierImpl <em>Double NOP Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.DoubleNOPModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getDoubleNOPModifier()
+ * @generated
+ */
+ int DOUBLE_NOP_MODIFIER = 0;
+
+ /**
+ * The feature id for the '<em><b>Target</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_NOP_MODIFIER__TARGET = NOP_MODIFIER__TARGET;
+
+ /**
+ * The feature id for the '<em><b>EStructural Feature</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_NOP_MODIFIER__ESTRUCTURAL_FEATURE = NOP_MODIFIER__ESTRUCTURAL_FEATURE;
+
+ /**
+ * The feature id for the '<em><b>Feature Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_NOP_MODIFIER__FEATURE_NAME = NOP_MODIFIER__FEATURE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Feature Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_NOP_MODIFIER__FEATURE_ID = NOP_MODIFIER__FEATURE_ID;
+
+ /**
+ * The feature id for the '<em><b>Current Value Text</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_NOP_MODIFIER__CURRENT_VALUE_TEXT = NOP_MODIFIER__CURRENT_VALUE_TEXT;
+
+ /**
+ * The feature id for the '<em><b>Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_NOP_MODIFIER__COMPLETE = NOP_MODIFIER__COMPLETE;
+
+ /**
+ * The number of structural features of the '<em>Double NOP Modifier</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_NOP_MODIFIER_FEATURE_COUNT = NOP_MODIFIER_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.modifier.impl.RangeModifierImpl <em>Range Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.RangeModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getRangeModifier()
+ * @generated
+ */
+ int RANGE_MODIFIER = 12;
+
+ /**
+ * The feature id for the '<em><b>Target</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int RANGE_MODIFIER__TARGET = FEATURE_MODIFIER__TARGET;
+
+ /**
+ * The feature id for the '<em><b>EStructural Feature</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int RANGE_MODIFIER__ESTRUCTURAL_FEATURE = FEATURE_MODIFIER__ESTRUCTURAL_FEATURE;
+
+ /**
+ * The feature id for the '<em><b>Feature Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int RANGE_MODIFIER__FEATURE_NAME = FEATURE_MODIFIER__FEATURE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Feature Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int RANGE_MODIFIER__FEATURE_ID = FEATURE_MODIFIER__FEATURE_ID;
+
+ /**
+ * The feature id for the '<em><b>Current Value Text</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int RANGE_MODIFIER__CURRENT_VALUE_TEXT = FEATURE_MODIFIER__CURRENT_VALUE_TEXT;
+
+ /**
+ * The feature id for the '<em><b>Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int RANGE_MODIFIER__COMPLETE = FEATURE_MODIFIER__COMPLETE;
+
+ /**
+ * The number of structural features of the '<em>Range Modifier</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int RANGE_MODIFIER_FEATURE_COUNT = FEATURE_MODIFIER_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.modifier.impl.DoubleRangeModifierImpl <em>Double Range Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.DoubleRangeModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getDoubleRangeModifier()
+ * @generated
+ */
+ int DOUBLE_RANGE_MODIFIER = 1;
+
+ /**
+ * The feature id for the '<em><b>Target</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_RANGE_MODIFIER__TARGET = RANGE_MODIFIER__TARGET;
+
+ /**
+ * The feature id for the '<em><b>EStructural Feature</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_RANGE_MODIFIER__ESTRUCTURAL_FEATURE = RANGE_MODIFIER__ESTRUCTURAL_FEATURE;
+
+ /**
+ * The feature id for the '<em><b>Feature Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_RANGE_MODIFIER__FEATURE_NAME = RANGE_MODIFIER__FEATURE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Feature Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_RANGE_MODIFIER__FEATURE_ID = RANGE_MODIFIER__FEATURE_ID;
+
+ /**
+ * The feature id for the '<em><b>Current Value Text</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_RANGE_MODIFIER__CURRENT_VALUE_TEXT = RANGE_MODIFIER__CURRENT_VALUE_TEXT;
+
+ /**
+ * The feature id for the '<em><b>Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_RANGE_MODIFIER__COMPLETE = RANGE_MODIFIER__COMPLETE;
+
+ /**
+ * The feature id for the '<em><b>Start Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_RANGE_MODIFIER__START_VALUE = RANGE_MODIFIER_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>End Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_RANGE_MODIFIER__END_VALUE = RANGE_MODIFIER_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Increment</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_RANGE_MODIFIER__INCREMENT = RANGE_MODIFIER_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Next Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_RANGE_MODIFIER__NEXT_VALUE = RANGE_MODIFIER_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Original Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_RANGE_MODIFIER__ORIGINAL_VALUE = RANGE_MODIFIER_FEATURE_COUNT + 4;
+
+ /**
+ * The number of structural features of the '<em>Double Range Modifier</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_RANGE_MODIFIER_FEATURE_COUNT = RANGE_MODIFIER_FEATURE_COUNT + 5;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.modifier.impl.SequenceModifierImpl <em>Sequence Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.SequenceModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getSequenceModifier()
+ * @generated
+ */
+ int SEQUENCE_MODIFIER = 16;
+
+ /**
+ * The feature id for the '<em><b>Target</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENCE_MODIFIER__TARGET = FEATURE_MODIFIER__TARGET;
+
+ /**
+ * The feature id for the '<em><b>EStructural Feature</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENCE_MODIFIER__ESTRUCTURAL_FEATURE = FEATURE_MODIFIER__ESTRUCTURAL_FEATURE;
+
+ /**
+ * The feature id for the '<em><b>Feature Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENCE_MODIFIER__FEATURE_NAME = FEATURE_MODIFIER__FEATURE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Feature Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENCE_MODIFIER__FEATURE_ID = FEATURE_MODIFIER__FEATURE_ID;
+
+ /**
+ * The feature id for the '<em><b>Current Value Text</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENCE_MODIFIER__CURRENT_VALUE_TEXT = FEATURE_MODIFIER__CURRENT_VALUE_TEXT;
+
+ /**
+ * The feature id for the '<em><b>Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENCE_MODIFIER__COMPLETE = FEATURE_MODIFIER__COMPLETE;
+
+ /**
+ * The feature id for the '<em><b>Sequence Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENCE_MODIFIER__SEQUENCE_SIZE = FEATURE_MODIFIER_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Current Sequence Index</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENCE_MODIFIER__CURRENT_SEQUENCE_INDEX = FEATURE_MODIFIER_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Next Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENCE_MODIFIER__NEXT_VALUE = FEATURE_MODIFIER_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Original Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENCE_MODIFIER__ORIGINAL_VALUE = FEATURE_MODIFIER_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>Sequence Modifier</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENCE_MODIFIER_FEATURE_COUNT = FEATURE_MODIFIER_FEATURE_COUNT + 4;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.modifier.impl.DoubleSequenceModifierImpl <em>Double Sequence Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.DoubleSequenceModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getDoubleSequenceModifier()
+ * @generated
+ */
+ int DOUBLE_SEQUENCE_MODIFIER = 2;
+
+ /**
+ * The feature id for the '<em><b>Target</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_SEQUENCE_MODIFIER__TARGET = SEQUENCE_MODIFIER__TARGET;
+
+ /**
+ * The feature id for the '<em><b>EStructural Feature</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_SEQUENCE_MODIFIER__ESTRUCTURAL_FEATURE = SEQUENCE_MODIFIER__ESTRUCTURAL_FEATURE;
+
+ /**
+ * The feature id for the '<em><b>Feature Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_SEQUENCE_MODIFIER__FEATURE_NAME = SEQUENCE_MODIFIER__FEATURE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Feature Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_SEQUENCE_MODIFIER__FEATURE_ID = SEQUENCE_MODIFIER__FEATURE_ID;
+
+ /**
+ * The feature id for the '<em><b>Current Value Text</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_SEQUENCE_MODIFIER__CURRENT_VALUE_TEXT = SEQUENCE_MODIFIER__CURRENT_VALUE_TEXT;
+
+ /**
+ * The feature id for the '<em><b>Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_SEQUENCE_MODIFIER__COMPLETE = SEQUENCE_MODIFIER__COMPLETE;
+
+ /**
+ * The feature id for the '<em><b>Sequence Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_SEQUENCE_MODIFIER__SEQUENCE_SIZE = SEQUENCE_MODIFIER__SEQUENCE_SIZE;
+
+ /**
+ * The feature id for the '<em><b>Current Sequence Index</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_SEQUENCE_MODIFIER__CURRENT_SEQUENCE_INDEX = SEQUENCE_MODIFIER__CURRENT_SEQUENCE_INDEX;
+
+ /**
+ * The feature id for the '<em><b>Next Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_SEQUENCE_MODIFIER__NEXT_VALUE = SEQUENCE_MODIFIER__NEXT_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Original Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_SEQUENCE_MODIFIER__ORIGINAL_VALUE = SEQUENCE_MODIFIER__ORIGINAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Sequence</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_SEQUENCE_MODIFIER__SEQUENCE = SEQUENCE_MODIFIER_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Double Sequence Modifier</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_SEQUENCE_MODIFIER_FEATURE_COUNT = SEQUENCE_MODIFIER_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.modifier.impl.IntegerNOPModifierImpl <em>Integer NOP Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.IntegerNOPModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getIntegerNOPModifier()
+ * @generated
+ */
+ int INTEGER_NOP_MODIFIER = 4;
+
+ /**
+ * The feature id for the '<em><b>Target</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_NOP_MODIFIER__TARGET = NOP_MODIFIER__TARGET;
+
+ /**
+ * The feature id for the '<em><b>EStructural Feature</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_NOP_MODIFIER__ESTRUCTURAL_FEATURE = NOP_MODIFIER__ESTRUCTURAL_FEATURE;
+
+ /**
+ * The feature id for the '<em><b>Feature Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_NOP_MODIFIER__FEATURE_NAME = NOP_MODIFIER__FEATURE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Feature Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_NOP_MODIFIER__FEATURE_ID = NOP_MODIFIER__FEATURE_ID;
+
+ /**
+ * The feature id for the '<em><b>Current Value Text</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_NOP_MODIFIER__CURRENT_VALUE_TEXT = NOP_MODIFIER__CURRENT_VALUE_TEXT;
+
+ /**
+ * The feature id for the '<em><b>Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_NOP_MODIFIER__COMPLETE = NOP_MODIFIER__COMPLETE;
+
+ /**
+ * The number of structural features of the '<em>Integer NOP Modifier</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_NOP_MODIFIER_FEATURE_COUNT = NOP_MODIFIER_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.modifier.impl.IntegerRangeModifierImpl <em>Integer Range Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.IntegerRangeModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getIntegerRangeModifier()
+ * @generated
+ */
+ int INTEGER_RANGE_MODIFIER = 5;
+
+ /**
+ * The feature id for the '<em><b>Target</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_RANGE_MODIFIER__TARGET = RANGE_MODIFIER__TARGET;
+
+ /**
+ * The feature id for the '<em><b>EStructural Feature</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_RANGE_MODIFIER__ESTRUCTURAL_FEATURE = RANGE_MODIFIER__ESTRUCTURAL_FEATURE;
+
+ /**
+ * The feature id for the '<em><b>Feature Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_RANGE_MODIFIER__FEATURE_NAME = RANGE_MODIFIER__FEATURE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Feature Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_RANGE_MODIFIER__FEATURE_ID = RANGE_MODIFIER__FEATURE_ID;
+
+ /**
+ * The feature id for the '<em><b>Current Value Text</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_RANGE_MODIFIER__CURRENT_VALUE_TEXT = RANGE_MODIFIER__CURRENT_VALUE_TEXT;
+
+ /**
+ * The feature id for the '<em><b>Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_RANGE_MODIFIER__COMPLETE = RANGE_MODIFIER__COMPLETE;
+
+ /**
+ * The feature id for the '<em><b>Start Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_RANGE_MODIFIER__START_VALUE = RANGE_MODIFIER_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>End Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_RANGE_MODIFIER__END_VALUE = RANGE_MODIFIER_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Increment</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_RANGE_MODIFIER__INCREMENT = RANGE_MODIFIER_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Next Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_RANGE_MODIFIER__NEXT_VALUE = RANGE_MODIFIER_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Original Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_RANGE_MODIFIER__ORIGINAL_VALUE = RANGE_MODIFIER_FEATURE_COUNT + 4;
+
+ /**
+ * The number of structural features of the '<em>Integer Range Modifier</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_RANGE_MODIFIER_FEATURE_COUNT = RANGE_MODIFIER_FEATURE_COUNT + 5;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.modifier.impl.IntegerSequenceModifierImpl <em>Integer Sequence Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.IntegerSequenceModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getIntegerSequenceModifier()
+ * @generated
+ */
+ int INTEGER_SEQUENCE_MODIFIER = 6;
+
+ /**
+ * The feature id for the '<em><b>Target</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_SEQUENCE_MODIFIER__TARGET = SEQUENCE_MODIFIER__TARGET;
+
+ /**
+ * The feature id for the '<em><b>EStructural Feature</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_SEQUENCE_MODIFIER__ESTRUCTURAL_FEATURE = SEQUENCE_MODIFIER__ESTRUCTURAL_FEATURE;
+
+ /**
+ * The feature id for the '<em><b>Feature Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_SEQUENCE_MODIFIER__FEATURE_NAME = SEQUENCE_MODIFIER__FEATURE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Feature Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_SEQUENCE_MODIFIER__FEATURE_ID = SEQUENCE_MODIFIER__FEATURE_ID;
+
+ /**
+ * The feature id for the '<em><b>Current Value Text</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_SEQUENCE_MODIFIER__CURRENT_VALUE_TEXT = SEQUENCE_MODIFIER__CURRENT_VALUE_TEXT;
+
+ /**
+ * The feature id for the '<em><b>Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_SEQUENCE_MODIFIER__COMPLETE = SEQUENCE_MODIFIER__COMPLETE;
+
+ /**
+ * The feature id for the '<em><b>Sequence Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_SEQUENCE_MODIFIER__SEQUENCE_SIZE = SEQUENCE_MODIFIER__SEQUENCE_SIZE;
+
+ /**
+ * The feature id for the '<em><b>Current Sequence Index</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_SEQUENCE_MODIFIER__CURRENT_SEQUENCE_INDEX = SEQUENCE_MODIFIER__CURRENT_SEQUENCE_INDEX;
+
+ /**
+ * The feature id for the '<em><b>Next Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_SEQUENCE_MODIFIER__NEXT_VALUE = SEQUENCE_MODIFIER__NEXT_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Original Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_SEQUENCE_MODIFIER__ORIGINAL_VALUE = SEQUENCE_MODIFIER__ORIGINAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Sequence</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_SEQUENCE_MODIFIER__SEQUENCE = SEQUENCE_MODIFIER_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Integer Sequence Modifier</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_SEQUENCE_MODIFIER_FEATURE_COUNT = SEQUENCE_MODIFIER_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.modifier.impl.LongNOPModifierImpl <em>Long NOP Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.LongNOPModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getLongNOPModifier()
+ * @generated
+ */
+ int LONG_NOP_MODIFIER = 7;
+
+ /**
+ * The feature id for the '<em><b>Target</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_NOP_MODIFIER__TARGET = NOP_MODIFIER__TARGET;
+
+ /**
+ * The feature id for the '<em><b>EStructural Feature</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_NOP_MODIFIER__ESTRUCTURAL_FEATURE = NOP_MODIFIER__ESTRUCTURAL_FEATURE;
+
+ /**
+ * The feature id for the '<em><b>Feature Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_NOP_MODIFIER__FEATURE_NAME = NOP_MODIFIER__FEATURE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Feature Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_NOP_MODIFIER__FEATURE_ID = NOP_MODIFIER__FEATURE_ID;
+
+ /**
+ * The feature id for the '<em><b>Current Value Text</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_NOP_MODIFIER__CURRENT_VALUE_TEXT = NOP_MODIFIER__CURRENT_VALUE_TEXT;
+
+ /**
+ * The feature id for the '<em><b>Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_NOP_MODIFIER__COMPLETE = NOP_MODIFIER__COMPLETE;
+
+ /**
+ * The number of structural features of the '<em>Long NOP Modifier</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_NOP_MODIFIER_FEATURE_COUNT = NOP_MODIFIER_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.modifier.impl.LongRangeModifierImpl <em>Long Range Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.LongRangeModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getLongRangeModifier()
+ * @generated
+ */
+ int LONG_RANGE_MODIFIER = 8;
+
+ /**
+ * The feature id for the '<em><b>Target</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_RANGE_MODIFIER__TARGET = RANGE_MODIFIER__TARGET;
+
+ /**
+ * The feature id for the '<em><b>EStructural Feature</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_RANGE_MODIFIER__ESTRUCTURAL_FEATURE = RANGE_MODIFIER__ESTRUCTURAL_FEATURE;
+
+ /**
+ * The feature id for the '<em><b>Feature Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_RANGE_MODIFIER__FEATURE_NAME = RANGE_MODIFIER__FEATURE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Feature Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_RANGE_MODIFIER__FEATURE_ID = RANGE_MODIFIER__FEATURE_ID;
+
+ /**
+ * The feature id for the '<em><b>Current Value Text</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_RANGE_MODIFIER__CURRENT_VALUE_TEXT = RANGE_MODIFIER__CURRENT_VALUE_TEXT;
+
+ /**
+ * The feature id for the '<em><b>Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_RANGE_MODIFIER__COMPLETE = RANGE_MODIFIER__COMPLETE;
+
+ /**
+ * The feature id for the '<em><b>Start Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_RANGE_MODIFIER__START_VALUE = RANGE_MODIFIER_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>End Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_RANGE_MODIFIER__END_VALUE = RANGE_MODIFIER_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Increment</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_RANGE_MODIFIER__INCREMENT = RANGE_MODIFIER_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Next Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_RANGE_MODIFIER__NEXT_VALUE = RANGE_MODIFIER_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Original Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_RANGE_MODIFIER__ORIGINAL_VALUE = RANGE_MODIFIER_FEATURE_COUNT + 4;
+
+ /**
+ * The number of structural features of the '<em>Long Range Modifier</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_RANGE_MODIFIER_FEATURE_COUNT = RANGE_MODIFIER_FEATURE_COUNT + 5;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.modifier.impl.LongSequenceModifierImpl <em>Long Sequence Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.LongSequenceModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getLongSequenceModifier()
+ * @generated
+ */
+ int LONG_SEQUENCE_MODIFIER = 9;
+
+ /**
+ * The feature id for the '<em><b>Target</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_SEQUENCE_MODIFIER__TARGET = SEQUENCE_MODIFIER__TARGET;
+
+ /**
+ * The feature id for the '<em><b>EStructural Feature</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_SEQUENCE_MODIFIER__ESTRUCTURAL_FEATURE = SEQUENCE_MODIFIER__ESTRUCTURAL_FEATURE;
+
+ /**
+ * The feature id for the '<em><b>Feature Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_SEQUENCE_MODIFIER__FEATURE_NAME = SEQUENCE_MODIFIER__FEATURE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Feature Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_SEQUENCE_MODIFIER__FEATURE_ID = SEQUENCE_MODIFIER__FEATURE_ID;
+
+ /**
+ * The feature id for the '<em><b>Current Value Text</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_SEQUENCE_MODIFIER__CURRENT_VALUE_TEXT = SEQUENCE_MODIFIER__CURRENT_VALUE_TEXT;
+
+ /**
+ * The feature id for the '<em><b>Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_SEQUENCE_MODIFIER__COMPLETE = SEQUENCE_MODIFIER__COMPLETE;
+
+ /**
+ * The feature id for the '<em><b>Sequence Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_SEQUENCE_MODIFIER__SEQUENCE_SIZE = SEQUENCE_MODIFIER__SEQUENCE_SIZE;
+
+ /**
+ * The feature id for the '<em><b>Current Sequence Index</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_SEQUENCE_MODIFIER__CURRENT_SEQUENCE_INDEX = SEQUENCE_MODIFIER__CURRENT_SEQUENCE_INDEX;
+
+ /**
+ * The feature id for the '<em><b>Next Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_SEQUENCE_MODIFIER__NEXT_VALUE = SEQUENCE_MODIFIER__NEXT_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Original Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_SEQUENCE_MODIFIER__ORIGINAL_VALUE = SEQUENCE_MODIFIER__ORIGINAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Sequence</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_SEQUENCE_MODIFIER__SEQUENCE = SEQUENCE_MODIFIER_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Long Sequence Modifier</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_SEQUENCE_MODIFIER_FEATURE_COUNT = SEQUENCE_MODIFIER_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.modifier.impl.ModifierImpl <em>Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.ModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getModifier()
+ * @generated
+ */
+ int MODIFIER = 10;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MODIFIER__URI = ModelPackage.DECORATOR__URI;
+
+ /**
+ * The feature id for the '<em><b>Type URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MODIFIER__TYPE_URI = ModelPackage.DECORATOR__TYPE_URI;
+
+ /**
+ * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MODIFIER__DUBLIN_CORE = ModelPackage.DECORATOR__DUBLIN_CORE;
+
+ /**
+ * The feature id for the '<em><b>Labels To Update</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MODIFIER__LABELS_TO_UPDATE = ModelPackage.DECORATOR__LABELS_TO_UPDATE;
+
+ /**
+ * The feature id for the '<em><b>Graph</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MODIFIER__GRAPH = ModelPackage.DECORATOR__GRAPH;
+
+ /**
+ * The feature id for the '<em><b>Enabled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MODIFIER__ENABLED = ModelPackage.DECORATOR__ENABLED;
+
+ /**
+ * The feature id for the '<em><b>Graph Decorated</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MODIFIER__GRAPH_DECORATED = ModelPackage.DECORATOR__GRAPH_DECORATED;
+
+ /**
+ * The feature id for the '<em><b>Progress</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MODIFIER__PROGRESS = ModelPackage.DECORATOR__PROGRESS;
+
+ /**
+ * The feature id for the '<em><b>Target URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MODIFIER__TARGET_URI = ModelPackage.DECORATOR_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Feature Modifiers</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MODIFIER__FEATURE_MODIFIERS = ModelPackage.DECORATOR_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MODIFIER__COMPLETE = ModelPackage.DECORATOR_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Modifier</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MODIFIER_FEATURE_COUNT = ModelPackage.DECORATOR_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.modifier.impl.STEMTimeNOPModifierImpl <em>STEM Time NOP Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.STEMTimeNOPModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getSTEMTimeNOPModifier()
+ * @generated
+ */
+ int STEM_TIME_NOP_MODIFIER = 13;
+
+ /**
+ * The feature id for the '<em><b>Target</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_NOP_MODIFIER__TARGET = NOP_MODIFIER__TARGET;
+
+ /**
+ * The feature id for the '<em><b>EStructural Feature</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_NOP_MODIFIER__ESTRUCTURAL_FEATURE = NOP_MODIFIER__ESTRUCTURAL_FEATURE;
+
+ /**
+ * The feature id for the '<em><b>Feature Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_NOP_MODIFIER__FEATURE_NAME = NOP_MODIFIER__FEATURE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Feature Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_NOP_MODIFIER__FEATURE_ID = NOP_MODIFIER__FEATURE_ID;
+
+ /**
+ * The feature id for the '<em><b>Current Value Text</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_NOP_MODIFIER__CURRENT_VALUE_TEXT = NOP_MODIFIER__CURRENT_VALUE_TEXT;
+
+ /**
+ * The feature id for the '<em><b>Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_NOP_MODIFIER__COMPLETE = NOP_MODIFIER__COMPLETE;
+
+ /**
+ * The number of structural features of the '<em>STEM Time NOP Modifier</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_NOP_MODIFIER_FEATURE_COUNT = NOP_MODIFIER_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.modifier.impl.STEMTimeRangeModifierImpl <em>STEM Time Range Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.STEMTimeRangeModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getSTEMTimeRangeModifier()
+ * @generated
+ */
+ int STEM_TIME_RANGE_MODIFIER = 14;
+
+ /**
+ * The feature id for the '<em><b>Target</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_RANGE_MODIFIER__TARGET = RANGE_MODIFIER__TARGET;
+
+ /**
+ * The feature id for the '<em><b>EStructural Feature</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_RANGE_MODIFIER__ESTRUCTURAL_FEATURE = RANGE_MODIFIER__ESTRUCTURAL_FEATURE;
+
+ /**
+ * The feature id for the '<em><b>Feature Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_RANGE_MODIFIER__FEATURE_NAME = RANGE_MODIFIER__FEATURE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Feature Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_RANGE_MODIFIER__FEATURE_ID = RANGE_MODIFIER__FEATURE_ID;
+
+ /**
+ * The feature id for the '<em><b>Current Value Text</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_RANGE_MODIFIER__CURRENT_VALUE_TEXT = RANGE_MODIFIER__CURRENT_VALUE_TEXT;
+
+ /**
+ * The feature id for the '<em><b>Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_RANGE_MODIFIER__COMPLETE = RANGE_MODIFIER__COMPLETE;
+
+ /**
+ * The feature id for the '<em><b>Start Value</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_RANGE_MODIFIER__START_VALUE = RANGE_MODIFIER_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>End Value</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_RANGE_MODIFIER__END_VALUE = RANGE_MODIFIER_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Increment</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_RANGE_MODIFIER__INCREMENT = RANGE_MODIFIER_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Next Value</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_RANGE_MODIFIER__NEXT_VALUE = RANGE_MODIFIER_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Original Value</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_RANGE_MODIFIER__ORIGINAL_VALUE = RANGE_MODIFIER_FEATURE_COUNT + 4;
+
+ /**
+ * The number of structural features of the '<em>STEM Time Range Modifier</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_RANGE_MODIFIER_FEATURE_COUNT = RANGE_MODIFIER_FEATURE_COUNT + 5;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.modifier.impl.STEMTimeSequenceModifierImpl <em>STEM Time Sequence Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.STEMTimeSequenceModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getSTEMTimeSequenceModifier()
+ * @generated
+ */
+ int STEM_TIME_SEQUENCE_MODIFIER = 15;
+
+ /**
+ * The feature id for the '<em><b>Target</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_SEQUENCE_MODIFIER__TARGET = SEQUENCE_MODIFIER__TARGET;
+
+ /**
+ * The feature id for the '<em><b>EStructural Feature</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_SEQUENCE_MODIFIER__ESTRUCTURAL_FEATURE = SEQUENCE_MODIFIER__ESTRUCTURAL_FEATURE;
+
+ /**
+ * The feature id for the '<em><b>Feature Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_SEQUENCE_MODIFIER__FEATURE_NAME = SEQUENCE_MODIFIER__FEATURE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Feature Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_SEQUENCE_MODIFIER__FEATURE_ID = SEQUENCE_MODIFIER__FEATURE_ID;
+
+ /**
+ * The feature id for the '<em><b>Current Value Text</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_SEQUENCE_MODIFIER__CURRENT_VALUE_TEXT = SEQUENCE_MODIFIER__CURRENT_VALUE_TEXT;
+
+ /**
+ * The feature id for the '<em><b>Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_SEQUENCE_MODIFIER__COMPLETE = SEQUENCE_MODIFIER__COMPLETE;
+
+ /**
+ * The feature id for the '<em><b>Sequence Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_SEQUENCE_MODIFIER__SEQUENCE_SIZE = SEQUENCE_MODIFIER__SEQUENCE_SIZE;
+
+ /**
+ * The feature id for the '<em><b>Current Sequence Index</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_SEQUENCE_MODIFIER__CURRENT_SEQUENCE_INDEX = SEQUENCE_MODIFIER__CURRENT_SEQUENCE_INDEX;
+
+ /**
+ * The feature id for the '<em><b>Next Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_SEQUENCE_MODIFIER__NEXT_VALUE = SEQUENCE_MODIFIER__NEXT_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Original Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_SEQUENCE_MODIFIER__ORIGINAL_VALUE = SEQUENCE_MODIFIER__ORIGINAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Sequence</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_SEQUENCE_MODIFIER__SEQUENCE = SEQUENCE_MODIFIER_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>STEM Time Sequence Modifier</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_SEQUENCE_MODIFIER_FEATURE_COUNT = SEQUENCE_MODIFIER_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.modifier.impl.StringNOPModifierImpl <em>String NOP Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.StringNOPModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getStringNOPModifier()
+ * @generated
+ */
+ int STRING_NOP_MODIFIER = 17;
+
+ /**
+ * The feature id for the '<em><b>Target</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_NOP_MODIFIER__TARGET = NOP_MODIFIER__TARGET;
+
+ /**
+ * The feature id for the '<em><b>EStructural Feature</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_NOP_MODIFIER__ESTRUCTURAL_FEATURE = NOP_MODIFIER__ESTRUCTURAL_FEATURE;
+
+ /**
+ * The feature id for the '<em><b>Feature Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_NOP_MODIFIER__FEATURE_NAME = NOP_MODIFIER__FEATURE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Feature Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_NOP_MODIFIER__FEATURE_ID = NOP_MODIFIER__FEATURE_ID;
+
+ /**
+ * The feature id for the '<em><b>Current Value Text</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_NOP_MODIFIER__CURRENT_VALUE_TEXT = NOP_MODIFIER__CURRENT_VALUE_TEXT;
+
+ /**
+ * The feature id for the '<em><b>Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_NOP_MODIFIER__COMPLETE = NOP_MODIFIER__COMPLETE;
+
+ /**
+ * The number of structural features of the '<em>String NOP Modifier</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_NOP_MODIFIER_FEATURE_COUNT = NOP_MODIFIER_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.modifier.impl.StringSequenceModifierImpl <em>String Sequence Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.StringSequenceModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getStringSequenceModifier()
+ * @generated
+ */
+ int STRING_SEQUENCE_MODIFIER = 18;
+
+ /**
+ * The feature id for the '<em><b>Target</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_SEQUENCE_MODIFIER__TARGET = SEQUENCE_MODIFIER__TARGET;
+
+ /**
+ * The feature id for the '<em><b>EStructural Feature</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_SEQUENCE_MODIFIER__ESTRUCTURAL_FEATURE = SEQUENCE_MODIFIER__ESTRUCTURAL_FEATURE;
+
+ /**
+ * The feature id for the '<em><b>Feature Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_SEQUENCE_MODIFIER__FEATURE_NAME = SEQUENCE_MODIFIER__FEATURE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Feature Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_SEQUENCE_MODIFIER__FEATURE_ID = SEQUENCE_MODIFIER__FEATURE_ID;
+
+ /**
+ * The feature id for the '<em><b>Current Value Text</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_SEQUENCE_MODIFIER__CURRENT_VALUE_TEXT = SEQUENCE_MODIFIER__CURRENT_VALUE_TEXT;
+
+ /**
+ * The feature id for the '<em><b>Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_SEQUENCE_MODIFIER__COMPLETE = SEQUENCE_MODIFIER__COMPLETE;
+
+ /**
+ * The feature id for the '<em><b>Sequence Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_SEQUENCE_MODIFIER__SEQUENCE_SIZE = SEQUENCE_MODIFIER__SEQUENCE_SIZE;
+
+ /**
+ * The feature id for the '<em><b>Current Sequence Index</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_SEQUENCE_MODIFIER__CURRENT_SEQUENCE_INDEX = SEQUENCE_MODIFIER__CURRENT_SEQUENCE_INDEX;
+
+ /**
+ * The feature id for the '<em><b>Next Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_SEQUENCE_MODIFIER__NEXT_VALUE = SEQUENCE_MODIFIER__NEXT_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Original Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_SEQUENCE_MODIFIER__ORIGINAL_VALUE = SEQUENCE_MODIFIER__ORIGINAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Sequence</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_SEQUENCE_MODIFIER__SEQUENCE = SEQUENCE_MODIFIER_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>String Sequence Modifier</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STRING_SEQUENCE_MODIFIER_FEATURE_COUNT = SEQUENCE_MODIFIER_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.modifier.Modifiable <em>Modifiable</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.Modifiable
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getModifiable()
+ * @generated
+ */
+ int MODIFIABLE = 19;
+
+ /**
+ * The number of structural features of the '<em>Modifiable</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MODIFIABLE_FEATURE_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.modifier.impl.SingleValueModifierImpl <em>Single Value Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.SingleValueModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getSingleValueModifier()
+ * @generated
+ */
+ int SINGLE_VALUE_MODIFIER = 20;
+
+ /**
+ * The feature id for the '<em><b>Target</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SINGLE_VALUE_MODIFIER__TARGET = FEATURE_MODIFIER__TARGET;
+
+ /**
+ * The feature id for the '<em><b>EStructural Feature</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SINGLE_VALUE_MODIFIER__ESTRUCTURAL_FEATURE = FEATURE_MODIFIER__ESTRUCTURAL_FEATURE;
+
+ /**
+ * The feature id for the '<em><b>Feature Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SINGLE_VALUE_MODIFIER__FEATURE_NAME = FEATURE_MODIFIER__FEATURE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Feature Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SINGLE_VALUE_MODIFIER__FEATURE_ID = FEATURE_MODIFIER__FEATURE_ID;
+
+ /**
+ * The feature id for the '<em><b>Current Value Text</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SINGLE_VALUE_MODIFIER__CURRENT_VALUE_TEXT = FEATURE_MODIFIER__CURRENT_VALUE_TEXT;
+
+ /**
+ * The feature id for the '<em><b>Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SINGLE_VALUE_MODIFIER__COMPLETE = FEATURE_MODIFIER__COMPLETE;
+
+ /**
+ * The number of structural features of the '<em>Single Value Modifier</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SINGLE_VALUE_MODIFIER_FEATURE_COUNT = FEATURE_MODIFIER_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.modifier.impl.DoubleModifierImpl <em>Double Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.DoubleModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getDoubleModifier()
+ * @generated
+ */
+ int DOUBLE_MODIFIER = 21;
+
+ /**
+ * The feature id for the '<em><b>Target</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_MODIFIER__TARGET = SINGLE_VALUE_MODIFIER__TARGET;
+
+ /**
+ * The feature id for the '<em><b>EStructural Feature</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_MODIFIER__ESTRUCTURAL_FEATURE = SINGLE_VALUE_MODIFIER__ESTRUCTURAL_FEATURE;
+
+ /**
+ * The feature id for the '<em><b>Feature Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_MODIFIER__FEATURE_NAME = SINGLE_VALUE_MODIFIER__FEATURE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Feature Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_MODIFIER__FEATURE_ID = SINGLE_VALUE_MODIFIER__FEATURE_ID;
+
+ /**
+ * The feature id for the '<em><b>Current Value Text</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_MODIFIER__CURRENT_VALUE_TEXT = SINGLE_VALUE_MODIFIER__CURRENT_VALUE_TEXT;
+
+ /**
+ * The feature id for the '<em><b>Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_MODIFIER__COMPLETE = SINGLE_VALUE_MODIFIER__COMPLETE;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_MODIFIER__VALUE = SINGLE_VALUE_MODIFIER_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Original Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_MODIFIER__ORIGINAL_VALUE = SINGLE_VALUE_MODIFIER_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Double Modifier</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOUBLE_MODIFIER_FEATURE_COUNT = SINGLE_VALUE_MODIFIER_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.modifier.impl.IntegerModifierImpl <em>Integer Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.IntegerModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getIntegerModifier()
+ * @generated
+ */
+ int INTEGER_MODIFIER = 22;
+
+ /**
+ * The feature id for the '<em><b>Target</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_MODIFIER__TARGET = SINGLE_VALUE_MODIFIER__TARGET;
+
+ /**
+ * The feature id for the '<em><b>EStructural Feature</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_MODIFIER__ESTRUCTURAL_FEATURE = SINGLE_VALUE_MODIFIER__ESTRUCTURAL_FEATURE;
+
+ /**
+ * The feature id for the '<em><b>Feature Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_MODIFIER__FEATURE_NAME = SINGLE_VALUE_MODIFIER__FEATURE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Feature Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_MODIFIER__FEATURE_ID = SINGLE_VALUE_MODIFIER__FEATURE_ID;
+
+ /**
+ * The feature id for the '<em><b>Current Value Text</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_MODIFIER__CURRENT_VALUE_TEXT = SINGLE_VALUE_MODIFIER__CURRENT_VALUE_TEXT;
+
+ /**
+ * The feature id for the '<em><b>Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_MODIFIER__COMPLETE = SINGLE_VALUE_MODIFIER__COMPLETE;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_MODIFIER__VALUE = SINGLE_VALUE_MODIFIER_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Original Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_MODIFIER__ORIGINAL_VALUE = SINGLE_VALUE_MODIFIER_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Integer Modifier</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTEGER_MODIFIER_FEATURE_COUNT = SINGLE_VALUE_MODIFIER_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.modifier.impl.LongModifierImpl <em>Long Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.LongModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getLongModifier()
+ * @generated
+ */
+ int LONG_MODIFIER = 23;
+
+ /**
+ * The feature id for the '<em><b>Target</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_MODIFIER__TARGET = SINGLE_VALUE_MODIFIER__TARGET;
+
+ /**
+ * The feature id for the '<em><b>EStructural Feature</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_MODIFIER__ESTRUCTURAL_FEATURE = SINGLE_VALUE_MODIFIER__ESTRUCTURAL_FEATURE;
+
+ /**
+ * The feature id for the '<em><b>Feature Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_MODIFIER__FEATURE_NAME = SINGLE_VALUE_MODIFIER__FEATURE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Feature Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_MODIFIER__FEATURE_ID = SINGLE_VALUE_MODIFIER__FEATURE_ID;
+
+ /**
+ * The feature id for the '<em><b>Current Value Text</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_MODIFIER__CURRENT_VALUE_TEXT = SINGLE_VALUE_MODIFIER__CURRENT_VALUE_TEXT;
+
+ /**
+ * The feature id for the '<em><b>Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_MODIFIER__COMPLETE = SINGLE_VALUE_MODIFIER__COMPLETE;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_MODIFIER__VALUE = SINGLE_VALUE_MODIFIER_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Original Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_MODIFIER__ORIGINAL_VALUE = SINGLE_VALUE_MODIFIER_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Long Modifier</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int LONG_MODIFIER_FEATURE_COUNT = SINGLE_VALUE_MODIFIER_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.modifier.impl.STEMTimeModifierImpl <em>STEM Time Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.STEMTimeModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getSTEMTimeModifier()
+ * @generated
+ */
+ int STEM_TIME_MODIFIER = 24;
+
+ /**
+ * The feature id for the '<em><b>Target</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_MODIFIER__TARGET = SINGLE_VALUE_MODIFIER__TARGET;
+
+ /**
+ * The feature id for the '<em><b>EStructural Feature</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_MODIFIER__ESTRUCTURAL_FEATURE = SINGLE_VALUE_MODIFIER__ESTRUCTURAL_FEATURE;
+
+ /**
+ * The feature id for the '<em><b>Feature Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_MODIFIER__FEATURE_NAME = SINGLE_VALUE_MODIFIER__FEATURE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Feature Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_MODIFIER__FEATURE_ID = SINGLE_VALUE_MODIFIER__FEATURE_ID;
+
+ /**
+ * The feature id for the '<em><b>Current Value Text</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_MODIFIER__CURRENT_VALUE_TEXT = SINGLE_VALUE_MODIFIER__CURRENT_VALUE_TEXT;
+
+ /**
+ * The feature id for the '<em><b>Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_MODIFIER__COMPLETE = SINGLE_VALUE_MODIFIER__COMPLETE;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_MODIFIER__VALUE = SINGLE_VALUE_MODIFIER_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Original Value</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_MODIFIER__ORIGINAL_VALUE = SINGLE_VALUE_MODIFIER_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>STEM Time Modifier</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int STEM_TIME_MODIFIER_FEATURE_COUNT = SINGLE_VALUE_MODIFIER_FEATURE_COUNT + 2;
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.modifier.DoubleNOPModifier <em>Double NOP Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Double NOP Modifier</em>'.
+ * @see org.eclipse.stem.core.modifier.DoubleNOPModifier
+ * @generated
+ */
+ EClass getDoubleNOPModifier();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.modifier.DoubleRangeModifier <em>Double Range Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Double Range Modifier</em>'.
+ * @see org.eclipse.stem.core.modifier.DoubleRangeModifier
+ * @generated
+ */
+ EClass getDoubleRangeModifier();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.modifier.DoubleRangeModifier#getStartValue <em>Start Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Start Value</em>'.
+ * @see org.eclipse.stem.core.modifier.DoubleRangeModifier#getStartValue()
+ * @see #getDoubleRangeModifier()
+ * @generated
+ */
+ EAttribute getDoubleRangeModifier_StartValue();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.modifier.DoubleRangeModifier#getEndValue <em>End Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>End Value</em>'.
+ * @see org.eclipse.stem.core.modifier.DoubleRangeModifier#getEndValue()
+ * @see #getDoubleRangeModifier()
+ * @generated
+ */
+ EAttribute getDoubleRangeModifier_EndValue();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.modifier.DoubleRangeModifier#getIncrement <em>Increment</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Increment</em>'.
+ * @see org.eclipse.stem.core.modifier.DoubleRangeModifier#getIncrement()
+ * @see #getDoubleRangeModifier()
+ * @generated
+ */
+ EAttribute getDoubleRangeModifier_Increment();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.modifier.DoubleRangeModifier#getNextValue <em>Next Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Next Value</em>'.
+ * @see org.eclipse.stem.core.modifier.DoubleRangeModifier#getNextValue()
+ * @see #getDoubleRangeModifier()
+ * @generated
+ */
+ EAttribute getDoubleRangeModifier_NextValue();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.modifier.DoubleRangeModifier#getOriginalValue <em>Original Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Original Value</em>'.
+ * @see org.eclipse.stem.core.modifier.DoubleRangeModifier#getOriginalValue()
+ * @see #getDoubleRangeModifier()
+ * @generated
+ */
+ EAttribute getDoubleRangeModifier_OriginalValue();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.modifier.DoubleSequenceModifier <em>Double Sequence Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Double Sequence Modifier</em>'.
+ * @see org.eclipse.stem.core.modifier.DoubleSequenceModifier
+ * @generated
+ */
+ EClass getDoubleSequenceModifier();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.stem.core.modifier.DoubleSequenceModifier#getSequence <em>Sequence</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Sequence</em>'.
+ * @see org.eclipse.stem.core.modifier.DoubleSequenceModifier#getSequence()
+ * @see #getDoubleSequenceModifier()
+ * @generated
+ */
+ EAttribute getDoubleSequenceModifier_Sequence();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.modifier.FeatureModifier <em>Feature Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Feature Modifier</em>'.
+ * @see org.eclipse.stem.core.modifier.FeatureModifier
+ * @generated
+ */
+ EClass getFeatureModifier();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.core.modifier.FeatureModifier#getTarget <em>Target</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Target</em>'.
+ * @see org.eclipse.stem.core.modifier.FeatureModifier#getTarget()
+ * @see #getFeatureModifier()
+ * @generated
+ */
+ EReference getFeatureModifier_Target();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.core.modifier.FeatureModifier#getEStructuralFeature <em>EStructural Feature</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>EStructural Feature</em>'.
+ * @see org.eclipse.stem.core.modifier.FeatureModifier#getEStructuralFeature()
+ * @see #getFeatureModifier()
+ * @generated
+ */
+ EReference getFeatureModifier_EStructuralFeature();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.modifier.FeatureModifier#getFeatureName <em>Feature Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Feature Name</em>'.
+ * @see org.eclipse.stem.core.modifier.FeatureModifier#getFeatureName()
+ * @see #getFeatureModifier()
+ * @generated
+ */
+ EAttribute getFeatureModifier_FeatureName();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.modifier.FeatureModifier#getFeatureId <em>Feature Id</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Feature Id</em>'.
+ * @see org.eclipse.stem.core.modifier.FeatureModifier#getFeatureId()
+ * @see #getFeatureModifier()
+ * @generated
+ */
+ EAttribute getFeatureModifier_FeatureId();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.modifier.FeatureModifier#getCurrentValueText <em>Current Value Text</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Current Value Text</em>'.
+ * @see org.eclipse.stem.core.modifier.FeatureModifier#getCurrentValueText()
+ * @see #getFeatureModifier()
+ * @generated
+ */
+ EAttribute getFeatureModifier_CurrentValueText();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.modifier.FeatureModifier#isComplete <em>Complete</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Complete</em>'.
+ * @see org.eclipse.stem.core.modifier.FeatureModifier#isComplete()
+ * @see #getFeatureModifier()
+ * @generated
+ */
+ EAttribute getFeatureModifier_Complete();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.modifier.IntegerNOPModifier <em>Integer NOP Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Integer NOP Modifier</em>'.
+ * @see org.eclipse.stem.core.modifier.IntegerNOPModifier
+ * @generated
+ */
+ EClass getIntegerNOPModifier();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.modifier.IntegerRangeModifier <em>Integer Range Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Integer Range Modifier</em>'.
+ * @see org.eclipse.stem.core.modifier.IntegerRangeModifier
+ * @generated
+ */
+ EClass getIntegerRangeModifier();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.modifier.IntegerRangeModifier#getStartValue <em>Start Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Start Value</em>'.
+ * @see org.eclipse.stem.core.modifier.IntegerRangeModifier#getStartValue()
+ * @see #getIntegerRangeModifier()
+ * @generated
+ */
+ EAttribute getIntegerRangeModifier_StartValue();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.modifier.IntegerRangeModifier#getEndValue <em>End Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>End Value</em>'.
+ * @see org.eclipse.stem.core.modifier.IntegerRangeModifier#getEndValue()
+ * @see #getIntegerRangeModifier()
+ * @generated
+ */
+ EAttribute getIntegerRangeModifier_EndValue();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.modifier.IntegerRangeModifier#getIncrement <em>Increment</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Increment</em>'.
+ * @see org.eclipse.stem.core.modifier.IntegerRangeModifier#getIncrement()
+ * @see #getIntegerRangeModifier()
+ * @generated
+ */
+ EAttribute getIntegerRangeModifier_Increment();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.modifier.IntegerRangeModifier#getNextValue <em>Next Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Next Value</em>'.
+ * @see org.eclipse.stem.core.modifier.IntegerRangeModifier#getNextValue()
+ * @see #getIntegerRangeModifier()
+ * @generated
+ */
+ EAttribute getIntegerRangeModifier_NextValue();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.modifier.IntegerRangeModifier#getOriginalValue <em>Original Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Original Value</em>'.
+ * @see org.eclipse.stem.core.modifier.IntegerRangeModifier#getOriginalValue()
+ * @see #getIntegerRangeModifier()
+ * @generated
+ */
+ EAttribute getIntegerRangeModifier_OriginalValue();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.modifier.IntegerSequenceModifier <em>Integer Sequence Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Integer Sequence Modifier</em>'.
+ * @see org.eclipse.stem.core.modifier.IntegerSequenceModifier
+ * @generated
+ */
+ EClass getIntegerSequenceModifier();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.stem.core.modifier.IntegerSequenceModifier#getSequence <em>Sequence</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Sequence</em>'.
+ * @see org.eclipse.stem.core.modifier.IntegerSequenceModifier#getSequence()
+ * @see #getIntegerSequenceModifier()
+ * @generated
+ */
+ EAttribute getIntegerSequenceModifier_Sequence();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.modifier.LongNOPModifier <em>Long NOP Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Long NOP Modifier</em>'.
+ * @see org.eclipse.stem.core.modifier.LongNOPModifier
+ * @generated
+ */
+ EClass getLongNOPModifier();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.modifier.LongRangeModifier <em>Long Range Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Long Range Modifier</em>'.
+ * @see org.eclipse.stem.core.modifier.LongRangeModifier
+ * @generated
+ */
+ EClass getLongRangeModifier();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.modifier.LongRangeModifier#getStartValue <em>Start Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Start Value</em>'.
+ * @see org.eclipse.stem.core.modifier.LongRangeModifier#getStartValue()
+ * @see #getLongRangeModifier()
+ * @generated
+ */
+ EAttribute getLongRangeModifier_StartValue();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.modifier.LongRangeModifier#getEndValue <em>End Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>End Value</em>'.
+ * @see org.eclipse.stem.core.modifier.LongRangeModifier#getEndValue()
+ * @see #getLongRangeModifier()
+ * @generated
+ */
+ EAttribute getLongRangeModifier_EndValue();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.modifier.LongRangeModifier#getIncrement <em>Increment</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Increment</em>'.
+ * @see org.eclipse.stem.core.modifier.LongRangeModifier#getIncrement()
+ * @see #getLongRangeModifier()
+ * @generated
+ */
+ EAttribute getLongRangeModifier_Increment();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.modifier.LongRangeModifier#getNextValue <em>Next Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Next Value</em>'.
+ * @see org.eclipse.stem.core.modifier.LongRangeModifier#getNextValue()
+ * @see #getLongRangeModifier()
+ * @generated
+ */
+ EAttribute getLongRangeModifier_NextValue();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.modifier.LongRangeModifier#getOriginalValue <em>Original Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Original Value</em>'.
+ * @see org.eclipse.stem.core.modifier.LongRangeModifier#getOriginalValue()
+ * @see #getLongRangeModifier()
+ * @generated
+ */
+ EAttribute getLongRangeModifier_OriginalValue();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.modifier.LongSequenceModifier <em>Long Sequence Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Long Sequence Modifier</em>'.
+ * @see org.eclipse.stem.core.modifier.LongSequenceModifier
+ * @generated
+ */
+ EClass getLongSequenceModifier();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.stem.core.modifier.LongSequenceModifier#getSequence <em>Sequence</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Sequence</em>'.
+ * @see org.eclipse.stem.core.modifier.LongSequenceModifier#getSequence()
+ * @see #getLongSequenceModifier()
+ * @generated
+ */
+ EAttribute getLongSequenceModifier_Sequence();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.modifier.Modifier <em>Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Modifier</em>'.
+ * @see org.eclipse.stem.core.modifier.Modifier
+ * @generated
+ */
+ EClass getModifier();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.modifier.Modifier#getTargetURI <em>Target URI</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Target URI</em>'.
+ * @see org.eclipse.stem.core.modifier.Modifier#getTargetURI()
+ * @see #getModifier()
+ * @generated
+ */
+ EAttribute getModifier_TargetURI();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.stem.core.modifier.Modifier#getFeatureModifiers <em>Feature Modifiers</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Feature Modifiers</em>'.
+ * @see org.eclipse.stem.core.modifier.Modifier#getFeatureModifiers()
+ * @see #getModifier()
+ * @generated
+ */
+ EReference getModifier_FeatureModifiers();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.modifier.Modifier#isComplete <em>Complete</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Complete</em>'.
+ * @see org.eclipse.stem.core.modifier.Modifier#isComplete()
+ * @see #getModifier()
+ * @generated
+ */
+ EAttribute getModifier_Complete();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.modifier.NOPModifier <em>NOP Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>NOP Modifier</em>'.
+ * @see org.eclipse.stem.core.modifier.NOPModifier
+ * @generated
+ */
+ EClass getNOPModifier();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.modifier.RangeModifier <em>Range Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Range Modifier</em>'.
+ * @see org.eclipse.stem.core.modifier.RangeModifier
+ * @generated
+ */
+ EClass getRangeModifier();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.modifier.STEMTimeNOPModifier <em>STEM Time NOP Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>STEM Time NOP Modifier</em>'.
+ * @see org.eclipse.stem.core.modifier.STEMTimeNOPModifier
+ * @generated
+ */
+ EClass getSTEMTimeNOPModifier();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.modifier.STEMTimeRangeModifier <em>STEM Time Range Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>STEM Time Range Modifier</em>'.
+ * @see org.eclipse.stem.core.modifier.STEMTimeRangeModifier
+ * @generated
+ */
+ EClass getSTEMTimeRangeModifier();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.core.modifier.STEMTimeRangeModifier#getStartValue <em>Start Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Start Value</em>'.
+ * @see org.eclipse.stem.core.modifier.STEMTimeRangeModifier#getStartValue()
+ * @see #getSTEMTimeRangeModifier()
+ * @generated
+ */
+ EReference getSTEMTimeRangeModifier_StartValue();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.core.modifier.STEMTimeRangeModifier#getEndValue <em>End Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>End Value</em>'.
+ * @see org.eclipse.stem.core.modifier.STEMTimeRangeModifier#getEndValue()
+ * @see #getSTEMTimeRangeModifier()
+ * @generated
+ */
+ EReference getSTEMTimeRangeModifier_EndValue();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.modifier.STEMTimeRangeModifier#getIncrement <em>Increment</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Increment</em>'.
+ * @see org.eclipse.stem.core.modifier.STEMTimeRangeModifier#getIncrement()
+ * @see #getSTEMTimeRangeModifier()
+ * @generated
+ */
+ EAttribute getSTEMTimeRangeModifier_Increment();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.core.modifier.STEMTimeRangeModifier#getNextValue <em>Next Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Next Value</em>'.
+ * @see org.eclipse.stem.core.modifier.STEMTimeRangeModifier#getNextValue()
+ * @see #getSTEMTimeRangeModifier()
+ * @generated
+ */
+ EReference getSTEMTimeRangeModifier_NextValue();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.core.modifier.STEMTimeRangeModifier#getOriginalValue <em>Original Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Original Value</em>'.
+ * @see org.eclipse.stem.core.modifier.STEMTimeRangeModifier#getOriginalValue()
+ * @see #getSTEMTimeRangeModifier()
+ * @generated
+ */
+ EReference getSTEMTimeRangeModifier_OriginalValue();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.modifier.STEMTimeSequenceModifier <em>STEM Time Sequence Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>STEM Time Sequence Modifier</em>'.
+ * @see org.eclipse.stem.core.modifier.STEMTimeSequenceModifier
+ * @generated
+ */
+ EClass getSTEMTimeSequenceModifier();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.stem.core.modifier.STEMTimeSequenceModifier#getSequence <em>Sequence</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Sequence</em>'.
+ * @see org.eclipse.stem.core.modifier.STEMTimeSequenceModifier#getSequence()
+ * @see #getSTEMTimeSequenceModifier()
+ * @generated
+ */
+ EReference getSTEMTimeSequenceModifier_Sequence();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.modifier.SequenceModifier <em>Sequence Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Sequence Modifier</em>'.
+ * @see org.eclipse.stem.core.modifier.SequenceModifier
+ * @generated
+ */
+ EClass getSequenceModifier();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.modifier.SequenceModifier#getSequenceSize <em>Sequence Size</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Sequence Size</em>'.
+ * @see org.eclipse.stem.core.modifier.SequenceModifier#getSequenceSize()
+ * @see #getSequenceModifier()
+ * @generated
+ */
+ EAttribute getSequenceModifier_SequenceSize();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.modifier.SequenceModifier#getCurrentSequenceIndex <em>Current Sequence Index</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Current Sequence Index</em>'.
+ * @see org.eclipse.stem.core.modifier.SequenceModifier#getCurrentSequenceIndex()
+ * @see #getSequenceModifier()
+ * @generated
+ */
+ EAttribute getSequenceModifier_CurrentSequenceIndex();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.modifier.SequenceModifier#getNextValue <em>Next Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Next Value</em>'.
+ * @see org.eclipse.stem.core.modifier.SequenceModifier#getNextValue()
+ * @see #getSequenceModifier()
+ * @generated
+ */
+ EAttribute getSequenceModifier_NextValue();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.modifier.SequenceModifier#getOriginalValue <em>Original Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Original Value</em>'.
+ * @see org.eclipse.stem.core.modifier.SequenceModifier#getOriginalValue()
+ * @see #getSequenceModifier()
+ * @generated
+ */
+ EAttribute getSequenceModifier_OriginalValue();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.modifier.StringNOPModifier <em>String NOP Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>String NOP Modifier</em>'.
+ * @see org.eclipse.stem.core.modifier.StringNOPModifier
+ * @generated
+ */
+ EClass getStringNOPModifier();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.modifier.StringSequenceModifier <em>String Sequence Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>String Sequence Modifier</em>'.
+ * @see org.eclipse.stem.core.modifier.StringSequenceModifier
+ * @generated
+ */
+ EClass getStringSequenceModifier();
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.stem.core.modifier.StringSequenceModifier#getSequence <em>Sequence</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Sequence</em>'.
+ * @see org.eclipse.stem.core.modifier.StringSequenceModifier#getSequence()
+ * @see #getStringSequenceModifier()
+ * @generated
+ */
+ EAttribute getStringSequenceModifier_Sequence();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.modifier.Modifiable <em>Modifiable</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Modifiable</em>'.
+ * @see org.eclipse.stem.core.modifier.Modifiable
+ * @generated
+ */
+ EClass getModifiable();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.modifier.SingleValueModifier <em>Single Value Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Single Value Modifier</em>'.
+ * @see org.eclipse.stem.core.modifier.SingleValueModifier
+ * @generated
+ */
+ EClass getSingleValueModifier();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.modifier.DoubleModifier <em>Double Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Double Modifier</em>'.
+ * @see org.eclipse.stem.core.modifier.DoubleModifier
+ * @generated
+ */
+ EClass getDoubleModifier();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.modifier.DoubleModifier#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see org.eclipse.stem.core.modifier.DoubleModifier#getValue()
+ * @see #getDoubleModifier()
+ * @generated
+ */
+ EAttribute getDoubleModifier_Value();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.modifier.DoubleModifier#getOriginalValue <em>Original Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Original Value</em>'.
+ * @see org.eclipse.stem.core.modifier.DoubleModifier#getOriginalValue()
+ * @see #getDoubleModifier()
+ * @generated
+ */
+ EAttribute getDoubleModifier_OriginalValue();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.modifier.IntegerModifier <em>Integer Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Integer Modifier</em>'.
+ * @see org.eclipse.stem.core.modifier.IntegerModifier
+ * @generated
+ */
+ EClass getIntegerModifier();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.modifier.IntegerModifier#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see org.eclipse.stem.core.modifier.IntegerModifier#getValue()
+ * @see #getIntegerModifier()
+ * @generated
+ */
+ EAttribute getIntegerModifier_Value();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.modifier.IntegerModifier#getOriginalValue <em>Original Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Original Value</em>'.
+ * @see org.eclipse.stem.core.modifier.IntegerModifier#getOriginalValue()
+ * @see #getIntegerModifier()
+ * @generated
+ */
+ EAttribute getIntegerModifier_OriginalValue();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.modifier.LongModifier <em>Long Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Long Modifier</em>'.
+ * @see org.eclipse.stem.core.modifier.LongModifier
+ * @generated
+ */
+ EClass getLongModifier();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.modifier.LongModifier#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see org.eclipse.stem.core.modifier.LongModifier#getValue()
+ * @see #getLongModifier()
+ * @generated
+ */
+ EAttribute getLongModifier_Value();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.modifier.LongModifier#getOriginalValue <em>Original Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Original Value</em>'.
+ * @see org.eclipse.stem.core.modifier.LongModifier#getOriginalValue()
+ * @see #getLongModifier()
+ * @generated
+ */
+ EAttribute getLongModifier_OriginalValue();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.modifier.STEMTimeModifier <em>STEM Time Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>STEM Time Modifier</em>'.
+ * @see org.eclipse.stem.core.modifier.STEMTimeModifier
+ * @generated
+ */
+ EClass getSTEMTimeModifier();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.core.modifier.STEMTimeModifier#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Value</em>'.
+ * @see org.eclipse.stem.core.modifier.STEMTimeModifier#getValue()
+ * @see #getSTEMTimeModifier()
+ * @generated
+ */
+ EReference getSTEMTimeModifier_Value();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.core.modifier.STEMTimeModifier#getOriginalValue <em>Original Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Original Value</em>'.
+ * @see org.eclipse.stem.core.modifier.STEMTimeModifier#getOriginalValue()
+ * @see #getSTEMTimeModifier()
+ * @generated
+ */
+ EReference getSTEMTimeModifier_OriginalValue();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ ModifierFactory getModifierFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.modifier.impl.DoubleNOPModifierImpl <em>Double NOP Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.DoubleNOPModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getDoubleNOPModifier()
+ * @generated
+ */
+ EClass DOUBLE_NOP_MODIFIER = eINSTANCE.getDoubleNOPModifier();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.modifier.impl.DoubleRangeModifierImpl <em>Double Range Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.DoubleRangeModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getDoubleRangeModifier()
+ * @generated
+ */
+ EClass DOUBLE_RANGE_MODIFIER = eINSTANCE.getDoubleRangeModifier();
+
+ /**
+ * The meta object literal for the '<em><b>Start Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DOUBLE_RANGE_MODIFIER__START_VALUE = eINSTANCE.getDoubleRangeModifier_StartValue();
+
+ /**
+ * The meta object literal for the '<em><b>End Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DOUBLE_RANGE_MODIFIER__END_VALUE = eINSTANCE.getDoubleRangeModifier_EndValue();
+
+ /**
+ * The meta object literal for the '<em><b>Increment</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DOUBLE_RANGE_MODIFIER__INCREMENT = eINSTANCE.getDoubleRangeModifier_Increment();
+
+ /**
+ * The meta object literal for the '<em><b>Next Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DOUBLE_RANGE_MODIFIER__NEXT_VALUE = eINSTANCE.getDoubleRangeModifier_NextValue();
+
+ /**
+ * The meta object literal for the '<em><b>Original Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DOUBLE_RANGE_MODIFIER__ORIGINAL_VALUE = eINSTANCE.getDoubleRangeModifier_OriginalValue();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.modifier.impl.DoubleSequenceModifierImpl <em>Double Sequence Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.DoubleSequenceModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getDoubleSequenceModifier()
+ * @generated
+ */
+ EClass DOUBLE_SEQUENCE_MODIFIER = eINSTANCE.getDoubleSequenceModifier();
+
+ /**
+ * The meta object literal for the '<em><b>Sequence</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DOUBLE_SEQUENCE_MODIFIER__SEQUENCE = eINSTANCE.getDoubleSequenceModifier_Sequence();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.modifier.impl.FeatureModifierImpl <em>Feature Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.FeatureModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getFeatureModifier()
+ * @generated
+ */
+ EClass FEATURE_MODIFIER = eINSTANCE.getFeatureModifier();
+
+ /**
+ * The meta object literal for the '<em><b>Target</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference FEATURE_MODIFIER__TARGET = eINSTANCE.getFeatureModifier_Target();
+
+ /**
+ * The meta object literal for the '<em><b>EStructural Feature</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference FEATURE_MODIFIER__ESTRUCTURAL_FEATURE = eINSTANCE.getFeatureModifier_EStructuralFeature();
+
+ /**
+ * The meta object literal for the '<em><b>Feature Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute FEATURE_MODIFIER__FEATURE_NAME = eINSTANCE.getFeatureModifier_FeatureName();
+
+ /**
+ * The meta object literal for the '<em><b>Feature Id</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute FEATURE_MODIFIER__FEATURE_ID = eINSTANCE.getFeatureModifier_FeatureId();
+
+ /**
+ * The meta object literal for the '<em><b>Current Value Text</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute FEATURE_MODIFIER__CURRENT_VALUE_TEXT = eINSTANCE.getFeatureModifier_CurrentValueText();
+
+ /**
+ * The meta object literal for the '<em><b>Complete</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute FEATURE_MODIFIER__COMPLETE = eINSTANCE.getFeatureModifier_Complete();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.modifier.impl.IntegerNOPModifierImpl <em>Integer NOP Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.IntegerNOPModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getIntegerNOPModifier()
+ * @generated
+ */
+ EClass INTEGER_NOP_MODIFIER = eINSTANCE.getIntegerNOPModifier();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.modifier.impl.IntegerRangeModifierImpl <em>Integer Range Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.IntegerRangeModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getIntegerRangeModifier()
+ * @generated
+ */
+ EClass INTEGER_RANGE_MODIFIER = eINSTANCE.getIntegerRangeModifier();
+
+ /**
+ * The meta object literal for the '<em><b>Start Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute INTEGER_RANGE_MODIFIER__START_VALUE = eINSTANCE.getIntegerRangeModifier_StartValue();
+
+ /**
+ * The meta object literal for the '<em><b>End Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute INTEGER_RANGE_MODIFIER__END_VALUE = eINSTANCE.getIntegerRangeModifier_EndValue();
+
+ /**
+ * The meta object literal for the '<em><b>Increment</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute INTEGER_RANGE_MODIFIER__INCREMENT = eINSTANCE.getIntegerRangeModifier_Increment();
+
+ /**
+ * The meta object literal for the '<em><b>Next Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute INTEGER_RANGE_MODIFIER__NEXT_VALUE = eINSTANCE.getIntegerRangeModifier_NextValue();
+
+ /**
+ * The meta object literal for the '<em><b>Original Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute INTEGER_RANGE_MODIFIER__ORIGINAL_VALUE = eINSTANCE.getIntegerRangeModifier_OriginalValue();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.modifier.impl.IntegerSequenceModifierImpl <em>Integer Sequence Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.IntegerSequenceModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getIntegerSequenceModifier()
+ * @generated
+ */
+ EClass INTEGER_SEQUENCE_MODIFIER = eINSTANCE.getIntegerSequenceModifier();
+
+ /**
+ * The meta object literal for the '<em><b>Sequence</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute INTEGER_SEQUENCE_MODIFIER__SEQUENCE = eINSTANCE.getIntegerSequenceModifier_Sequence();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.modifier.impl.LongNOPModifierImpl <em>Long NOP Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.LongNOPModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getLongNOPModifier()
+ * @generated
+ */
+ EClass LONG_NOP_MODIFIER = eINSTANCE.getLongNOPModifier();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.modifier.impl.LongRangeModifierImpl <em>Long Range Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.LongRangeModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getLongRangeModifier()
+ * @generated
+ */
+ EClass LONG_RANGE_MODIFIER = eINSTANCE.getLongRangeModifier();
+
+ /**
+ * The meta object literal for the '<em><b>Start Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute LONG_RANGE_MODIFIER__START_VALUE = eINSTANCE.getLongRangeModifier_StartValue();
+
+ /**
+ * The meta object literal for the '<em><b>End Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute LONG_RANGE_MODIFIER__END_VALUE = eINSTANCE.getLongRangeModifier_EndValue();
+
+ /**
+ * The meta object literal for the '<em><b>Increment</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute LONG_RANGE_MODIFIER__INCREMENT = eINSTANCE.getLongRangeModifier_Increment();
+
+ /**
+ * The meta object literal for the '<em><b>Next Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute LONG_RANGE_MODIFIER__NEXT_VALUE = eINSTANCE.getLongRangeModifier_NextValue();
+
+ /**
+ * The meta object literal for the '<em><b>Original Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute LONG_RANGE_MODIFIER__ORIGINAL_VALUE = eINSTANCE.getLongRangeModifier_OriginalValue();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.modifier.impl.LongSequenceModifierImpl <em>Long Sequence Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.LongSequenceModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getLongSequenceModifier()
+ * @generated
+ */
+ EClass LONG_SEQUENCE_MODIFIER = eINSTANCE.getLongSequenceModifier();
+
+ /**
+ * The meta object literal for the '<em><b>Sequence</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute LONG_SEQUENCE_MODIFIER__SEQUENCE = eINSTANCE.getLongSequenceModifier_Sequence();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.modifier.impl.ModifierImpl <em>Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.ModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getModifier()
+ * @generated
+ */
+ EClass MODIFIER = eINSTANCE.getModifier();
+
+ /**
+ * The meta object literal for the '<em><b>Target URI</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute MODIFIER__TARGET_URI = eINSTANCE.getModifier_TargetURI();
+
+ /**
+ * The meta object literal for the '<em><b>Feature Modifiers</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference MODIFIER__FEATURE_MODIFIERS = eINSTANCE.getModifier_FeatureModifiers();
+
+ /**
+ * The meta object literal for the '<em><b>Complete</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute MODIFIER__COMPLETE = eINSTANCE.getModifier_Complete();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.modifier.impl.NOPModifierImpl <em>NOP Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.NOPModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getNOPModifier()
+ * @generated
+ */
+ EClass NOP_MODIFIER = eINSTANCE.getNOPModifier();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.modifier.impl.RangeModifierImpl <em>Range Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.RangeModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getRangeModifier()
+ * @generated
+ */
+ EClass RANGE_MODIFIER = eINSTANCE.getRangeModifier();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.modifier.impl.STEMTimeNOPModifierImpl <em>STEM Time NOP Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.STEMTimeNOPModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getSTEMTimeNOPModifier()
+ * @generated
+ */
+ EClass STEM_TIME_NOP_MODIFIER = eINSTANCE.getSTEMTimeNOPModifier();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.modifier.impl.STEMTimeRangeModifierImpl <em>STEM Time Range Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.STEMTimeRangeModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getSTEMTimeRangeModifier()
+ * @generated
+ */
+ EClass STEM_TIME_RANGE_MODIFIER = eINSTANCE.getSTEMTimeRangeModifier();
+
+ /**
+ * The meta object literal for the '<em><b>Start Value</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference STEM_TIME_RANGE_MODIFIER__START_VALUE = eINSTANCE.getSTEMTimeRangeModifier_StartValue();
+
+ /**
+ * The meta object literal for the '<em><b>End Value</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference STEM_TIME_RANGE_MODIFIER__END_VALUE = eINSTANCE.getSTEMTimeRangeModifier_EndValue();
+
+ /**
+ * The meta object literal for the '<em><b>Increment</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute STEM_TIME_RANGE_MODIFIER__INCREMENT = eINSTANCE.getSTEMTimeRangeModifier_Increment();
+
+ /**
+ * The meta object literal for the '<em><b>Next Value</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference STEM_TIME_RANGE_MODIFIER__NEXT_VALUE = eINSTANCE.getSTEMTimeRangeModifier_NextValue();
+
+ /**
+ * The meta object literal for the '<em><b>Original Value</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference STEM_TIME_RANGE_MODIFIER__ORIGINAL_VALUE = eINSTANCE.getSTEMTimeRangeModifier_OriginalValue();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.modifier.impl.STEMTimeSequenceModifierImpl <em>STEM Time Sequence Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.STEMTimeSequenceModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getSTEMTimeSequenceModifier()
+ * @generated
+ */
+ EClass STEM_TIME_SEQUENCE_MODIFIER = eINSTANCE.getSTEMTimeSequenceModifier();
+
+ /**
+ * The meta object literal for the '<em><b>Sequence</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference STEM_TIME_SEQUENCE_MODIFIER__SEQUENCE = eINSTANCE.getSTEMTimeSequenceModifier_Sequence();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.modifier.impl.SequenceModifierImpl <em>Sequence Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.SequenceModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getSequenceModifier()
+ * @generated
+ */
+ EClass SEQUENCE_MODIFIER = eINSTANCE.getSequenceModifier();
+
+ /**
+ * The meta object literal for the '<em><b>Sequence Size</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute SEQUENCE_MODIFIER__SEQUENCE_SIZE = eINSTANCE.getSequenceModifier_SequenceSize();
+
+ /**
+ * The meta object literal for the '<em><b>Current Sequence Index</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute SEQUENCE_MODIFIER__CURRENT_SEQUENCE_INDEX = eINSTANCE.getSequenceModifier_CurrentSequenceIndex();
+
+ /**
+ * The meta object literal for the '<em><b>Next Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute SEQUENCE_MODIFIER__NEXT_VALUE = eINSTANCE.getSequenceModifier_NextValue();
+
+ /**
+ * The meta object literal for the '<em><b>Original Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute SEQUENCE_MODIFIER__ORIGINAL_VALUE = eINSTANCE.getSequenceModifier_OriginalValue();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.modifier.impl.StringNOPModifierImpl <em>String NOP Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.StringNOPModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getStringNOPModifier()
+ * @generated
+ */
+ EClass STRING_NOP_MODIFIER = eINSTANCE.getStringNOPModifier();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.modifier.impl.StringSequenceModifierImpl <em>String Sequence Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.StringSequenceModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getStringSequenceModifier()
+ * @generated
+ */
+ EClass STRING_SEQUENCE_MODIFIER = eINSTANCE.getStringSequenceModifier();
+
+ /**
+ * The meta object literal for the '<em><b>Sequence</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute STRING_SEQUENCE_MODIFIER__SEQUENCE = eINSTANCE.getStringSequenceModifier_Sequence();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.modifier.Modifiable <em>Modifiable</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.Modifiable
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getModifiable()
+ * @generated
+ */
+ EClass MODIFIABLE = eINSTANCE.getModifiable();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.modifier.impl.SingleValueModifierImpl <em>Single Value Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.SingleValueModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getSingleValueModifier()
+ * @generated
+ */
+ EClass SINGLE_VALUE_MODIFIER = eINSTANCE.getSingleValueModifier();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.modifier.impl.DoubleModifierImpl <em>Double Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.DoubleModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getDoubleModifier()
+ * @generated
+ */
+ EClass DOUBLE_MODIFIER = eINSTANCE.getDoubleModifier();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DOUBLE_MODIFIER__VALUE = eINSTANCE.getDoubleModifier_Value();
+
+ /**
+ * The meta object literal for the '<em><b>Original Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DOUBLE_MODIFIER__ORIGINAL_VALUE = eINSTANCE.getDoubleModifier_OriginalValue();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.modifier.impl.IntegerModifierImpl <em>Integer Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.IntegerModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getIntegerModifier()
+ * @generated
+ */
+ EClass INTEGER_MODIFIER = eINSTANCE.getIntegerModifier();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute INTEGER_MODIFIER__VALUE = eINSTANCE.getIntegerModifier_Value();
+
+ /**
+ * The meta object literal for the '<em><b>Original Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute INTEGER_MODIFIER__ORIGINAL_VALUE = eINSTANCE.getIntegerModifier_OriginalValue();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.modifier.impl.LongModifierImpl <em>Long Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.LongModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getLongModifier()
+ * @generated
+ */
+ EClass LONG_MODIFIER = eINSTANCE.getLongModifier();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute LONG_MODIFIER__VALUE = eINSTANCE.getLongModifier_Value();
+
+ /**
+ * The meta object literal for the '<em><b>Original Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute LONG_MODIFIER__ORIGINAL_VALUE = eINSTANCE.getLongModifier_OriginalValue();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.modifier.impl.STEMTimeModifierImpl <em>STEM Time Modifier</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.impl.STEMTimeModifierImpl
+ * @see org.eclipse.stem.core.modifier.impl.ModifierPackageImpl#getSTEMTimeModifier()
+ * @generated
+ */
+ EClass STEM_TIME_MODIFIER = eINSTANCE.getSTEMTimeModifier();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference STEM_TIME_MODIFIER__VALUE = eINSTANCE.getSTEMTimeModifier_Value();
+
+ /**
+ * The meta object literal for the '<em><b>Original Value</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference STEM_TIME_MODIFIER__ORIGINAL_VALUE = eINSTANCE.getSTEMTimeModifier_OriginalValue();
+
+ }
+
+} //ModifierPackage
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/NOPModifier.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/NOPModifier.java
new file mode 100644
index 000000000..3a91de6a9
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/NOPModifier.java
@@ -0,0 +1,24 @@
+// NOPModifier.java
+package org.eclipse.stem.core.modifier;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+/**
+ * A <code>NOPModifier</code> does nothing. It is useful for the GUI
+ * components that edit {@link FeatureModifier}s to have one that is available
+ * for the case when no {@link FeatureModifier} is specified by the user.
+ *
+ * @model
+ */
+public interface NOPModifier extends FeatureModifier {
+ // Nothing
+} // NOPModifier
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/RangeModifier.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/RangeModifier.java
new file mode 100644
index 000000000..c2d338b7b
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/RangeModifier.java
@@ -0,0 +1,29 @@
+// RangeModifier.java
+package org.eclipse.stem.core.modifier;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+/**
+ * A <code>RangeModifier</code> modifies the value of a numeric
+ * {@link EStructuralFeature} over a specific range of values. A
+ * <code>RangeModifier</code> specifies a starting value, an ending value and an
+ * increment. The increment is successively applied to the starting value until
+ * the result exceeds the end value. If the increment is negative, the end value
+ * must be less than the starting value.
+ *
+ * @model abstract="true"
+ */
+public interface RangeModifier extends FeatureModifier {
+ // Nothing
+} // RangeModifier
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/STEMTimeModifier.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/STEMTimeModifier.java
new file mode 100644
index 000000000..32ad9c788
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/STEMTimeModifier.java
@@ -0,0 +1,87 @@
+package org.eclipse.stem.core.modifier;
+
+/*******************************************************************************
+ * Copyright (c) 2009 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
+ *******************************************************************************/
+
+import org.eclipse.stem.core.model.STEMTime;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>STEM Time Modifier</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.modifier.STEMTimeModifier#getValue <em>Value</em>}</li>
+ * <li>{@link org.eclipse.stem.core.modifier.STEMTimeModifier#getOriginalValue <em>Original Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.core.modifier.ModifierPackage#getSTEMTimeModifier()
+ * @model
+ * @generated
+ */
+public interface STEMTimeModifier extends SingleValueModifier {
+
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Value</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' reference.
+ * @see #setValue(STEMTime)
+ * @see org.eclipse.stem.core.modifier.ModifierPackage#getSTEMTimeModifier_Value()
+ * @model
+ * @generated
+ */
+ STEMTime getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.modifier.STEMTimeModifier#getValue <em>Value</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' reference.
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(STEMTime value);
+
+ /**
+ * Returns the value of the '<em><b>Original Value</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Original Value</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Original Value</em>' reference.
+ * @see #setOriginalValue(STEMTime)
+ * @see org.eclipse.stem.core.modifier.ModifierPackage#getSTEMTimeModifier_OriginalValue()
+ * @model transient="true"
+ * @generated
+ */
+ STEMTime getOriginalValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.modifier.STEMTimeModifier#getOriginalValue <em>Original Value</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Original Value</em>' reference.
+ * @see #getOriginalValue()
+ * @generated
+ */
+ void setOriginalValue(STEMTime value);
+} // STEMTimeModifier
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/STEMTimeNOPModifier.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/STEMTimeNOPModifier.java
new file mode 100644
index 000000000..9a9ff55b1
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/STEMTimeNOPModifier.java
@@ -0,0 +1,24 @@
+// STEMTimeNOPModifier.java
+package org.eclipse.stem.core.modifier;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+/**
+ * A <code>NOPModifier</code> does nothing. It is useful for the GUI
+ * components that edit {@link FeatureModifier}s to have one that is available
+ * for the case when no {@link FeatureModifier} is specified by the user.
+ *
+ * @model
+ */
+public interface STEMTimeNOPModifier extends NOPModifier {
+ // Nothing
+} // STEMTimeNOPModifier \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/STEMTimeRangeModifier.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/STEMTimeRangeModifier.java
new file mode 100644
index 000000000..b38427fbe
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/STEMTimeRangeModifier.java
@@ -0,0 +1,98 @@
+// STEMTimeRangeModifier.java
+package org.eclipse.stem.core.modifier;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.stem.core.model.STEMTime;
+
+/**
+ * A <code>STEMTimeRangeModifier</code> modifies an {@link STEMTime} valued
+ * feature from a starting value to and end value (inclusive> by increments.
+ *
+ * @model
+ */
+public interface STEMTimeRangeModifier extends RangeModifier {
+
+ /**
+ * @model
+ */
+ STEMTime getOriginalValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.modifier.STEMTimeRangeModifier#getOriginalValue <em>Original Value</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Original Value</em>' reference.
+ * @see #getOriginalValue()
+ * @generated
+ */
+ void setOriginalValue(STEMTime value);
+
+ /**
+ * @model
+ */
+ STEMTime getStartValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.modifier.STEMTimeRangeModifier#getStartValue <em>Start Value</em>}' reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @param value the new value of the '<em>Start Value</em>' reference.
+ * @see #getStartValue()
+ * @generated
+ */
+ void setStartValue(STEMTime value);
+
+ /**
+ * @model
+ */
+ STEMTime getEndValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.modifier.STEMTimeRangeModifier#getEndValue <em>End Value</em>}' reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @param value the new value of the '<em>End Value</em>' reference.
+ * @see #getEndValue()
+ * @generated
+ */
+ void setEndValue(STEMTime value);
+
+ /**
+ * @model
+ */
+ long getIncrement();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.modifier.STEMTimeRangeModifier#getIncrement <em>Increment</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @param value the new value of the '<em>Increment</em>' attribute.
+ * @see #getIncrement()
+ * @generated
+ */
+ void setIncrement(long value);
+
+ /**
+ * @return the next value of the feature
+ * @model changeable="true"
+ */
+ STEMTime getNextValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.modifier.STEMTimeRangeModifier#getNextValue <em>Next Value</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Next Value</em>' reference.
+ * @see #getNextValue()
+ * @generated
+ */
+ void setNextValue(STEMTime value);
+
+} // STEMTimeRangeModifier
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/STEMTimeSequenceModifier.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/STEMTimeSequenceModifier.java
new file mode 100644
index 000000000..b8646ad03
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/STEMTimeSequenceModifier.java
@@ -0,0 +1,29 @@
+// STEMTimeSequenceModifier.java
+package org.eclipse.stem.core.modifier;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.stem.core.model.STEMTime;
+
+/**
+ * A {@link STEMTimeSequenceModifier} modifies a feature by setting it to a
+ * sequence of "STEMTime" values.
+ *
+ * @model
+ */
+public interface STEMTimeSequenceModifier extends SequenceModifier {
+ /**
+ * @model
+ */
+ EList<STEMTime> getSequence();
+} // STEMTimeSequenceModifier
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/SequenceModifier.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/SequenceModifier.java
new file mode 100644
index 000000000..b3f0f4bd9
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/SequenceModifier.java
@@ -0,0 +1,76 @@
+// SequenceModifier.java
+package org.eclipse.stem.core.modifier;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+
+/**
+ * A {@link SequenceModifier} modifies a feature by setting it to a
+ * sequence of specific values.
+ *
+ * @model abstract="true"
+ */
+public interface SequenceModifier extends FeatureModifier {
+
+ /**
+ * @model
+ */
+ Object getOriginalValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.modifier.SequenceModifier#getOriginalValue <em>Original Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Original Value</em>' attribute.
+ * @see #getOriginalValue()
+ * @generated
+ */
+ void setOriginalValue(Object value);
+
+ /**
+ * @return the number of entries in the collection of values.
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ int getSequenceSize();
+
+ /**
+ * @return the index of the current value in the sequence
+ * @model default="0"
+ */
+ int getCurrentSequenceIndex();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.modifier.SequenceModifier#getCurrentSequenceIndex <em>Current Sequence Index</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Current Sequence Index</em>' attribute.
+ * @see #getCurrentSequenceIndex()
+ * @generated
+ */
+ void setCurrentSequenceIndex(int value);
+
+ /**
+ * @return the next value in the sequence
+ * @model volatile="true" transient="true" changeable="true"
+ */
+ Object getNextValue();
+
+ /**
+ * Returns whether the value of the '{@link org.eclipse.stem.core.modifier.SequenceModifier#getNextValue <em>Next Value</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Next Value</em>' attribute is set.
+ * @see #getNextValue()
+ * @generated
+ */
+ boolean isSetNextValue();
+} // SequenceModifier
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/SingleValueModifier.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/SingleValueModifier.java
new file mode 100644
index 000000000..5c2f29c8c
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/SingleValueModifier.java
@@ -0,0 +1,21 @@
+package org.eclipse.stem.core.modifier;
+
+/*******************************************************************************
+ * Copyright (c) 2009 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
+ *******************************************************************************/
+/**
+ * A special case of Range Modifier where the start and end value are the same
+ *
+ * @see org.eclipse.stem.core.modifier.ModifierPackage#getSingleValueModifier()
+ * @model abstract="true"
+ * @generated
+ */
+public interface SingleValueModifier extends FeatureModifier {
+} // SingleValueModifier
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/StringNOPModifier.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/StringNOPModifier.java
new file mode 100644
index 000000000..2f3097677
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/StringNOPModifier.java
@@ -0,0 +1,24 @@
+// StringNOPModifier.java
+package org.eclipse.stem.core.modifier;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+/**
+ * A <code>NOPModifier</code> does nothing. It is useful for the GUI
+ * components that edit {@link FeatureModifier}s to have one that is available
+ * for the case when no {@link FeatureModifier} is specified by the user.
+ *
+ * @model
+ */
+public interface StringNOPModifier extends NOPModifier {
+ // Nothing
+} // StringNOPModifier
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/StringSequenceModifier.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/StringSequenceModifier.java
new file mode 100644
index 000000000..1879d21ca
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/StringSequenceModifier.java
@@ -0,0 +1,28 @@
+// StringSequenceModifier.java
+package org.eclipse.stem.core.modifier;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * A {@link StringSequenceModifier} modifies a feature by setting it to a
+ * sequence of "String" values.
+ *
+ * @model
+ */
+public interface StringSequenceModifier extends SequenceModifier {
+ /**
+ * @model
+ */
+ EList<String> getSequence();
+} // StringSequenceModifier
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/DoubleModifierImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/DoubleModifierImpl.java
new file mode 100644
index 000000000..73ecf6f6c
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/DoubleModifierImpl.java
@@ -0,0 +1,258 @@
+package org.eclipse.stem.core.modifier.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2009 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.stem.core.modifier.DoubleModifier;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Double Modifier</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.DoubleModifierImpl#getValue <em>Value</em>}</li>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.DoubleModifierImpl#getOriginalValue <em>Original Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DoubleModifierImpl extends SingleValueModifierImpl implements DoubleModifier {
+ /**
+ * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected static final double VALUE_EDEFAULT = 0.0;
+ /**
+ * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected double value = VALUE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getOriginalValue() <em>Original Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOriginalValue()
+ * @generated
+ * @ordered
+ */
+ protected static final double ORIGINAL_VALUE_EDEFAULT = -1.0E200;
+ /**
+ * The cached value of the '{@link #getOriginalValue() <em>Original Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOriginalValue()
+ * @generated
+ * @ordered
+ */
+ protected double originalValue = ORIGINAL_VALUE_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DoubleModifierImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ModifierPackage.Literals.DOUBLE_MODIFIER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public double getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValue(double newValue) {
+ double oldValue = value;
+ value = newValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModifierPackage.DOUBLE_MODIFIER__VALUE, oldValue, value));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public double getOriginalValue() {
+ return originalValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setOriginalValue(double newOriginalValue) {
+ double oldOriginalValue = originalValue;
+ originalValue = newOriginalValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModifierPackage.DOUBLE_MODIFIER__ORIGINAL_VALUE, oldOriginalValue, originalValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ModifierPackage.DOUBLE_MODIFIER__VALUE:
+ return getValue();
+ case ModifierPackage.DOUBLE_MODIFIER__ORIGINAL_VALUE:
+ return getOriginalValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ModifierPackage.DOUBLE_MODIFIER__VALUE:
+ setValue((Double)newValue);
+ return;
+ case ModifierPackage.DOUBLE_MODIFIER__ORIGINAL_VALUE:
+ setOriginalValue((Double)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ModifierPackage.DOUBLE_MODIFIER__VALUE:
+ setValue(VALUE_EDEFAULT);
+ return;
+ case ModifierPackage.DOUBLE_MODIFIER__ORIGINAL_VALUE:
+ setOriginalValue(ORIGINAL_VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ModifierPackage.DOUBLE_MODIFIER__VALUE:
+ return value != VALUE_EDEFAULT;
+ case ModifierPackage.DOUBLE_MODIFIER__ORIGINAL_VALUE:
+ return originalValue != ORIGINAL_VALUE_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.FeatureModifierImpl#updateFeature()
+ */
+
+ @SuppressWarnings("boxing")
+ @Override
+ public void updateFeature() {
+ // Original value captured yet?
+ if (!eIsSet(ModifierPackage.DOUBLE_MODIFIER__ORIGINAL_VALUE)) {
+ // No
+ setOriginalValue((Double)target.eGet(getEStructuralFeature()));
+ } // if
+ target.eSet(getEStructuralFeature(), getValue());
+ complete = true;
+ } // updateFeature
+
+
+ /**
+ *reset
+ */
+ @Override
+ public void reset() {
+ complete = false;
+ double originalValue = getOriginalValue();
+ if(originalValue != ORIGINAL_VALUE_EDEFAULT) // We don't want to set it if it hasn't been captured yet.
+ target.eSet(getEStructuralFeature(), getOriginalValue());
+ setOriginalValue(ORIGINAL_VALUE_EDEFAULT); // To make sure we capture any new value next time simulation is run
+ }
+
+ private boolean complete = false;
+ /**
+ * isComplete
+ */
+ @Override
+ public boolean isComplete() {
+ return complete;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (value: "); //$NON-NLS-1$
+ result.append(value);
+ result.append(", originalValue: "); //$NON-NLS-1$
+ result.append(originalValue);
+ result.append(')');
+ return result.toString();
+ }
+
+} //DoubleModifierImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/DoubleNOPModifierImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/DoubleNOPModifierImpl.java
new file mode 100644
index 000000000..3f98a416b
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/DoubleNOPModifierImpl.java
@@ -0,0 +1,47 @@
+package org.eclipse.stem.core.modifier.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.modifier.DoubleNOPModifier;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Double NOP Modifier</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class DoubleNOPModifierImpl extends NOPModifierImpl implements DoubleNOPModifier {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DoubleNOPModifierImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ModifierPackage.Literals.DOUBLE_NOP_MODIFIER;
+ }
+
+} // DoubleNOPModifierImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/DoubleRangeModifierImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/DoubleRangeModifierImpl.java
new file mode 100644
index 000000000..4d2bf91c0
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/DoubleRangeModifierImpl.java
@@ -0,0 +1,426 @@
+package org.eclipse.stem.core.modifier.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.stem.core.modifier.DoubleRangeModifier;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Double Range Modifier</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.DoubleRangeModifierImpl#getStartValue <em>Start Value</em>}</li>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.DoubleRangeModifierImpl#getEndValue <em>End Value</em>}</li>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.DoubleRangeModifierImpl#getIncrement <em>Increment</em>}</li>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.DoubleRangeModifierImpl#getNextValue <em>Next Value</em>}</li>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.DoubleRangeModifierImpl#getOriginalValue <em>Original Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+@SuppressWarnings("boxing")
+public class DoubleRangeModifierImpl extends RangeModifierImpl implements
+ DoubleRangeModifier {
+ /**
+ * The default value of the '{@link #getStartValue() <em>Start Value</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getStartValue()
+ * @generated
+ * @ordered
+ */
+ protected static final double START_VALUE_EDEFAULT = -9.9999999E7;
+ /**
+ * The cached value of the '{@link #getStartValue() <em>Start Value</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getStartValue()
+ * @generated
+ * @ordered
+ */
+ protected double startValue = START_VALUE_EDEFAULT;
+ /**
+ * The default value of the '{@link #getEndValue() <em>End Value</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getEndValue()
+ * @generated
+ * @ordered
+ */
+ protected static final double END_VALUE_EDEFAULT = -9.9999999E7;
+ /**
+ * The cached value of the '{@link #getEndValue() <em>End Value</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getEndValue()
+ * @generated
+ * @ordered
+ */
+ protected double endValue = END_VALUE_EDEFAULT;
+ /**
+ * The default value of the '{@link #getIncrement() <em>Increment</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getIncrement()
+ * @generated
+ * @ordered
+ */
+ protected static final double INCREMENT_EDEFAULT = -9.9999999E7;
+ /**
+ * The cached value of the '{@link #getIncrement() <em>Increment</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getIncrement()
+ * @generated
+ * @ordered
+ */
+ protected double increment = INCREMENT_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getNextValue() <em>Next Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNextValue()
+ * @generated
+ * @ordered
+ */
+ protected static final double NEXT_VALUE_EDEFAULT = 0.0;
+ /**
+ * The cached value of the '{@link #getNextValue() <em>Next Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNextValue()
+ * @generated
+ * @ordered
+ */
+ protected double nextValue = NEXT_VALUE_EDEFAULT;
+ /**
+ * The default value of the '{@link #getOriginalValue() <em>Original Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOriginalValue()
+ * @generated
+ * @ordered
+ */
+ protected static final double ORIGINAL_VALUE_EDEFAULT = 0.0;
+ /**
+ * The cached value of the '{@link #getOriginalValue() <em>Original Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOriginalValue()
+ * @generated
+ * @ordered
+ */
+ protected double originalValue = ORIGINAL_VALUE_EDEFAULT;
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ protected DoubleRangeModifierImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ModifierPackage.Literals.DOUBLE_RANGE_MODIFIER;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public double getStartValue() {
+ return startValue;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setStartValue(double newStartValue) {
+ double oldStartValue = startValue;
+ startValue = newStartValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModifierPackage.DOUBLE_RANGE_MODIFIER__START_VALUE, oldStartValue, startValue));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public double getEndValue() {
+ return endValue;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setEndValue(double newEndValue) {
+ double oldEndValue = endValue;
+ endValue = newEndValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModifierPackage.DOUBLE_RANGE_MODIFIER__END_VALUE, oldEndValue, endValue));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public double getIncrement() {
+ return increment;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setIncrement(double newIncrement) {
+ double oldIncrement = increment;
+ increment = newIncrement;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModifierPackage.DOUBLE_RANGE_MODIFIER__INCREMENT, oldIncrement, increment));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public double getNextValue() {
+ // Unset?
+ if (!eIsSet(ModifierPackage.DOUBLE_RANGE_MODIFIER__NEXT_VALUE)) {
+ // Yes
+ setNextValue(getStartValue());
+ } // if
+
+ final double retValue = nextValue;
+
+ complete = (getIncrement() < 0.0)? (retValue <= getEndValue()):(retValue >= getEndValue());
+
+ // Still incrementing?
+ if (!complete) {
+ // Yes
+ final double temp = retValue + getIncrement();
+ // Would the new currentValue be equal or "past" the endValue?
+ if ((getIncrement() >= 0 && temp < getEndValue()) || (getIncrement() < 0 && temp > getEndValue())) {
+ // No
+ setNextValue(temp);
+ } // if
+ else {
+ // Yes
+ setNextValue(getEndValue());
+ } // else
+ } // if
+ currentValueText = Double.toString(retValue);
+ return retValue;
+ } // getNextValue
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setNextValue(double newNextValue) {
+ double oldNextValue = nextValue;
+ nextValue = newNextValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModifierPackage.DOUBLE_RANGE_MODIFIER__NEXT_VALUE, oldNextValue, nextValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public double getOriginalValue() {
+ return originalValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setOriginalValue(double newOriginalValue) {
+ double oldOriginalValue = originalValue;
+ originalValue = newOriginalValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModifierPackage.DOUBLE_RANGE_MODIFIER__ORIGINAL_VALUE, oldOriginalValue, originalValue));
+ }
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.FeatureModifierImpl#updateFeature()
+ */
+
+ @Override
+ public void updateFeature() {
+ // Original value captured yet?
+ if (!eIsSet(ModifierPackage.DOUBLE_RANGE_MODIFIER__ORIGINAL_VALUE)) {
+ // No
+ setOriginalValue((Double)getTarget().eGet(getEStructuralFeature()));
+ } // if
+ getTarget().eSet(getEStructuralFeature(), getNextValue());
+ } // updateFeature
+
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.RangeModifierImpl#reset()
+ */
+ @Override
+ public void reset() {
+ super.reset();
+ eUnset(ModifierPackage.DOUBLE_RANGE_MODIFIER__NEXT_VALUE);
+ getTarget().eSet(getEStructuralFeature(), getOriginalValue());
+ setOriginalValue(ORIGINAL_VALUE_EDEFAULT); // To make sure we capture any new value next time simulation is run
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ModifierPackage.DOUBLE_RANGE_MODIFIER__START_VALUE:
+ return getStartValue();
+ case ModifierPackage.DOUBLE_RANGE_MODIFIER__END_VALUE:
+ return getEndValue();
+ case ModifierPackage.DOUBLE_RANGE_MODIFIER__INCREMENT:
+ return getIncrement();
+ case ModifierPackage.DOUBLE_RANGE_MODIFIER__NEXT_VALUE:
+ return getNextValue();
+ case ModifierPackage.DOUBLE_RANGE_MODIFIER__ORIGINAL_VALUE:
+ return getOriginalValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ModifierPackage.DOUBLE_RANGE_MODIFIER__START_VALUE:
+ setStartValue((Double)newValue);
+ return;
+ case ModifierPackage.DOUBLE_RANGE_MODIFIER__END_VALUE:
+ setEndValue((Double)newValue);
+ return;
+ case ModifierPackage.DOUBLE_RANGE_MODIFIER__INCREMENT:
+ setIncrement((Double)newValue);
+ return;
+ case ModifierPackage.DOUBLE_RANGE_MODIFIER__NEXT_VALUE:
+ setNextValue((Double)newValue);
+ return;
+ case ModifierPackage.DOUBLE_RANGE_MODIFIER__ORIGINAL_VALUE:
+ setOriginalValue((Double)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ModifierPackage.DOUBLE_RANGE_MODIFIER__START_VALUE:
+ setStartValue(START_VALUE_EDEFAULT);
+ return;
+ case ModifierPackage.DOUBLE_RANGE_MODIFIER__END_VALUE:
+ setEndValue(END_VALUE_EDEFAULT);
+ return;
+ case ModifierPackage.DOUBLE_RANGE_MODIFIER__INCREMENT:
+ setIncrement(INCREMENT_EDEFAULT);
+ return;
+ case ModifierPackage.DOUBLE_RANGE_MODIFIER__NEXT_VALUE:
+ setNextValue(NEXT_VALUE_EDEFAULT);
+ return;
+ case ModifierPackage.DOUBLE_RANGE_MODIFIER__ORIGINAL_VALUE:
+ setOriginalValue(ORIGINAL_VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ModifierPackage.DOUBLE_RANGE_MODIFIER__START_VALUE:
+ return startValue != START_VALUE_EDEFAULT;
+ case ModifierPackage.DOUBLE_RANGE_MODIFIER__END_VALUE:
+ return endValue != END_VALUE_EDEFAULT;
+ case ModifierPackage.DOUBLE_RANGE_MODIFIER__INCREMENT:
+ return increment != INCREMENT_EDEFAULT;
+ case ModifierPackage.DOUBLE_RANGE_MODIFIER__NEXT_VALUE:
+ return nextValue != NEXT_VALUE_EDEFAULT;
+ case ModifierPackage.DOUBLE_RANGE_MODIFIER__ORIGINAL_VALUE:
+ return originalValue != ORIGINAL_VALUE_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (startValue: "); //$NON-NLS-1$
+ result.append(startValue);
+ result.append(", endValue: "); //$NON-NLS-1$
+ result.append(endValue);
+ result.append(", increment: "); //$NON-NLS-1$
+ result.append(increment);
+ result.append(", nextValue: "); //$NON-NLS-1$
+ result.append(nextValue);
+ result.append(", originalValue: "); //$NON-NLS-1$
+ result.append(originalValue);
+ result.append(')');
+ return result.toString();
+ }
+
+ /**
+ * @see org.eclipse.stem.core.common.SanityChecker#sane()
+ */
+ @Override
+ public boolean sane() {
+ boolean retValue = super.sane();
+ assert retValue;
+
+ retValue = retValue && (getEndValue() >= getStartValue());
+ assert retValue;
+
+ retValue = retValue && (getIncrement() > 0.0);
+ assert retValue;
+
+ return retValue;
+ } // sane
+
+} // DoubleRangeModifierImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/DoubleSequenceModifierImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/DoubleSequenceModifierImpl.java
new file mode 100644
index 000000000..f2be8f073
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/DoubleSequenceModifierImpl.java
@@ -0,0 +1,195 @@
+package org.eclipse.stem.core.modifier.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+import org.eclipse.stem.core.modifier.DoubleSequenceModifier;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Double Sequence Modifier</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.DoubleSequenceModifierImpl#getSequence <em>Sequence</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DoubleSequenceModifierImpl extends SequenceModifierImpl implements DoubleSequenceModifier {
+ /**
+ * The cached value of the '{@link #getSequence() <em>Sequence</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSequence()
+ * @generated
+ * @ordered
+ */
+ protected EList<Double> sequence;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DoubleSequenceModifierImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ModifierPackage.Literals.DOUBLE_SEQUENCE_MODIFIER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Double> getSequence() {
+ if (sequence == null) {
+ sequence = new EDataTypeUniqueEList<Double>(Double.class, this, ModifierPackage.DOUBLE_SEQUENCE_MODIFIER__SEQUENCE);
+ }
+ return sequence;
+ }
+
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.SequenceModifierImpl#getNextValue()
+ */
+ @Override
+ public Object getNextValue() {
+ int index = getCurrentSequenceIndex();
+ final Object retValue = getSequence().get(index++);
+ setCurrentSequenceIndex(index);
+ return retValue;
+ } // getNextValue
+
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.SequenceModifierImpl#getSequenceSize()
+ */
+ @Override
+ public int getSequenceSize() {
+ return getSequence().size();
+ } // getSequenceSize
+
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.FeatureModifierImpl#updateFeature()
+ */
+ @Override
+ public void updateFeature() {
+ super.updateFeature();
+ getTarget().eSet(getEStructuralFeature(), getNextValue());
+ }
+
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.FeatureModifierImpl#reset()
+ */
+ @Override
+ public void reset() {
+ super.reset();
+ getTarget().eSet(getEStructuralFeature(), getOriginalValue());
+ setOriginalValue(ORIGINAL_VALUE_EDEFAULT); // To make sure we capture any new value next time simulation is run
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ModifierPackage.DOUBLE_SEQUENCE_MODIFIER__SEQUENCE:
+ return getSequence();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ModifierPackage.DOUBLE_SEQUENCE_MODIFIER__SEQUENCE:
+ getSequence().clear();
+ getSequence().addAll((Collection<? extends Double>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ModifierPackage.DOUBLE_SEQUENCE_MODIFIER__SEQUENCE:
+ getSequence().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ModifierPackage.DOUBLE_SEQUENCE_MODIFIER__SEQUENCE:
+ return sequence != null && !sequence.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (sequence: "); //$NON-NLS-1$
+ result.append(sequence);
+ result.append(')');
+ return result.toString();
+ }
+
+} //DoubleSequenceModifierImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/FeatureModifierImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/FeatureModifierImpl.java
new file mode 100644
index 000000000..748d9cb8a
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/FeatureModifierImpl.java
@@ -0,0 +1,440 @@
+package org.eclipse.stem.core.modifier.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.stem.core.modifier.FeatureModifier;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Feature Modifier</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.FeatureModifierImpl#getTarget <em>Target</em>}</li>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.FeatureModifierImpl#getEStructuralFeature <em>EStructural Feature</em>}</li>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.FeatureModifierImpl#getFeatureName <em>Feature Name</em>}</li>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.FeatureModifierImpl#getFeatureId <em>Feature Id</em>}</li>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.FeatureModifierImpl#getCurrentValueText <em>Current Value Text</em>}</li>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.FeatureModifierImpl#isComplete <em>Complete</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class FeatureModifierImpl extends EObjectImpl implements FeatureModifier {
+ /**
+ * The cached value of the '{@link #getTarget() <em>Target</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTarget()
+ * @generated
+ * @ordered
+ */
+ protected EObject target;
+
+ /**
+ * The cached value of the '{@link #getEStructuralFeature() <em>EStructural Feature</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getEStructuralFeature()
+ * @generated
+ * @ordered
+ */
+ protected EStructuralFeature eStructuralFeature;
+
+ /**
+ * The default value of the '{@link #getFeatureName() <em>Feature Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFeatureName()
+ * @generated
+ * @ordered
+ */
+ protected static final String FEATURE_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getFeatureName() <em>Feature Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFeatureName()
+ * @generated
+ * @ordered
+ */
+ protected String featureName = FEATURE_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getFeatureId() <em>Feature Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFeatureId()
+ * @generated
+ * @ordered
+ */
+ protected static final int FEATURE_ID_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getFeatureId() <em>Feature Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFeatureId()
+ * @generated
+ * @ordered
+ */
+ protected int featureId = FEATURE_ID_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getCurrentValueText() <em>Current Value Text</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCurrentValueText()
+ * @generated
+ * @ordered
+ */
+ protected static final String CURRENT_VALUE_TEXT_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getCurrentValueText() <em>Current Value Text</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCurrentValueText()
+ * @generated
+ * @ordered
+ */
+ protected String currentValueText = CURRENT_VALUE_TEXT_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #isComplete() <em>Complete</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isComplete()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean COMPLETE_EDEFAULT = false;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FeatureModifierImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ModifierPackage.Literals.FEATURE_MODIFIER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String getModificationSummary() {
+ try {
+ final StringBuilder sb = new StringBuilder(eStructuralFeature.getName());
+ sb.append(" = ");
+ sb.append(getCurrentValueText());
+ return sb.toString();
+ } catch (RuntimeException e) {
+ return "foo";
+ }
+ } // getModificationSummary
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ abstract public boolean isComplete();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public EStructuralFeature getEStructuralFeature() {
+ // Is it set yet?
+ if (!eIsSet(ModifierPackage.eINSTANCE.getFeatureModifier_EStructuralFeature())) {
+ // No
+ eStructuralFeature = target.eClass().getEStructuralFeature(getFeatureId());
+ } // if
+
+ return eStructuralFeature;
+ } // getEStructuralFeature
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setEStructuralFeature(EStructuralFeature newEStructuralFeature) {
+ EStructuralFeature oldEStructuralFeature = eStructuralFeature;
+ eStructuralFeature = newEStructuralFeature;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModifierPackage.FEATURE_MODIFIER__ESTRUCTURAL_FEATURE, oldEStructuralFeature, eStructuralFeature));
+ // Is it null?
+ if (newEStructuralFeature != null) {
+ // Yes
+ setFeatureId(newEStructuralFeature.getFeatureID());
+ setFeatureName(newEStructuralFeature.getName());
+ } // if
+ else {
+ // No
+ setFeatureId(FEATURE_ID_EDEFAULT);
+ } // else
+ } // setEStructuralFeature
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getFeatureId() {
+ return featureId;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setFeatureId(int newFeatureId) {
+ int oldFeatureId = featureId;
+ featureId = newFeatureId;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModifierPackage.FEATURE_MODIFIER__FEATURE_ID, oldFeatureId, featureId));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject getTarget() {
+ if (target != null && target.eIsProxy()) {
+ InternalEObject oldTarget = (InternalEObject)target;
+ target = eResolveProxy(oldTarget);
+ if (target != oldTarget) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, ModifierPackage.FEATURE_MODIFIER__TARGET, oldTarget, target));
+ }
+ }
+ return target;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EObject basicGetTarget() {
+ return target;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTarget(EObject newTarget) {
+ EObject oldTarget = target;
+ target = newTarget;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModifierPackage.FEATURE_MODIFIER__TARGET, oldTarget, target));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getFeatureName() {
+ return featureName;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setFeatureName(String newFeatureName) {
+ String oldFeatureName = featureName;
+ featureName = newFeatureName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModifierPackage.FEATURE_MODIFIER__FEATURE_NAME, oldFeatureName, featureName));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getCurrentValueText() {
+ return currentValueText;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ abstract public void updateFeature();
+
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ abstract public void reset();
+
+ /**
+ * @see org.eclipse.stem.core.common.SanityChecker#sane()
+ */
+ public boolean sane() {
+ return true;
+ } // sane
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ModifierPackage.FEATURE_MODIFIER__TARGET:
+ if (resolve) return getTarget();
+ return basicGetTarget();
+ case ModifierPackage.FEATURE_MODIFIER__ESTRUCTURAL_FEATURE:
+ return getEStructuralFeature();
+ case ModifierPackage.FEATURE_MODIFIER__FEATURE_NAME:
+ return getFeatureName();
+ case ModifierPackage.FEATURE_MODIFIER__FEATURE_ID:
+ return getFeatureId();
+ case ModifierPackage.FEATURE_MODIFIER__CURRENT_VALUE_TEXT:
+ return getCurrentValueText();
+ case ModifierPackage.FEATURE_MODIFIER__COMPLETE:
+ return isComplete();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ModifierPackage.FEATURE_MODIFIER__TARGET:
+ setTarget((EObject)newValue);
+ return;
+ case ModifierPackage.FEATURE_MODIFIER__ESTRUCTURAL_FEATURE:
+ setEStructuralFeature((EStructuralFeature)newValue);
+ return;
+ case ModifierPackage.FEATURE_MODIFIER__FEATURE_NAME:
+ setFeatureName((String)newValue);
+ return;
+ case ModifierPackage.FEATURE_MODIFIER__FEATURE_ID:
+ setFeatureId((Integer)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ModifierPackage.FEATURE_MODIFIER__TARGET:
+ setTarget((EObject)null);
+ return;
+ case ModifierPackage.FEATURE_MODIFIER__ESTRUCTURAL_FEATURE:
+ setEStructuralFeature((EStructuralFeature)null);
+ return;
+ case ModifierPackage.FEATURE_MODIFIER__FEATURE_NAME:
+ setFeatureName(FEATURE_NAME_EDEFAULT);
+ return;
+ case ModifierPackage.FEATURE_MODIFIER__FEATURE_ID:
+ setFeatureId(FEATURE_ID_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ModifierPackage.FEATURE_MODIFIER__TARGET:
+ return target != null;
+ case ModifierPackage.FEATURE_MODIFIER__ESTRUCTURAL_FEATURE:
+ return eStructuralFeature != null;
+ case ModifierPackage.FEATURE_MODIFIER__FEATURE_NAME:
+ return FEATURE_NAME_EDEFAULT == null ? featureName != null : !FEATURE_NAME_EDEFAULT.equals(featureName);
+ case ModifierPackage.FEATURE_MODIFIER__FEATURE_ID:
+ return featureId != FEATURE_ID_EDEFAULT;
+ case ModifierPackage.FEATURE_MODIFIER__CURRENT_VALUE_TEXT:
+ return CURRENT_VALUE_TEXT_EDEFAULT == null ? currentValueText != null : !CURRENT_VALUE_TEXT_EDEFAULT.equals(currentValueText);
+ case ModifierPackage.FEATURE_MODIFIER__COMPLETE:
+ return isComplete() != COMPLETE_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (featureName: "); //$NON-NLS-1$
+ result.append(featureName);
+ result.append(", featureId: "); //$NON-NLS-1$
+ result.append(featureId);
+ result.append(", currentValueText: "); //$NON-NLS-1$
+ result.append(currentValueText);
+ result.append(')');
+ return result.toString();
+ }
+
+} //FeatureModifierImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/IntegerModifierImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/IntegerModifierImpl.java
new file mode 100644
index 000000000..d99ea1cbd
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/IntegerModifierImpl.java
@@ -0,0 +1,257 @@
+package org.eclipse.stem.core.modifier.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2009 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.stem.core.modifier.IntegerModifier;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Integer Modifier</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.IntegerModifierImpl#getValue <em>Value</em>}</li>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.IntegerModifierImpl#getOriginalValue <em>Original Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class IntegerModifierImpl extends SingleValueModifierImpl implements IntegerModifier {
+ /**
+ * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected static final int VALUE_EDEFAULT = 0;
+ /**
+ * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected int value = VALUE_EDEFAULT;
+ /**
+ * The default value of the '{@link #getOriginalValue() <em>Original Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOriginalValue()
+ * @generated
+ * @ordered
+ */
+ protected static final int ORIGINAL_VALUE_EDEFAULT = -2000000000;
+ /**
+ * The cached value of the '{@link #getOriginalValue() <em>Original Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOriginalValue()
+ * @generated
+ * @ordered
+ */
+ protected int originalValue = ORIGINAL_VALUE_EDEFAULT;
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IntegerModifierImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ModifierPackage.Literals.INTEGER_MODIFIER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValue(int newValue) {
+ int oldValue = value;
+ value = newValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModifierPackage.INTEGER_MODIFIER__VALUE, oldValue, value));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getOriginalValue() {
+ return originalValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setOriginalValue(int newOriginalValue) {
+ int oldOriginalValue = originalValue;
+ originalValue = newOriginalValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModifierPackage.INTEGER_MODIFIER__ORIGINAL_VALUE, oldOriginalValue, originalValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ModifierPackage.INTEGER_MODIFIER__VALUE:
+ return getValue();
+ case ModifierPackage.INTEGER_MODIFIER__ORIGINAL_VALUE:
+ return getOriginalValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ModifierPackage.INTEGER_MODIFIER__VALUE:
+ setValue((Integer)newValue);
+ return;
+ case ModifierPackage.INTEGER_MODIFIER__ORIGINAL_VALUE:
+ setOriginalValue((Integer)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ModifierPackage.INTEGER_MODIFIER__VALUE:
+ setValue(VALUE_EDEFAULT);
+ return;
+ case ModifierPackage.INTEGER_MODIFIER__ORIGINAL_VALUE:
+ setOriginalValue(ORIGINAL_VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ModifierPackage.INTEGER_MODIFIER__VALUE:
+ return value != VALUE_EDEFAULT;
+ case ModifierPackage.INTEGER_MODIFIER__ORIGINAL_VALUE:
+ return originalValue != ORIGINAL_VALUE_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.FeatureModifierImpl#updateFeature()
+ */
+
+ @SuppressWarnings("boxing")
+ @Override
+ public void updateFeature() {
+ // Original value captured yet?
+ if (!eIsSet(ModifierPackage.DOUBLE_MODIFIER__ORIGINAL_VALUE)) {
+ // No
+ setOriginalValue((Integer)target.eGet(getEStructuralFeature()));
+ } // if
+ target.eSet(getEStructuralFeature(), getValue());
+ complete = true;
+ } // updateFeature
+
+
+ /**
+ *reset
+ */
+ @Override
+ public void reset() {
+ complete = false;
+ double originalValue = getOriginalValue();
+ if(originalValue != ORIGINAL_VALUE_EDEFAULT) // We don't want to set it if it hasn't been captured yet.
+ target.eSet(getEStructuralFeature(), originalValue);
+ target.eSet(getEStructuralFeature(), getOriginalValue());
+ setOriginalValue(ORIGINAL_VALUE_EDEFAULT); // To make sure we capture any new value next time simulation is run
+ }
+
+
+ private boolean complete = false;
+ /**
+ * isComplete
+ */
+ @Override
+ public boolean isComplete() {
+ return complete;
+ }
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (value: "); //$NON-NLS-1$
+ result.append(value);
+ result.append(", originalValue: "); //$NON-NLS-1$
+ result.append(originalValue);
+ result.append(')');
+ return result.toString();
+ }
+
+} //IntegerModifierImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/IntegerNOPModifierImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/IntegerNOPModifierImpl.java
new file mode 100644
index 000000000..063bf5962
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/IntegerNOPModifierImpl.java
@@ -0,0 +1,47 @@
+package org.eclipse.stem.core.modifier.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.modifier.IntegerNOPModifier;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Integer NOP Modifier</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class IntegerNOPModifierImpl extends NOPModifierImpl implements IntegerNOPModifier {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IntegerNOPModifierImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ModifierPackage.Literals.INTEGER_NOP_MODIFIER;
+ }
+
+} //IntegerNOPModifierImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/IntegerRangeModifierImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/IntegerRangeModifierImpl.java
new file mode 100644
index 000000000..f331ccb66
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/IntegerRangeModifierImpl.java
@@ -0,0 +1,442 @@
+package org.eclipse.stem.core.modifier.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.stem.core.modifier.IntegerRangeModifier;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Integer Range Modifier</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.IntegerRangeModifierImpl#getStartValue <em>Start Value</em>}</li>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.IntegerRangeModifierImpl#getEndValue <em>End Value</em>}</li>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.IntegerRangeModifierImpl#getIncrement <em>Increment</em>}</li>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.IntegerRangeModifierImpl#getNextValue <em>Next Value</em>}</li>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.IntegerRangeModifierImpl#getOriginalValue <em>Original Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+@SuppressWarnings("boxing")
+public class IntegerRangeModifierImpl extends RangeModifierImpl implements IntegerRangeModifier {
+ /**
+ * The default value of the '{@link #getStartValue() <em>Start Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getStartValue()
+ * @generated
+ * @ordered
+ */
+ protected static final int START_VALUE_EDEFAULT = -99999999;
+ /**
+ * The cached value of the '{@link #getStartValue() <em>Start Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getStartValue()
+ * @generated
+ * @ordered
+ */
+ protected int startValue = START_VALUE_EDEFAULT;
+ /**
+ * The default value of the '{@link #getEndValue() <em>End Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getEndValue()
+ * @generated
+ * @ordered
+ */
+ protected static final int END_VALUE_EDEFAULT = -99999999;
+ /**
+ * The cached value of the '{@link #getEndValue() <em>End Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getEndValue()
+ * @generated
+ * @ordered
+ */
+ protected int endValue = END_VALUE_EDEFAULT;
+ /**
+ * The default value of the '{@link #getIncrement() <em>Increment</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIncrement()
+ * @generated
+ * @ordered
+ */
+ protected static final int INCREMENT_EDEFAULT = -99999999;
+ /**
+ * The cached value of the '{@link #getIncrement() <em>Increment</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIncrement()
+ * @generated
+ * @ordered
+ */
+ protected int increment = INCREMENT_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getNextValue() <em>Next Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNextValue()
+ * @generated
+ * @ordered
+ */
+ protected static final int NEXT_VALUE_EDEFAULT = -99999999;
+ /**
+ * The cached value of the '{@link #getNextValue() <em>Next Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNextValue()
+ * @generated
+ * @ordered
+ */
+ protected int nextValue = NEXT_VALUE_EDEFAULT;
+ /**
+ * The default value of the '{@link #getOriginalValue() <em>Original Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOriginalValue()
+ * @generated
+ * @ordered
+ */
+ protected static final int ORIGINAL_VALUE_EDEFAULT = 0;
+ /**
+ * The cached value of the '{@link #getOriginalValue() <em>Original Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOriginalValue()
+ * @generated
+ * @ordered
+ */
+ protected int originalValue = ORIGINAL_VALUE_EDEFAULT;
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IntegerRangeModifierImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ModifierPackage.Literals.INTEGER_RANGE_MODIFIER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getStartValue() {
+ return startValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setStartValue(int newStartValue) {
+ int oldStartValue = startValue;
+ startValue = newStartValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModifierPackage.INTEGER_RANGE_MODIFIER__START_VALUE, oldStartValue, startValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getEndValue() {
+ return endValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setEndValue(int newEndValue) {
+ int oldEndValue = endValue;
+ endValue = newEndValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModifierPackage.INTEGER_RANGE_MODIFIER__END_VALUE, oldEndValue, endValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getIncrement() {
+ return increment;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setIncrement(int newIncrement) {
+ int oldIncrement = increment;
+ increment = newIncrement;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModifierPackage.INTEGER_RANGE_MODIFIER__INCREMENT, oldIncrement, increment));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public int getNextValue() {
+ // Unset?
+ if (!eIsSet(ModifierPackage.INTEGER_RANGE_MODIFIER__NEXT_VALUE)) {
+ // Yes
+ setNextValue(getStartValue());
+ } // if
+
+ final int retValue = nextValue;
+ complete = retValue == getEndValue();
+
+ // Still incrementing?
+ if (!complete) {
+ // Yes
+ final int temp = retValue + getIncrement();
+ // Would the new currentValue be equal or "past" the endValue?
+ if (Math.abs(temp) < Math.abs(getEndValue())) {
+ // No
+ setNextValue(temp);
+ } // if
+ else {
+ // Yes
+ setNextValue(getEndValue());
+ } // else
+ } // if
+ currentValueText = Integer.toString(retValue);
+ return retValue;
+ } // getNextValue
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setNextValue(int newNextValue) {
+ int oldNextValue = nextValue;
+ nextValue = newNextValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModifierPackage.INTEGER_RANGE_MODIFIER__NEXT_VALUE, oldNextValue, nextValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getOriginalValue() {
+ return originalValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setOriginalValue(int newOriginalValue) {
+ int oldOriginalValue = originalValue;
+ originalValue = newOriginalValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModifierPackage.INTEGER_RANGE_MODIFIER__ORIGINAL_VALUE, oldOriginalValue, originalValue));
+ }
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.FeatureModifierImpl#updateFeature()
+ */
+
+ @Override
+ public void updateFeature() {
+ // Original value captured yet?
+ if (!eIsSet(ModifierPackage.INTEGER_RANGE_MODIFIER__ORIGINAL_VALUE)) {
+ // No
+ setOriginalValue((Integer)getTarget().eGet(getEStructuralFeature()));
+ } // if
+ getTarget().eSet(getEStructuralFeature(),getNextValue());
+ }
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.RangeModifierImpl#reset()
+ */
+ @Override
+ public void reset() {
+ super.reset();
+ eUnset(ModifierPackage.INTEGER_RANGE_MODIFIER__NEXT_VALUE);
+ getTarget().eSet(getEStructuralFeature(), getOriginalValue());
+ setOriginalValue(ORIGINAL_VALUE_EDEFAULT); // To make sure we capture any new value next time simulation is run
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ModifierPackage.INTEGER_RANGE_MODIFIER__START_VALUE:
+ return getStartValue();
+ case ModifierPackage.INTEGER_RANGE_MODIFIER__END_VALUE:
+ return getEndValue();
+ case ModifierPackage.INTEGER_RANGE_MODIFIER__INCREMENT:
+ return getIncrement();
+ case ModifierPackage.INTEGER_RANGE_MODIFIER__NEXT_VALUE:
+ return getNextValue();
+ case ModifierPackage.INTEGER_RANGE_MODIFIER__ORIGINAL_VALUE:
+ return getOriginalValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ModifierPackage.INTEGER_RANGE_MODIFIER__START_VALUE:
+ setStartValue((Integer)newValue);
+ return;
+ case ModifierPackage.INTEGER_RANGE_MODIFIER__END_VALUE:
+ setEndValue((Integer)newValue);
+ return;
+ case ModifierPackage.INTEGER_RANGE_MODIFIER__INCREMENT:
+ setIncrement((Integer)newValue);
+ return;
+ case ModifierPackage.INTEGER_RANGE_MODIFIER__NEXT_VALUE:
+ setNextValue((Integer)newValue);
+ return;
+ case ModifierPackage.INTEGER_RANGE_MODIFIER__ORIGINAL_VALUE:
+ setOriginalValue((Integer)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ModifierPackage.INTEGER_RANGE_MODIFIER__START_VALUE:
+ setStartValue(START_VALUE_EDEFAULT);
+ return;
+ case ModifierPackage.INTEGER_RANGE_MODIFIER__END_VALUE:
+ setEndValue(END_VALUE_EDEFAULT);
+ return;
+ case ModifierPackage.INTEGER_RANGE_MODIFIER__INCREMENT:
+ setIncrement(INCREMENT_EDEFAULT);
+ return;
+ case ModifierPackage.INTEGER_RANGE_MODIFIER__NEXT_VALUE:
+ setNextValue(NEXT_VALUE_EDEFAULT);
+ return;
+ case ModifierPackage.INTEGER_RANGE_MODIFIER__ORIGINAL_VALUE:
+ setOriginalValue(ORIGINAL_VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ModifierPackage.INTEGER_RANGE_MODIFIER__START_VALUE:
+ return startValue != START_VALUE_EDEFAULT;
+ case ModifierPackage.INTEGER_RANGE_MODIFIER__END_VALUE:
+ return endValue != END_VALUE_EDEFAULT;
+ case ModifierPackage.INTEGER_RANGE_MODIFIER__INCREMENT:
+ return increment != INCREMENT_EDEFAULT;
+ case ModifierPackage.INTEGER_RANGE_MODIFIER__NEXT_VALUE:
+ return nextValue != NEXT_VALUE_EDEFAULT;
+ case ModifierPackage.INTEGER_RANGE_MODIFIER__ORIGINAL_VALUE:
+ return originalValue != ORIGINAL_VALUE_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (startValue: "); //$NON-NLS-1$
+ result.append(startValue);
+ result.append(", endValue: "); //$NON-NLS-1$
+ result.append(endValue);
+ result.append(", increment: "); //$NON-NLS-1$
+ result.append(increment);
+ result.append(", nextValue: "); //$NON-NLS-1$
+ result.append(nextValue);
+ result.append(", originalValue: "); //$NON-NLS-1$
+ result.append(originalValue);
+ result.append(')');
+ return result.toString();
+ }
+
+ /**
+ * @see org.eclipse.stem.core.common.SanityChecker#sane()
+ */
+ @Override
+ public boolean sane() {
+ boolean retValue = super.sane();
+ assert retValue;
+
+ retValue = retValue && (getEndValue() >= getStartValue());
+ assert retValue;
+
+ retValue = retValue && (getIncrement() > 0);
+ assert retValue;
+
+ return retValue;
+ } // sane
+
+} //IntegerRangeModifierImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/IntegerSequenceModifierImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/IntegerSequenceModifierImpl.java
new file mode 100644
index 000000000..ee38e6dac
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/IntegerSequenceModifierImpl.java
@@ -0,0 +1,194 @@
+package org.eclipse.stem.core.modifier.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+import org.eclipse.stem.core.modifier.IntegerSequenceModifier;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Integer Sequence Modifier</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.IntegerSequenceModifierImpl#getSequence <em>Sequence</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class IntegerSequenceModifierImpl extends SequenceModifierImpl implements IntegerSequenceModifier {
+ /**
+ * The cached value of the '{@link #getSequence() <em>Sequence</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSequence()
+ * @generated
+ * @ordered
+ */
+ protected EList<Integer> sequence;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IntegerSequenceModifierImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ModifierPackage.Literals.INTEGER_SEQUENCE_MODIFIER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Integer> getSequence() {
+ if (sequence == null) {
+ sequence = new EDataTypeUniqueEList<Integer>(Integer.class, this, ModifierPackage.INTEGER_SEQUENCE_MODIFIER__SEQUENCE);
+ }
+ return sequence;
+ }
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.SequenceModifierImpl#getNextValue()
+ */
+ @Override
+ public Object getNextValue() {
+ int index = getCurrentSequenceIndex();
+ final Object retValue = getSequence().get(index++);
+ setCurrentSequenceIndex(index);
+ currentValueText = retValue.toString();
+ return retValue;
+ } // getNextValue
+
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.SequenceModifierImpl#getSequenceSize()
+ */
+ @Override
+ public int getSequenceSize() {
+ return getSequence().size();
+ } // getSequenceSize
+
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.FeatureModifierImpl#updateFeature()
+ */
+ @Override
+ public void updateFeature() {
+ super.updateFeature();
+ getTarget().eSet(getEStructuralFeature(), getNextValue());
+ }
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.FeatureModifierImpl#reset()
+ */
+ @Override
+ public void reset() {
+ super.reset();
+ getTarget().eSet(getEStructuralFeature(), getOriginalValue());
+ setOriginalValue(ORIGINAL_VALUE_EDEFAULT); // To make sure we capture any new value next time simulation is run
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ModifierPackage.INTEGER_SEQUENCE_MODIFIER__SEQUENCE:
+ return getSequence();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ModifierPackage.INTEGER_SEQUENCE_MODIFIER__SEQUENCE:
+ getSequence().clear();
+ getSequence().addAll((Collection<? extends Integer>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ModifierPackage.INTEGER_SEQUENCE_MODIFIER__SEQUENCE:
+ getSequence().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ModifierPackage.INTEGER_SEQUENCE_MODIFIER__SEQUENCE:
+ return sequence != null && !sequence.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (sequence: "); //$NON-NLS-1$
+ result.append(sequence);
+ result.append(')');
+ return result.toString();
+ }
+
+} //IntegerSequenceModifierImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/LongModifierImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/LongModifierImpl.java
new file mode 100644
index 000000000..a55e3427f
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/LongModifierImpl.java
@@ -0,0 +1,259 @@
+package org.eclipse.stem.core.modifier.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2009 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.stem.core.modifier.LongModifier;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Long Modifier</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.LongModifierImpl#getValue <em>Value</em>}</li>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.LongModifierImpl#getOriginalValue <em>Original Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LongModifierImpl extends SingleValueModifierImpl implements LongModifier {
+ /**
+ * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected static final long VALUE_EDEFAULT = 0L;
+ /**
+ * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected long value = VALUE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getOriginalValue() <em>Original Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOriginalValue()
+ * @generated
+ * @ordered
+ */
+ protected static final long ORIGINAL_VALUE_EDEFAULT = -2000000000L;
+ /**
+ * The cached value of the '{@link #getOriginalValue() <em>Original Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOriginalValue()
+ * @generated
+ * @ordered
+ */
+ protected long originalValue = ORIGINAL_VALUE_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LongModifierImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ModifierPackage.Literals.LONG_MODIFIER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public long getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValue(long newValue) {
+ long oldValue = value;
+ value = newValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModifierPackage.LONG_MODIFIER__VALUE, oldValue, value));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public long getOriginalValue() {
+ return originalValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setOriginalValue(long newOriginalValue) {
+ long oldOriginalValue = originalValue;
+ originalValue = newOriginalValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModifierPackage.LONG_MODIFIER__ORIGINAL_VALUE, oldOriginalValue, originalValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ModifierPackage.LONG_MODIFIER__VALUE:
+ return getValue();
+ case ModifierPackage.LONG_MODIFIER__ORIGINAL_VALUE:
+ return getOriginalValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ModifierPackage.LONG_MODIFIER__VALUE:
+ setValue((Long)newValue);
+ return;
+ case ModifierPackage.LONG_MODIFIER__ORIGINAL_VALUE:
+ setOriginalValue((Long)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ModifierPackage.LONG_MODIFIER__VALUE:
+ setValue(VALUE_EDEFAULT);
+ return;
+ case ModifierPackage.LONG_MODIFIER__ORIGINAL_VALUE:
+ setOriginalValue(ORIGINAL_VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ModifierPackage.LONG_MODIFIER__VALUE:
+ return value != VALUE_EDEFAULT;
+ case ModifierPackage.LONG_MODIFIER__ORIGINAL_VALUE:
+ return originalValue != ORIGINAL_VALUE_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.FeatureModifierImpl#updateFeature()
+ */
+
+ @SuppressWarnings("boxing")
+ @Override
+ public void updateFeature() {
+ // Original value captured yet?
+ if (!eIsSet(ModifierPackage.DOUBLE_MODIFIER__ORIGINAL_VALUE)) {
+ // No
+ setOriginalValue((Long)target.eGet(getEStructuralFeature()));
+ } // if
+ target.eSet(getEStructuralFeature(), getValue());
+ complete = true;
+ } // updateFeature
+
+
+ /**
+ *reset
+ */
+ @Override
+ public void reset() {
+ complete = false;
+ double originalValue = getOriginalValue();
+ if(originalValue != ORIGINAL_VALUE_EDEFAULT) // We don't want to set it if it hasn't been captured yet.
+ target.eSet(getEStructuralFeature(), originalValue);
+ setOriginalValue(ORIGINAL_VALUE_EDEFAULT); // To make sure we capture any new value next time simulation is run
+ }
+
+
+ private boolean complete = false;
+ /**
+ * isComplete
+ */
+ @Override
+ public boolean isComplete() {
+ return complete;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (value: "); //$NON-NLS-1$
+ result.append(value);
+ result.append(", originalValue: "); //$NON-NLS-1$
+ result.append(originalValue);
+ result.append(')');
+ return result.toString();
+ }
+
+} //LongModifierImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/LongNOPModifierImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/LongNOPModifierImpl.java
new file mode 100644
index 000000000..930189412
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/LongNOPModifierImpl.java
@@ -0,0 +1,47 @@
+package org.eclipse.stem.core.modifier.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.modifier.LongNOPModifier;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Long NOP Modifier</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class LongNOPModifierImpl extends NOPModifierImpl implements LongNOPModifier {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LongNOPModifierImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ModifierPackage.Literals.LONG_NOP_MODIFIER;
+ }
+
+} // LongNOPModifierImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/LongRangeModifierImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/LongRangeModifierImpl.java
new file mode 100644
index 000000000..4db31db3b
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/LongRangeModifierImpl.java
@@ -0,0 +1,444 @@
+package org.eclipse.stem.core.modifier.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.stem.core.modifier.LongRangeModifier;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Long Range Modifier</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.LongRangeModifierImpl#getStartValue <em>Start Value</em>}</li>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.LongRangeModifierImpl#getEndValue <em>End Value</em>}</li>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.LongRangeModifierImpl#getIncrement <em>Increment</em>}</li>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.LongRangeModifierImpl#getNextValue <em>Next Value</em>}</li>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.LongRangeModifierImpl#getOriginalValue <em>Original Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+@SuppressWarnings("boxing")
+public class LongRangeModifierImpl extends RangeModifierImpl implements LongRangeModifier {
+ /**
+ * The default value of the '{@link #getStartValue() <em>Start Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getStartValue()
+ * @generated
+ * @ordered
+ */
+ protected static final long START_VALUE_EDEFAULT = -99999999L;
+ /**
+ * The cached value of the '{@link #getStartValue() <em>Start Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getStartValue()
+ * @generated
+ * @ordered
+ */
+ protected long startValue = START_VALUE_EDEFAULT;
+ /**
+ * The default value of the '{@link #getEndValue() <em>End Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getEndValue()
+ * @generated
+ * @ordered
+ */
+ protected static final long END_VALUE_EDEFAULT = -99999999L;
+ /**
+ * The cached value of the '{@link #getEndValue() <em>End Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getEndValue()
+ * @generated
+ * @ordered
+ */
+ protected long endValue = END_VALUE_EDEFAULT;
+ /**
+ * The default value of the '{@link #getIncrement() <em>Increment</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIncrement()
+ * @generated
+ * @ordered
+ */
+ protected static final long INCREMENT_EDEFAULT = -99999999L;
+ /**
+ * The cached value of the '{@link #getIncrement() <em>Increment</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIncrement()
+ * @generated
+ * @ordered
+ */
+ protected long increment = INCREMENT_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getNextValue() <em>Next Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNextValue()
+ * @generated
+ * @ordered
+ */
+ protected static final long NEXT_VALUE_EDEFAULT = -99999999L;
+ /**
+ * The cached value of the '{@link #getNextValue() <em>Next Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNextValue()
+ * @generated
+ * @ordered
+ */
+ protected long nextValue = NEXT_VALUE_EDEFAULT;
+ /**
+ * The default value of the '{@link #getOriginalValue() <em>Original Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOriginalValue()
+ * @generated
+ * @ordered
+ */
+ protected static final long ORIGINAL_VALUE_EDEFAULT = -99999999L;
+ /**
+ * The cached value of the '{@link #getOriginalValue() <em>Original Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOriginalValue()
+ * @generated
+ * @ordered
+ */
+ protected long originalValue = ORIGINAL_VALUE_EDEFAULT;
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LongRangeModifierImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ModifierPackage.Literals.LONG_RANGE_MODIFIER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public long getStartValue() {
+ return startValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setStartValue(long newStartValue) {
+ long oldStartValue = startValue;
+ startValue = newStartValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModifierPackage.LONG_RANGE_MODIFIER__START_VALUE, oldStartValue, startValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public long getEndValue() {
+ return endValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setEndValue(long newEndValue) {
+ long oldEndValue = endValue;
+ endValue = newEndValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModifierPackage.LONG_RANGE_MODIFIER__END_VALUE, oldEndValue, endValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public long getIncrement() {
+ return increment;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setIncrement(long newIncrement) {
+ long oldIncrement = increment;
+ increment = newIncrement;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModifierPackage.LONG_RANGE_MODIFIER__INCREMENT, oldIncrement, increment));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public long getNextValue() {
+ // Unset?
+ if (!eIsSet(ModifierPackage.LONG_RANGE_MODIFIER__NEXT_VALUE)) {
+ // Yes
+ setNextValue(getStartValue());
+ } // if
+
+ final long retValue = nextValue;
+ complete = retValue == getEndValue();
+
+ // Still incrementing?
+ if (!complete) {
+ // Yes
+ final long temp = retValue + getIncrement();
+ // Would the new currentValue be equal or "past" the endValue?
+ if (Math.abs(temp) < Math.abs(getEndValue())) {
+ // No
+ setNextValue(temp);
+ } // if
+ else {
+ // Yes
+ setNextValue(getEndValue());
+ } // else
+ } // if
+ currentValueText = Long.toString(retValue);
+ return retValue;
+ } // getNextValue
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setNextValue(long newNextValue) {
+ long oldNextValue = nextValue;
+ nextValue = newNextValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModifierPackage.LONG_RANGE_MODIFIER__NEXT_VALUE, oldNextValue, nextValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public long getOriginalValue() {
+ return originalValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setOriginalValue(long newOriginalValue) {
+ long oldOriginalValue = originalValue;
+ originalValue = newOriginalValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModifierPackage.LONG_RANGE_MODIFIER__ORIGINAL_VALUE, oldOriginalValue, originalValue));
+ }
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.FeatureModifierImpl#updateFeature()
+ */
+
+ @Override
+ public void updateFeature() {
+ // Original value captured yet?
+ if (!eIsSet(ModifierPackage.INTEGER_RANGE_MODIFIER__ORIGINAL_VALUE)) {
+ // No
+ setOriginalValue((Long)getTarget().eGet(getEStructuralFeature()));
+ } // if
+ getTarget().eSet(getEStructuralFeature(),getNextValue());
+ }
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.RangeModifierImpl#reset()
+ */
+ @Override
+ public void reset() {
+ super.reset();
+ eUnset(ModifierPackage.LONG_RANGE_MODIFIER__NEXT_VALUE);
+ getTarget().eSet(getEStructuralFeature(), getOriginalValue());
+ setOriginalValue(ORIGINAL_VALUE_EDEFAULT); // To make sure we capture any new value next time simulation is run
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ModifierPackage.LONG_RANGE_MODIFIER__START_VALUE:
+ return getStartValue();
+ case ModifierPackage.LONG_RANGE_MODIFIER__END_VALUE:
+ return getEndValue();
+ case ModifierPackage.LONG_RANGE_MODIFIER__INCREMENT:
+ return getIncrement();
+ case ModifierPackage.LONG_RANGE_MODIFIER__NEXT_VALUE:
+ return getNextValue();
+ case ModifierPackage.LONG_RANGE_MODIFIER__ORIGINAL_VALUE:
+ return getOriginalValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ModifierPackage.LONG_RANGE_MODIFIER__START_VALUE:
+ setStartValue((Long)newValue);
+ return;
+ case ModifierPackage.LONG_RANGE_MODIFIER__END_VALUE:
+ setEndValue((Long)newValue);
+ return;
+ case ModifierPackage.LONG_RANGE_MODIFIER__INCREMENT:
+ setIncrement((Long)newValue);
+ return;
+ case ModifierPackage.LONG_RANGE_MODIFIER__NEXT_VALUE:
+ setNextValue((Long)newValue);
+ return;
+ case ModifierPackage.LONG_RANGE_MODIFIER__ORIGINAL_VALUE:
+ setOriginalValue((Long)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ModifierPackage.LONG_RANGE_MODIFIER__START_VALUE:
+ setStartValue(START_VALUE_EDEFAULT);
+ return;
+ case ModifierPackage.LONG_RANGE_MODIFIER__END_VALUE:
+ setEndValue(END_VALUE_EDEFAULT);
+ return;
+ case ModifierPackage.LONG_RANGE_MODIFIER__INCREMENT:
+ setIncrement(INCREMENT_EDEFAULT);
+ return;
+ case ModifierPackage.LONG_RANGE_MODIFIER__NEXT_VALUE:
+ setNextValue(NEXT_VALUE_EDEFAULT);
+ return;
+ case ModifierPackage.LONG_RANGE_MODIFIER__ORIGINAL_VALUE:
+ setOriginalValue(ORIGINAL_VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ModifierPackage.LONG_RANGE_MODIFIER__START_VALUE:
+ return startValue != START_VALUE_EDEFAULT;
+ case ModifierPackage.LONG_RANGE_MODIFIER__END_VALUE:
+ return endValue != END_VALUE_EDEFAULT;
+ case ModifierPackage.LONG_RANGE_MODIFIER__INCREMENT:
+ return increment != INCREMENT_EDEFAULT;
+ case ModifierPackage.LONG_RANGE_MODIFIER__NEXT_VALUE:
+ return nextValue != NEXT_VALUE_EDEFAULT;
+ case ModifierPackage.LONG_RANGE_MODIFIER__ORIGINAL_VALUE:
+ return originalValue != ORIGINAL_VALUE_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (startValue: "); //$NON-NLS-1$
+ result.append(startValue);
+ result.append(", endValue: "); //$NON-NLS-1$
+ result.append(endValue);
+ result.append(", increment: "); //$NON-NLS-1$
+ result.append(increment);
+ result.append(", nextValue: "); //$NON-NLS-1$
+ result.append(nextValue);
+ result.append(", originalValue: "); //$NON-NLS-1$
+ result.append(originalValue);
+ result.append(')');
+ return result.toString();
+ }
+
+
+
+ /**
+ * @see org.eclipse.stem.core.common.SanityChecker#sane()
+ */
+ @Override
+ public boolean sane() {
+ boolean retValue = super.sane();
+ assert retValue;
+
+ retValue = retValue && (getEndValue() >= getStartValue());
+ assert retValue;
+
+ retValue = retValue && (getIncrement() > 0L);
+ assert retValue;
+
+ return retValue;
+ } // sane
+
+} //LongRangeModifierImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/LongSequenceModifierImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/LongSequenceModifierImpl.java
new file mode 100644
index 000000000..0d6d695ad
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/LongSequenceModifierImpl.java
@@ -0,0 +1,194 @@
+package org.eclipse.stem.core.modifier.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+import org.eclipse.stem.core.modifier.LongSequenceModifier;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Long Sequence Modifier</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.LongSequenceModifierImpl#getSequence <em>Sequence</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LongSequenceModifierImpl extends SequenceModifierImpl implements LongSequenceModifier {
+ /**
+ * The cached value of the '{@link #getSequence() <em>Sequence</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSequence()
+ * @generated
+ * @ordered
+ */
+ protected EList<Long> sequence;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LongSequenceModifierImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ModifierPackage.Literals.LONG_SEQUENCE_MODIFIER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Long> getSequence() {
+ if (sequence == null) {
+ sequence = new EDataTypeUniqueEList<Long>(Long.class, this, ModifierPackage.LONG_SEQUENCE_MODIFIER__SEQUENCE);
+ }
+ return sequence;
+ }
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.SequenceModifierImpl#getNextValue()
+ */
+ @Override
+ public Object getNextValue() {
+ int index = getCurrentSequenceIndex();
+ final Object retValue = getSequence().get(index++);
+ setCurrentSequenceIndex(index);
+ currentValueText = retValue.toString();
+ return retValue;
+ } // getNextValue
+
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.SequenceModifierImpl#getSequenceSize()
+ */
+ @Override
+ public int getSequenceSize() {
+ return getSequence().size();
+ } // getSequenceSize
+
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.FeatureModifierImpl#updateFeature()
+ */
+ @Override
+ public void updateFeature() {
+ super.updateFeature();
+ getTarget().eSet(getEStructuralFeature(), getNextValue());
+ }
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.FeatureModifierImpl#reset()
+ */
+ @Override
+ public void reset() {
+ super.reset();
+ getTarget().eSet(getEStructuralFeature(), getOriginalValue());
+ setOriginalValue(ORIGINAL_VALUE_EDEFAULT); // To make sure we capture any new value next time simulation is run
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ModifierPackage.LONG_SEQUENCE_MODIFIER__SEQUENCE:
+ return getSequence();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ModifierPackage.LONG_SEQUENCE_MODIFIER__SEQUENCE:
+ getSequence().clear();
+ getSequence().addAll((Collection<? extends Long>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ModifierPackage.LONG_SEQUENCE_MODIFIER__SEQUENCE:
+ getSequence().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ModifierPackage.LONG_SEQUENCE_MODIFIER__SEQUENCE:
+ return sequence != null && !sequence.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (sequence: "); //$NON-NLS-1$
+ result.append(sequence);
+ result.append(')');
+ return result.toString();
+ }
+
+} //LongSequenceModifierImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/ModifierFactoryImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/ModifierFactoryImpl.java
new file mode 100644
index 000000000..3a30fc3f1
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/ModifierFactoryImpl.java
@@ -0,0 +1,351 @@
+package org.eclipse.stem.core.modifier.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.stem.core.modifier.DoubleModifier;
+import org.eclipse.stem.core.modifier.DoubleNOPModifier;
+import org.eclipse.stem.core.modifier.DoubleRangeModifier;
+import org.eclipse.stem.core.modifier.DoubleSequenceModifier;
+import org.eclipse.stem.core.modifier.IntegerModifier;
+import org.eclipse.stem.core.modifier.IntegerNOPModifier;
+import org.eclipse.stem.core.modifier.IntegerRangeModifier;
+import org.eclipse.stem.core.modifier.IntegerSequenceModifier;
+import org.eclipse.stem.core.modifier.LongModifier;
+import org.eclipse.stem.core.modifier.LongNOPModifier;
+import org.eclipse.stem.core.modifier.LongRangeModifier;
+import org.eclipse.stem.core.modifier.LongSequenceModifier;
+import org.eclipse.stem.core.modifier.Modifier;
+import org.eclipse.stem.core.modifier.ModifierFactory;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+import org.eclipse.stem.core.modifier.NOPModifier;
+import org.eclipse.stem.core.modifier.STEMTimeModifier;
+import org.eclipse.stem.core.modifier.STEMTimeNOPModifier;
+import org.eclipse.stem.core.modifier.STEMTimeRangeModifier;
+import org.eclipse.stem.core.modifier.STEMTimeSequenceModifier;
+import org.eclipse.stem.core.modifier.StringNOPModifier;
+import org.eclipse.stem.core.modifier.StringSequenceModifier;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ModifierFactoryImpl extends EFactoryImpl implements ModifierFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static ModifierFactory init() {
+ try {
+ ModifierFactory theModifierFactory = (ModifierFactory)EPackage.Registry.INSTANCE.getEFactory("http:///org/eclipse/stem/core/modifier.ecore"); //$NON-NLS-1$
+ if (theModifierFactory != null) {
+ return theModifierFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new ModifierFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ModifierFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case ModifierPackage.DOUBLE_NOP_MODIFIER: return createDoubleNOPModifier();
+ case ModifierPackage.DOUBLE_RANGE_MODIFIER: return createDoubleRangeModifier();
+ case ModifierPackage.DOUBLE_SEQUENCE_MODIFIER: return createDoubleSequenceModifier();
+ case ModifierPackage.INTEGER_NOP_MODIFIER: return createIntegerNOPModifier();
+ case ModifierPackage.INTEGER_RANGE_MODIFIER: return createIntegerRangeModifier();
+ case ModifierPackage.INTEGER_SEQUENCE_MODIFIER: return createIntegerSequenceModifier();
+ case ModifierPackage.LONG_NOP_MODIFIER: return createLongNOPModifier();
+ case ModifierPackage.LONG_RANGE_MODIFIER: return createLongRangeModifier();
+ case ModifierPackage.LONG_SEQUENCE_MODIFIER: return createLongSequenceModifier();
+ case ModifierPackage.MODIFIER: return createModifier();
+ case ModifierPackage.NOP_MODIFIER: return createNOPModifier();
+ case ModifierPackage.STEM_TIME_NOP_MODIFIER: return createSTEMTimeNOPModifier();
+ case ModifierPackage.STEM_TIME_RANGE_MODIFIER: return createSTEMTimeRangeModifier();
+ case ModifierPackage.STEM_TIME_SEQUENCE_MODIFIER: return createSTEMTimeSequenceModifier();
+ case ModifierPackage.STRING_NOP_MODIFIER: return createStringNOPModifier();
+ case ModifierPackage.STRING_SEQUENCE_MODIFIER: return createStringSequenceModifier();
+ case ModifierPackage.DOUBLE_MODIFIER: return createDoubleModifier();
+ case ModifierPackage.INTEGER_MODIFIER: return createIntegerModifier();
+ case ModifierPackage.LONG_MODIFIER: return createLongModifier();
+ case ModifierPackage.STEM_TIME_MODIFIER: return createSTEMTimeModifier();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DoubleNOPModifier createDoubleNOPModifier() {
+ DoubleNOPModifierImpl doubleNOPModifier = new DoubleNOPModifierImpl();
+ return doubleNOPModifier;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DoubleRangeModifier createDoubleRangeModifier() {
+ DoubleRangeModifierImpl doubleRangeModifier = new DoubleRangeModifierImpl();
+ return doubleRangeModifier;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DoubleSequenceModifier createDoubleSequenceModifier() {
+ DoubleSequenceModifierImpl doubleSequenceModifier = new DoubleSequenceModifierImpl();
+ return doubleSequenceModifier;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IntegerNOPModifier createIntegerNOPModifier() {
+ IntegerNOPModifierImpl integerNOPModifier = new IntegerNOPModifierImpl();
+ return integerNOPModifier;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IntegerRangeModifier createIntegerRangeModifier() {
+ IntegerRangeModifierImpl integerRangeModifier = new IntegerRangeModifierImpl();
+ return integerRangeModifier;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IntegerSequenceModifier createIntegerSequenceModifier() {
+ IntegerSequenceModifierImpl integerSequenceModifier = new IntegerSequenceModifierImpl();
+ return integerSequenceModifier;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LongNOPModifier createLongNOPModifier() {
+ LongNOPModifierImpl longNOPModifier = new LongNOPModifierImpl();
+ return longNOPModifier;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LongRangeModifier createLongRangeModifier() {
+ LongRangeModifierImpl longRangeModifier = new LongRangeModifierImpl();
+ return longRangeModifier;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LongSequenceModifier createLongSequenceModifier() {
+ LongSequenceModifierImpl longSequenceModifier = new LongSequenceModifierImpl();
+ return longSequenceModifier;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Modifier createModifier() {
+ ModifierImpl modifier = new ModifierImpl();
+ return modifier;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NOPModifier createNOPModifier() {
+ NOPModifierImpl nopModifier = new NOPModifierImpl();
+ return nopModifier;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public STEMTimeNOPModifier createSTEMTimeNOPModifier() {
+ STEMTimeNOPModifierImpl stemTimeNOPModifier = new STEMTimeNOPModifierImpl();
+ return stemTimeNOPModifier;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public STEMTimeRangeModifier createSTEMTimeRangeModifier() {
+ STEMTimeRangeModifierImpl stemTimeRangeModifier = new STEMTimeRangeModifierImpl();
+ return stemTimeRangeModifier;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public STEMTimeSequenceModifier createSTEMTimeSequenceModifier() {
+ STEMTimeSequenceModifierImpl stemTimeSequenceModifier = new STEMTimeSequenceModifierImpl();
+ return stemTimeSequenceModifier;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StringNOPModifier createStringNOPModifier() {
+ StringNOPModifierImpl stringNOPModifier = new StringNOPModifierImpl();
+ return stringNOPModifier;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StringSequenceModifier createStringSequenceModifier() {
+ StringSequenceModifierImpl stringSequenceModifier = new StringSequenceModifierImpl();
+ return stringSequenceModifier;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DoubleModifier createDoubleModifier() {
+ DoubleModifierImpl doubleModifier = new DoubleModifierImpl();
+ return doubleModifier;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IntegerModifier createIntegerModifier() {
+ IntegerModifierImpl integerModifier = new IntegerModifierImpl();
+ return integerModifier;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LongModifier createLongModifier() {
+ LongModifierImpl longModifier = new LongModifierImpl();
+ return longModifier;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public STEMTimeModifier createSTEMTimeModifier() {
+ STEMTimeModifierImpl stemTimeModifier = new STEMTimeModifierImpl();
+ return stemTimeModifier;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public URI createURIFromString(EDataType eDataType, String initialValue) {
+ return URI.createURI(initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String convertURIToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ModifierPackage getModifierPackage() {
+ return (ModifierPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static ModifierPackage getPackage() {
+ return ModifierPackage.eINSTANCE;
+ }
+
+} //ModifierFactoryImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/ModifierImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/ModifierImpl.java
new file mode 100644
index 000000000..5dec61401
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/ModifierImpl.java
@@ -0,0 +1,513 @@
+package org.eclipse.stem.core.modifier.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.stem.core.CorePlugin;
+import org.eclipse.stem.core.STEMURI;
+import org.eclipse.stem.core.graph.Edge;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.graph.Label;
+import org.eclipse.stem.core.graph.NodeLabel;
+import org.eclipse.stem.core.model.Decorator;
+import org.eclipse.stem.core.model.Model;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.model.impl.DecoratorImpl;
+import org.eclipse.stem.core.modifier.FeatureModifier;
+import org.eclipse.stem.core.modifier.Modifier;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+import org.eclipse.stem.core.scenario.Scenario;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '
+ * <em><b>Modifier</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.ModifierImpl#getTargetURI <em>Target URI</em>}</li>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.ModifierImpl#getFeatureModifiers <em>Feature Modifiers</em>}</li>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.ModifierImpl#isComplete <em>Complete</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ModifierImpl extends DecoratorImpl implements Modifier {
+ /**
+ * The default value of the '{@link #getTargetURI() <em>Target URI</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getTargetURI()
+ * @generated
+ * @ordered
+ */
+ protected static final URI TARGET_URI_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getTargetURI() <em>Target URI</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getTargetURI()
+ * @generated
+ * @ordered
+ */
+ protected URI targetURI = TARGET_URI_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getFeatureModifiers()
+ * <em>Feature Modifiers</em>}' containment reference list. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getFeatureModifiers()
+ * @generated
+ * @ordered
+ */
+ protected EList<FeatureModifier> featureModifiers;
+
+ // set to true when there's an error
+ private boolean complete = false;
+
+
+ /**
+ * The default value of the '{@link #isComplete() <em>Complete</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #isComplete()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean COMPLETE_EDEFAULT = false;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ protected ModifierImpl() {
+ super();
+ setURI(STEMURI.createURI(URI_TYPE_MODIFIER_SEGMENT + "/"
+ + STEMURI.generateUniquePart()));
+ setTypeURI(STEMURI.MODIFIER_TYPE_URI);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ModifierPackage.Literals.MODIFIER;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public URI getTargetURI() {
+ return targetURI;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTargetURI(URI newTargetURI) {
+ URI oldTargetURI = targetURI;
+ targetURI = newTargetURI;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModifierPackage.MODIFIER__TARGET_URI, oldTargetURI, targetURI));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<FeatureModifier> getFeatureModifiers() {
+ if (featureModifiers == null) {
+ featureModifiers = new EObjectContainmentEList<FeatureModifier>(FeatureModifier.class, this, ModifierPackage.MODIFIER__FEATURE_MODIFIERS);
+ }
+ return featureModifiers;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public boolean isComplete() {
+
+ if (complete) {
+ // Yes
+ return true;
+ } // if
+
+ boolean retValue = true;
+
+ for (FeatureModifier featureModifier : getFeatureModifiers()) {
+ retValue = featureModifier.isComplete();
+ // Found one that's false?
+ if (!retValue) {
+ // Yes
+ break;
+ } // if
+ } // for each FeatureModifier
+ return retValue;
+ } // isComplete
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void reset() {
+ for (FeatureModifier featureModifier : getFeatureModifiers()) {
+ featureModifier.reset();
+ } // for each FeatureModifier
+ } // reset
+
+
+ /**
+ * @see org.eclipse.stem.core.model.impl.DecoratorImpl#resetLabels()
+ */
+ @Override
+ public void resetLabels() {
+ reset();
+ }
+
+ /**
+ * @see org.eclipse.stem.core.model.impl.DecoratorImpl#decorateGraph()
+ */
+ @Override
+ public boolean decorateGraph(STEMTime time) {
+ // Nothing
+ return true;
+ } // decorateGraph
+
+ /**
+ * @see org.eclipse.stem.core.model.impl.DecoratorImpl#updateLabels(org.eclipse.stem.core.model.STEMTime,
+ * long)
+ *
+ * Only invoked by triggers
+ */
+ @Override
+ public void updateLabels(STEMTime time, long timerPeriod, int cycle) {
+ EObject target = getTarget(getGraph());
+ if(target != null) {
+ modifyTarget(target);
+// Commented out. The code was used to force inoculators to re-inoculate the population. ControlLabels are used to handle this now instead
+// if(target instanceof Decorator) {
+// ((Decorator)target).setGraphDecorated(false);
+// ((Decorator)target).decorateGraph(time);
+// ((Decorator)target).setGraphDecorated(true);
+// }
+ }
+ } // updateLabels
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public void updateScenario(final Scenario scenario) {
+ EObject t = getTarget(scenario);
+ if(t == null)
+ CorePlugin.logError("Modifier "+this.getURI()+" cannot find target "+getTargetURI()+" in scenario "+scenario.getURI(), new Exception());
+ else modifyTarget(t);
+ } // updateScenario
+
+ private EObject getTarget(final Scenario scenario) {
+ EObject retValue = null;
+ // Sequencer?
+ if (scenario.getSequencer().getURI().equals(getTargetURI())) {
+ // Yes
+ retValue = scenario.getSequencer();
+ } // if
+ else {
+ // No
+ // Scenario Decorators?
+ /* Commented out 6/10/09 since a modifier for infectors needs to modify the infector in the graph
+ for (Decorator scenarioDecorator : scenario.getScenarioDecorators()) {
+ // Our target?
+ if (scenarioDecorator.getURI().equals(targetURI)) {
+ // Yes
+ retValue = scenarioDecorator;
+ break;
+ } // if
+ } // for each Scenario Decorator
+ */
+ // Did we find a Scenario decorator?
+ if (retValue == null) {
+ // No
+ // We've done the easy stuff
+ retValue = getTarget(scenario.getModel());
+ } // if no Scenario Decorator
+
+ } // else not a Scenario decorator
+ return retValue;
+ } // getIdentifiable
+
+ private EObject getTarget(final Model model) {
+ EObject retValue = null;
+ for (Decorator decorator : model.getNodeDecorators()) {
+ // Our target?
+ if (decorator.getURI().equals(getTargetURI())) {
+ // Yes
+ retValue = decorator;
+ break;
+ } // if
+
+ } // for each Decorator
+
+ if(retValue == null)
+ for(Model m:model.getModels()) {
+ retValue = getTarget(m);
+ if(retValue != null) break;
+ }
+
+ // A Node label?
+ if (retValue == null) {
+ for(Graph g:model.getGraphs()) {
+ retValue = findNodeLabel(g);
+ if(retValue != null) break;
+ }
+ } // if retValue == null
+
+ // An Edge Label?
+ if (retValue == null) {
+ for(Graph g:model.getGraphs()) {
+ retValue = findEdgeLabel(g);
+ if(retValue != null) break;
+ }
+ } // if retValue == null
+ return retValue;
+ }
+
+ private EObject getTarget(final Graph graph) {
+ EObject retValue = null;
+ for (Decorator decorator : graph.getDecorators()) {
+ // Our target?
+ if (decorator.getURI().equals(getTargetURI())) {
+ // Yes
+ retValue = decorator;
+ break;
+ } // if
+
+ } // for each Decorator
+
+ // A Node label?
+ if(retValue == null) retValue = findNodeLabel(graph);
+ if(retValue == null) retValue = findEdgeLabel(graph);
+
+ if(retValue == null)
+ CorePlugin.logError("Unable to find target to modify having URI "+getTargetURI(), new Exception());
+ return retValue;
+ } // getIdentifiable
+
+
+ private EObject findNodeLabel(Graph g) {
+ for (NodeLabel nodeLabel : g.getNodeLabels().values()) {
+ // Our target?
+ if (nodeLabel.getURI().equals(getTargetURI())) {
+ // Yes
+ return nodeLabel;
+ } // if
+ } // for each Node Label
+ return null;
+
+ }
+
+ private EObject findEdgeLabel(Graph g) {
+ for (Edge edge : g.getEdges().values()) {
+ // Our target?
+ if (edge.getLabel().getURI().equals(getTargetURI())) {
+ // Yes
+ return edge.getLabel();
+ } // if
+ } // for each Edge
+ return null;
+ }
+
+ private void modifyTarget(EObject target) {
+ // Yes
+ for (FeatureModifier featureModifier : getFeatureModifiers()) {
+
+ // If the Identifiable is a label, then the feature we
+ // are modifying could be in the current label value. If it is
+ // we need to adjust the target of the feature modifier.
+ //
+ if (target instanceof Label) {
+ // Yes
+ final Label l = (Label)target;
+ target = l.getCurrentValue();
+ }
+ featureModifier.setTarget(target);
+ featureModifier.updateFeature();
+ } // for each FeatureModifier
+ } // modifyIdentifiable
+
+ /**
+ * Look inside the decorators for the target. This is to find string values and
+ * double values.
+ * @param eobj
+ * @param target
+ * @return EObject the target if found, otherwise null
+ */
+ public EObject deepFindChildren(EObject eobj, EObject target) {
+ if(eobj.equals(target)) return eobj;
+ for(EObject eo:eobj.eContents()) {
+ deepFindChildren(eo, target);
+ }
+ return null;
+ }
+ /**
+ * @see org.eclipse.stem.core.modifier.Modifier#getModificationSummary()
+ */
+ public List<String> getModificationSummary() {
+ final List<String> retValue = new ArrayList<String>();
+ for (FeatureModifier featureModifier : getFeatureModifiers()) {
+ retValue.add(featureModifier.getModificationSummary());
+ } // for each FeatureModifier
+ return retValue;
+ } // getModificationSummary
+
+ /**
+ * @see org.eclipse.stem.core.common.impl.IdentifiableImpl#sane()
+ */
+ @Override
+ public boolean sane() {
+ boolean retValue = super.sane();
+ assert retValue;
+
+ /*
+ * This is commented out because of the difficulty of dynamically
+ * creating a test object that is derived from Identifable. So the test
+ * object doesn't have a URI. See MonitorTest#createTestPackage()
+ */
+ // retValue = retValue && targetURI != null;
+ // assert retValue;
+ for (FeatureModifier featureModifier : getFeatureModifiers()) {
+ retValue = retValue && featureModifier.sane();
+ assert retValue;
+ } // for each FeatureModifier
+ return retValue;
+ } // sane
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd,
+ int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case ModifierPackage.MODIFIER__FEATURE_MODIFIERS:
+ return ((InternalEList<?>)getFeatureModifiers()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ModifierPackage.MODIFIER__TARGET_URI:
+ return getTargetURI();
+ case ModifierPackage.MODIFIER__FEATURE_MODIFIERS:
+ return getFeatureModifiers();
+ case ModifierPackage.MODIFIER__COMPLETE:
+ return isComplete();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ModifierPackage.MODIFIER__TARGET_URI:
+ setTargetURI((URI)newValue);
+ return;
+ case ModifierPackage.MODIFIER__FEATURE_MODIFIERS:
+ getFeatureModifiers().clear();
+ getFeatureModifiers().addAll((Collection<? extends FeatureModifier>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ModifierPackage.MODIFIER__TARGET_URI:
+ setTargetURI(TARGET_URI_EDEFAULT);
+ return;
+ case ModifierPackage.MODIFIER__FEATURE_MODIFIERS:
+ getFeatureModifiers().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ModifierPackage.MODIFIER__TARGET_URI:
+ return TARGET_URI_EDEFAULT == null ? targetURI != null : !TARGET_URI_EDEFAULT.equals(targetURI);
+ case ModifierPackage.MODIFIER__FEATURE_MODIFIERS:
+ return featureModifiers != null && !featureModifiers.isEmpty();
+ case ModifierPackage.MODIFIER__COMPLETE:
+ return isComplete() != COMPLETE_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (targetURI: "); //$NON-NLS-1$
+ result.append(targetURI);
+ result.append(')');
+ return result.toString();
+ }
+
+} // ModifierImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/ModifierPackageImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/ModifierPackageImpl.java
new file mode 100644
index 000000000..000a6afbc
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/ModifierPackageImpl.java
@@ -0,0 +1,1279 @@
+package org.eclipse.stem.core.modifier.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.stem.core.common.CommonPackage;
+import org.eclipse.stem.core.common.impl.CommonPackageImpl;
+import org.eclipse.stem.core.experiment.ExperimentPackage;
+import org.eclipse.stem.core.experiment.impl.ExperimentPackageImpl;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.impl.GraphPackageImpl;
+import org.eclipse.stem.core.logger.LoggerPackage;
+import org.eclipse.stem.core.logger.impl.LoggerPackageImpl;
+import org.eclipse.stem.core.model.ModelPackage;
+import org.eclipse.stem.core.model.impl.ModelPackageImpl;
+import org.eclipse.stem.core.modifier.DoubleModifier;
+import org.eclipse.stem.core.modifier.DoubleNOPModifier;
+import org.eclipse.stem.core.modifier.DoubleRangeModifier;
+import org.eclipse.stem.core.modifier.DoubleSequenceModifier;
+import org.eclipse.stem.core.modifier.FeatureModifier;
+import org.eclipse.stem.core.modifier.IntegerModifier;
+import org.eclipse.stem.core.modifier.IntegerNOPModifier;
+import org.eclipse.stem.core.modifier.IntegerRangeModifier;
+import org.eclipse.stem.core.modifier.IntegerSequenceModifier;
+import org.eclipse.stem.core.modifier.LongModifier;
+import org.eclipse.stem.core.modifier.LongNOPModifier;
+import org.eclipse.stem.core.modifier.LongRangeModifier;
+import org.eclipse.stem.core.modifier.LongSequenceModifier;
+import org.eclipse.stem.core.modifier.Modifiable;
+import org.eclipse.stem.core.modifier.Modifier;
+import org.eclipse.stem.core.modifier.ModifierFactory;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+import org.eclipse.stem.core.modifier.NOPModifier;
+import org.eclipse.stem.core.modifier.RangeModifier;
+import org.eclipse.stem.core.modifier.STEMTimeModifier;
+import org.eclipse.stem.core.modifier.STEMTimeNOPModifier;
+import org.eclipse.stem.core.modifier.STEMTimeRangeModifier;
+import org.eclipse.stem.core.modifier.STEMTimeSequenceModifier;
+import org.eclipse.stem.core.modifier.SequenceModifier;
+import org.eclipse.stem.core.modifier.SingleValueModifier;
+import org.eclipse.stem.core.modifier.StringNOPModifier;
+import org.eclipse.stem.core.modifier.StringSequenceModifier;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+import org.eclipse.stem.core.predicate.impl.PredicatePackageImpl;
+import org.eclipse.stem.core.scenario.ScenarioPackage;
+import org.eclipse.stem.core.scenario.impl.ScenarioPackageImpl;
+import org.eclipse.stem.core.sequencer.SequencerPackage;
+import org.eclipse.stem.core.sequencer.impl.SequencerPackageImpl;
+import org.eclipse.stem.core.solver.SolverPackage;
+import org.eclipse.stem.core.solver.impl.SolverPackageImpl;
+import org.eclipse.stem.core.trigger.TriggerPackage;
+import org.eclipse.stem.core.trigger.impl.TriggerPackageImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ModifierPackageImpl extends EPackageImpl implements ModifierPackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass doubleNOPModifierEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass doubleRangeModifierEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass doubleSequenceModifierEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass featureModifierEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass integerNOPModifierEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass integerRangeModifierEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass integerSequenceModifierEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass longNOPModifierEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass longRangeModifierEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass longSequenceModifierEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass modifierEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass nopModifierEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass rangeModifierEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass stemTimeNOPModifierEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass stemTimeRangeModifierEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass stemTimeSequenceModifierEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass sequenceModifierEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass stringNOPModifierEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass stringSequenceModifierEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass modifiableEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass singleValueModifierEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass doubleModifierEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass integerModifierEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass longModifierEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass stemTimeModifierEClass = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.eclipse.stem.core.modifier.ModifierPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private ModifierPackageImpl() {
+ super(eNS_URI, ModifierFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link ModifierPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static ModifierPackage init() {
+ if (isInited) return (ModifierPackage)EPackage.Registry.INSTANCE.getEPackage(ModifierPackage.eNS_URI);
+
+ // Obtain or create and register package
+ ModifierPackageImpl theModifierPackage = (ModifierPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof ModifierPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new ModifierPackageImpl());
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ EcorePackage.eINSTANCE.eClass();
+
+ // Obtain or create and register interdependencies
+ CommonPackageImpl theCommonPackage = (CommonPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(CommonPackage.eNS_URI) instanceof CommonPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(CommonPackage.eNS_URI) : CommonPackage.eINSTANCE);
+ ExperimentPackageImpl theExperimentPackage = (ExperimentPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ExperimentPackage.eNS_URI) instanceof ExperimentPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ExperimentPackage.eNS_URI) : ExperimentPackage.eINSTANCE);
+ GraphPackageImpl theGraphPackage = (GraphPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(GraphPackage.eNS_URI) instanceof GraphPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(GraphPackage.eNS_URI) : GraphPackage.eINSTANCE);
+ ModelPackageImpl theModelPackage = (ModelPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ModelPackage.eNS_URI) instanceof ModelPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ModelPackage.eNS_URI) : ModelPackage.eINSTANCE);
+ PredicatePackageImpl thePredicatePackage = (PredicatePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(PredicatePackage.eNS_URI) instanceof PredicatePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(PredicatePackage.eNS_URI) : PredicatePackage.eINSTANCE);
+ ScenarioPackageImpl theScenarioPackage = (ScenarioPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ScenarioPackage.eNS_URI) instanceof ScenarioPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ScenarioPackage.eNS_URI) : ScenarioPackage.eINSTANCE);
+ SequencerPackageImpl theSequencerPackage = (SequencerPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SequencerPackage.eNS_URI) instanceof SequencerPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SequencerPackage.eNS_URI) : SequencerPackage.eINSTANCE);
+ TriggerPackageImpl theTriggerPackage = (TriggerPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(TriggerPackage.eNS_URI) instanceof TriggerPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(TriggerPackage.eNS_URI) : TriggerPackage.eINSTANCE);
+ SolverPackageImpl theSolverPackage = (SolverPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SolverPackage.eNS_URI) instanceof SolverPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SolverPackage.eNS_URI) : SolverPackage.eINSTANCE);
+ LoggerPackageImpl theLoggerPackage = (LoggerPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(LoggerPackage.eNS_URI) instanceof LoggerPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(LoggerPackage.eNS_URI) : LoggerPackage.eINSTANCE);
+
+ // Create package meta-data objects
+ theModifierPackage.createPackageContents();
+ theCommonPackage.createPackageContents();
+ theExperimentPackage.createPackageContents();
+ theGraphPackage.createPackageContents();
+ theModelPackage.createPackageContents();
+ thePredicatePackage.createPackageContents();
+ theScenarioPackage.createPackageContents();
+ theSequencerPackage.createPackageContents();
+ theTriggerPackage.createPackageContents();
+ theSolverPackage.createPackageContents();
+ theLoggerPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theModifierPackage.initializePackageContents();
+ theCommonPackage.initializePackageContents();
+ theExperimentPackage.initializePackageContents();
+ theGraphPackage.initializePackageContents();
+ theModelPackage.initializePackageContents();
+ thePredicatePackage.initializePackageContents();
+ theScenarioPackage.initializePackageContents();
+ theSequencerPackage.initializePackageContents();
+ theTriggerPackage.initializePackageContents();
+ theSolverPackage.initializePackageContents();
+ theLoggerPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theModifierPackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(ModifierPackage.eNS_URI, theModifierPackage);
+ return theModifierPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDoubleNOPModifier() {
+ return doubleNOPModifierEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDoubleRangeModifier() {
+ return doubleRangeModifierEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDoubleRangeModifier_StartValue() {
+ return (EAttribute)doubleRangeModifierEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDoubleRangeModifier_EndValue() {
+ return (EAttribute)doubleRangeModifierEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDoubleRangeModifier_Increment() {
+ return (EAttribute)doubleRangeModifierEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDoubleRangeModifier_NextValue() {
+ return (EAttribute)doubleRangeModifierEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDoubleRangeModifier_OriginalValue() {
+ return (EAttribute)doubleRangeModifierEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDoubleSequenceModifier() {
+ return doubleSequenceModifierEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDoubleSequenceModifier_Sequence() {
+ return (EAttribute)doubleSequenceModifierEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getFeatureModifier() {
+ return featureModifierEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getFeatureModifier_Target() {
+ return (EReference)featureModifierEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getFeatureModifier_EStructuralFeature() {
+ return (EReference)featureModifierEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getFeatureModifier_FeatureName() {
+ return (EAttribute)featureModifierEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getFeatureModifier_FeatureId() {
+ return (EAttribute)featureModifierEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getFeatureModifier_CurrentValueText() {
+ return (EAttribute)featureModifierEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getFeatureModifier_Complete() {
+ return (EAttribute)featureModifierEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getIntegerNOPModifier() {
+ return integerNOPModifierEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getIntegerRangeModifier() {
+ return integerRangeModifierEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getIntegerRangeModifier_StartValue() {
+ return (EAttribute)integerRangeModifierEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getIntegerRangeModifier_EndValue() {
+ return (EAttribute)integerRangeModifierEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getIntegerRangeModifier_Increment() {
+ return (EAttribute)integerRangeModifierEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getIntegerRangeModifier_NextValue() {
+ return (EAttribute)integerRangeModifierEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getIntegerRangeModifier_OriginalValue() {
+ return (EAttribute)integerRangeModifierEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getIntegerSequenceModifier() {
+ return integerSequenceModifierEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getIntegerSequenceModifier_Sequence() {
+ return (EAttribute)integerSequenceModifierEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getLongNOPModifier() {
+ return longNOPModifierEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getLongRangeModifier() {
+ return longRangeModifierEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getLongRangeModifier_StartValue() {
+ return (EAttribute)longRangeModifierEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getLongRangeModifier_EndValue() {
+ return (EAttribute)longRangeModifierEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getLongRangeModifier_Increment() {
+ return (EAttribute)longRangeModifierEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getLongRangeModifier_NextValue() {
+ return (EAttribute)longRangeModifierEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getLongRangeModifier_OriginalValue() {
+ return (EAttribute)longRangeModifierEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getLongSequenceModifier() {
+ return longSequenceModifierEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getLongSequenceModifier_Sequence() {
+ return (EAttribute)longSequenceModifierEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getModifier() {
+ return modifierEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getModifier_TargetURI() {
+ return (EAttribute)modifierEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getModifier_FeatureModifiers() {
+ return (EReference)modifierEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getModifier_Complete() {
+ return (EAttribute)modifierEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getNOPModifier() {
+ return nopModifierEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getRangeModifier() {
+ return rangeModifierEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSTEMTimeNOPModifier() {
+ return stemTimeNOPModifierEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSTEMTimeRangeModifier() {
+ return stemTimeRangeModifierEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSTEMTimeRangeModifier_StartValue() {
+ return (EReference)stemTimeRangeModifierEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSTEMTimeRangeModifier_EndValue() {
+ return (EReference)stemTimeRangeModifierEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getSTEMTimeRangeModifier_Increment() {
+ return (EAttribute)stemTimeRangeModifierEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSTEMTimeRangeModifier_NextValue() {
+ return (EReference)stemTimeRangeModifierEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSTEMTimeRangeModifier_OriginalValue() {
+ return (EReference)stemTimeRangeModifierEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSTEMTimeSequenceModifier() {
+ return stemTimeSequenceModifierEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSTEMTimeSequenceModifier_Sequence() {
+ return (EReference)stemTimeSequenceModifierEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSequenceModifier() {
+ return sequenceModifierEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getSequenceModifier_SequenceSize() {
+ return (EAttribute)sequenceModifierEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getSequenceModifier_CurrentSequenceIndex() {
+ return (EAttribute)sequenceModifierEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getSequenceModifier_NextValue() {
+ return (EAttribute)sequenceModifierEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getSequenceModifier_OriginalValue() {
+ return (EAttribute)sequenceModifierEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getStringNOPModifier() {
+ return stringNOPModifierEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getStringSequenceModifier() {
+ return stringSequenceModifierEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getStringSequenceModifier_Sequence() {
+ return (EAttribute)stringSequenceModifierEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getModifiable() {
+ return modifiableEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSingleValueModifier() {
+ return singleValueModifierEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDoubleModifier() {
+ return doubleModifierEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDoubleModifier_Value() {
+ return (EAttribute)doubleModifierEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDoubleModifier_OriginalValue() {
+ return (EAttribute)doubleModifierEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getIntegerModifier() {
+ return integerModifierEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getIntegerModifier_Value() {
+ return (EAttribute)integerModifierEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getIntegerModifier_OriginalValue() {
+ return (EAttribute)integerModifierEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getLongModifier() {
+ return longModifierEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getLongModifier_Value() {
+ return (EAttribute)longModifierEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getLongModifier_OriginalValue() {
+ return (EAttribute)longModifierEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSTEMTimeModifier() {
+ return stemTimeModifierEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSTEMTimeModifier_Value() {
+ return (EReference)stemTimeModifierEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSTEMTimeModifier_OriginalValue() {
+ return (EReference)stemTimeModifierEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ModifierFactory getModifierFactory() {
+ return (ModifierFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ doubleNOPModifierEClass = createEClass(DOUBLE_NOP_MODIFIER);
+
+ doubleRangeModifierEClass = createEClass(DOUBLE_RANGE_MODIFIER);
+ createEAttribute(doubleRangeModifierEClass, DOUBLE_RANGE_MODIFIER__START_VALUE);
+ createEAttribute(doubleRangeModifierEClass, DOUBLE_RANGE_MODIFIER__END_VALUE);
+ createEAttribute(doubleRangeModifierEClass, DOUBLE_RANGE_MODIFIER__INCREMENT);
+ createEAttribute(doubleRangeModifierEClass, DOUBLE_RANGE_MODIFIER__NEXT_VALUE);
+ createEAttribute(doubleRangeModifierEClass, DOUBLE_RANGE_MODIFIER__ORIGINAL_VALUE);
+
+ doubleSequenceModifierEClass = createEClass(DOUBLE_SEQUENCE_MODIFIER);
+ createEAttribute(doubleSequenceModifierEClass, DOUBLE_SEQUENCE_MODIFIER__SEQUENCE);
+
+ featureModifierEClass = createEClass(FEATURE_MODIFIER);
+ createEReference(featureModifierEClass, FEATURE_MODIFIER__TARGET);
+ createEReference(featureModifierEClass, FEATURE_MODIFIER__ESTRUCTURAL_FEATURE);
+ createEAttribute(featureModifierEClass, FEATURE_MODIFIER__FEATURE_NAME);
+ createEAttribute(featureModifierEClass, FEATURE_MODIFIER__FEATURE_ID);
+ createEAttribute(featureModifierEClass, FEATURE_MODIFIER__CURRENT_VALUE_TEXT);
+ createEAttribute(featureModifierEClass, FEATURE_MODIFIER__COMPLETE);
+
+ integerNOPModifierEClass = createEClass(INTEGER_NOP_MODIFIER);
+
+ integerRangeModifierEClass = createEClass(INTEGER_RANGE_MODIFIER);
+ createEAttribute(integerRangeModifierEClass, INTEGER_RANGE_MODIFIER__START_VALUE);
+ createEAttribute(integerRangeModifierEClass, INTEGER_RANGE_MODIFIER__END_VALUE);
+ createEAttribute(integerRangeModifierEClass, INTEGER_RANGE_MODIFIER__INCREMENT);
+ createEAttribute(integerRangeModifierEClass, INTEGER_RANGE_MODIFIER__NEXT_VALUE);
+ createEAttribute(integerRangeModifierEClass, INTEGER_RANGE_MODIFIER__ORIGINAL_VALUE);
+
+ integerSequenceModifierEClass = createEClass(INTEGER_SEQUENCE_MODIFIER);
+ createEAttribute(integerSequenceModifierEClass, INTEGER_SEQUENCE_MODIFIER__SEQUENCE);
+
+ longNOPModifierEClass = createEClass(LONG_NOP_MODIFIER);
+
+ longRangeModifierEClass = createEClass(LONG_RANGE_MODIFIER);
+ createEAttribute(longRangeModifierEClass, LONG_RANGE_MODIFIER__START_VALUE);
+ createEAttribute(longRangeModifierEClass, LONG_RANGE_MODIFIER__END_VALUE);
+ createEAttribute(longRangeModifierEClass, LONG_RANGE_MODIFIER__INCREMENT);
+ createEAttribute(longRangeModifierEClass, LONG_RANGE_MODIFIER__NEXT_VALUE);
+ createEAttribute(longRangeModifierEClass, LONG_RANGE_MODIFIER__ORIGINAL_VALUE);
+
+ longSequenceModifierEClass = createEClass(LONG_SEQUENCE_MODIFIER);
+ createEAttribute(longSequenceModifierEClass, LONG_SEQUENCE_MODIFIER__SEQUENCE);
+
+ modifierEClass = createEClass(MODIFIER);
+ createEAttribute(modifierEClass, MODIFIER__TARGET_URI);
+ createEReference(modifierEClass, MODIFIER__FEATURE_MODIFIERS);
+ createEAttribute(modifierEClass, MODIFIER__COMPLETE);
+
+ nopModifierEClass = createEClass(NOP_MODIFIER);
+
+ rangeModifierEClass = createEClass(RANGE_MODIFIER);
+
+ stemTimeNOPModifierEClass = createEClass(STEM_TIME_NOP_MODIFIER);
+
+ stemTimeRangeModifierEClass = createEClass(STEM_TIME_RANGE_MODIFIER);
+ createEReference(stemTimeRangeModifierEClass, STEM_TIME_RANGE_MODIFIER__START_VALUE);
+ createEReference(stemTimeRangeModifierEClass, STEM_TIME_RANGE_MODIFIER__END_VALUE);
+ createEAttribute(stemTimeRangeModifierEClass, STEM_TIME_RANGE_MODIFIER__INCREMENT);
+ createEReference(stemTimeRangeModifierEClass, STEM_TIME_RANGE_MODIFIER__NEXT_VALUE);
+ createEReference(stemTimeRangeModifierEClass, STEM_TIME_RANGE_MODIFIER__ORIGINAL_VALUE);
+
+ stemTimeSequenceModifierEClass = createEClass(STEM_TIME_SEQUENCE_MODIFIER);
+ createEReference(stemTimeSequenceModifierEClass, STEM_TIME_SEQUENCE_MODIFIER__SEQUENCE);
+
+ sequenceModifierEClass = createEClass(SEQUENCE_MODIFIER);
+ createEAttribute(sequenceModifierEClass, SEQUENCE_MODIFIER__SEQUENCE_SIZE);
+ createEAttribute(sequenceModifierEClass, SEQUENCE_MODIFIER__CURRENT_SEQUENCE_INDEX);
+ createEAttribute(sequenceModifierEClass, SEQUENCE_MODIFIER__NEXT_VALUE);
+ createEAttribute(sequenceModifierEClass, SEQUENCE_MODIFIER__ORIGINAL_VALUE);
+
+ stringNOPModifierEClass = createEClass(STRING_NOP_MODIFIER);
+
+ stringSequenceModifierEClass = createEClass(STRING_SEQUENCE_MODIFIER);
+ createEAttribute(stringSequenceModifierEClass, STRING_SEQUENCE_MODIFIER__SEQUENCE);
+
+ modifiableEClass = createEClass(MODIFIABLE);
+
+ singleValueModifierEClass = createEClass(SINGLE_VALUE_MODIFIER);
+
+ doubleModifierEClass = createEClass(DOUBLE_MODIFIER);
+ createEAttribute(doubleModifierEClass, DOUBLE_MODIFIER__VALUE);
+ createEAttribute(doubleModifierEClass, DOUBLE_MODIFIER__ORIGINAL_VALUE);
+
+ integerModifierEClass = createEClass(INTEGER_MODIFIER);
+ createEAttribute(integerModifierEClass, INTEGER_MODIFIER__VALUE);
+ createEAttribute(integerModifierEClass, INTEGER_MODIFIER__ORIGINAL_VALUE);
+
+ longModifierEClass = createEClass(LONG_MODIFIER);
+ createEAttribute(longModifierEClass, LONG_MODIFIER__VALUE);
+ createEAttribute(longModifierEClass, LONG_MODIFIER__ORIGINAL_VALUE);
+
+ stemTimeModifierEClass = createEClass(STEM_TIME_MODIFIER);
+ createEReference(stemTimeModifierEClass, STEM_TIME_MODIFIER__VALUE);
+ createEReference(stemTimeModifierEClass, STEM_TIME_MODIFIER__ORIGINAL_VALUE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ EcorePackage theEcorePackage = (EcorePackage)EPackage.Registry.INSTANCE.getEPackage(EcorePackage.eNS_URI);
+ ModelPackage theModelPackage = (ModelPackage)EPackage.Registry.INSTANCE.getEPackage(ModelPackage.eNS_URI);
+ CommonPackage theCommonPackage = (CommonPackage)EPackage.Registry.INSTANCE.getEPackage(CommonPackage.eNS_URI);
+ ScenarioPackage theScenarioPackage = (ScenarioPackage)EPackage.Registry.INSTANCE.getEPackage(ScenarioPackage.eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ doubleNOPModifierEClass.getESuperTypes().add(this.getNOPModifier());
+ doubleRangeModifierEClass.getESuperTypes().add(this.getRangeModifier());
+ doubleSequenceModifierEClass.getESuperTypes().add(this.getSequenceModifier());
+ integerNOPModifierEClass.getESuperTypes().add(this.getNOPModifier());
+ integerRangeModifierEClass.getESuperTypes().add(this.getRangeModifier());
+ integerSequenceModifierEClass.getESuperTypes().add(this.getSequenceModifier());
+ longNOPModifierEClass.getESuperTypes().add(this.getNOPModifier());
+ longRangeModifierEClass.getESuperTypes().add(this.getRangeModifier());
+ longSequenceModifierEClass.getESuperTypes().add(this.getSequenceModifier());
+ modifierEClass.getESuperTypes().add(theModelPackage.getDecorator());
+ nopModifierEClass.getESuperTypes().add(this.getFeatureModifier());
+ rangeModifierEClass.getESuperTypes().add(this.getFeatureModifier());
+ stemTimeNOPModifierEClass.getESuperTypes().add(this.getNOPModifier());
+ stemTimeRangeModifierEClass.getESuperTypes().add(this.getRangeModifier());
+ stemTimeSequenceModifierEClass.getESuperTypes().add(this.getSequenceModifier());
+ sequenceModifierEClass.getESuperTypes().add(this.getFeatureModifier());
+ stringNOPModifierEClass.getESuperTypes().add(this.getNOPModifier());
+ stringSequenceModifierEClass.getESuperTypes().add(this.getSequenceModifier());
+ singleValueModifierEClass.getESuperTypes().add(this.getFeatureModifier());
+ doubleModifierEClass.getESuperTypes().add(this.getSingleValueModifier());
+ integerModifierEClass.getESuperTypes().add(this.getSingleValueModifier());
+ longModifierEClass.getESuperTypes().add(this.getSingleValueModifier());
+ stemTimeModifierEClass.getESuperTypes().add(this.getSingleValueModifier());
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(doubleNOPModifierEClass, DoubleNOPModifier.class, "DoubleNOPModifier", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(doubleRangeModifierEClass, DoubleRangeModifier.class, "DoubleRangeModifier", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getDoubleRangeModifier_StartValue(), ecorePackage.getEDouble(), "startValue", "-99999999.0", 0, 1, DoubleRangeModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+ initEAttribute(getDoubleRangeModifier_EndValue(), ecorePackage.getEDouble(), "endValue", "-99999999.0", 0, 1, DoubleRangeModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+ initEAttribute(getDoubleRangeModifier_Increment(), ecorePackage.getEDouble(), "increment", "-99999999.0", 0, 1, DoubleRangeModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+ initEAttribute(getDoubleRangeModifier_NextValue(), ecorePackage.getEDouble(), "nextValue", "0.0", 0, 1, DoubleRangeModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+ initEAttribute(getDoubleRangeModifier_OriginalValue(), ecorePackage.getEDouble(), "originalValue", null, 0, 1, DoubleRangeModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(doubleSequenceModifierEClass, DoubleSequenceModifier.class, "DoubleSequenceModifier", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getDoubleSequenceModifier_Sequence(), ecorePackage.getEDoubleObject(), "sequence", null, 0, -1, DoubleSequenceModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(featureModifierEClass, FeatureModifier.class, "FeatureModifier", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getFeatureModifier_Target(), theEcorePackage.getEObject(), null, "target", null, 0, 1, FeatureModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getFeatureModifier_EStructuralFeature(), theEcorePackage.getEStructuralFeature(), null, "eStructuralFeature", null, 0, 1, FeatureModifier.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getFeatureModifier_FeatureName(), ecorePackage.getEString(), "featureName", null, 0, 1, FeatureModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getFeatureModifier_FeatureId(), ecorePackage.getEInt(), "featureId", null, 0, 1, FeatureModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getFeatureModifier_CurrentValueText(), ecorePackage.getEString(), "currentValueText", null, 0, 1, FeatureModifier.class, IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getFeatureModifier_Complete(), ecorePackage.getEBoolean(), "complete", null, 0, 1, FeatureModifier.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ addEOperation(featureModifierEClass, null, "updateFeature", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ addEOperation(featureModifierEClass, null, "reset", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(integerNOPModifierEClass, IntegerNOPModifier.class, "IntegerNOPModifier", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(integerRangeModifierEClass, IntegerRangeModifier.class, "IntegerRangeModifier", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getIntegerRangeModifier_StartValue(), ecorePackage.getEInt(), "startValue", "-99999999", 0, 1, IntegerRangeModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+ initEAttribute(getIntegerRangeModifier_EndValue(), ecorePackage.getEInt(), "endValue", "-99999999", 0, 1, IntegerRangeModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+ initEAttribute(getIntegerRangeModifier_Increment(), ecorePackage.getEInt(), "increment", "-99999999", 0, 1, IntegerRangeModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+ initEAttribute(getIntegerRangeModifier_NextValue(), ecorePackage.getEInt(), "nextValue", "-99999999", 0, 1, IntegerRangeModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+ initEAttribute(getIntegerRangeModifier_OriginalValue(), ecorePackage.getEInt(), "originalValue", null, 0, 1, IntegerRangeModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(integerSequenceModifierEClass, IntegerSequenceModifier.class, "IntegerSequenceModifier", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getIntegerSequenceModifier_Sequence(), ecorePackage.getEIntegerObject(), "sequence", null, 0, -1, IntegerSequenceModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(longNOPModifierEClass, LongNOPModifier.class, "LongNOPModifier", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(longRangeModifierEClass, LongRangeModifier.class, "LongRangeModifier", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getLongRangeModifier_StartValue(), ecorePackage.getELong(), "startValue", "-99999999", 0, 1, LongRangeModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+ initEAttribute(getLongRangeModifier_EndValue(), ecorePackage.getELong(), "endValue", "-99999999", 0, 1, LongRangeModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+ initEAttribute(getLongRangeModifier_Increment(), ecorePackage.getELong(), "increment", "-99999999", 0, 1, LongRangeModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+ initEAttribute(getLongRangeModifier_NextValue(), ecorePackage.getELong(), "nextValue", "-99999999", 0, 1, LongRangeModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+ initEAttribute(getLongRangeModifier_OriginalValue(), ecorePackage.getELong(), "originalValue", "-99999999", 0, 1, LongRangeModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+
+ initEClass(longSequenceModifierEClass, LongSequenceModifier.class, "LongSequenceModifier", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getLongSequenceModifier_Sequence(), ecorePackage.getELongObject(), "sequence", null, 0, -1, LongSequenceModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(modifierEClass, Modifier.class, "Modifier", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getModifier_TargetURI(), theCommonPackage.getURI(), "targetURI", null, 0, 1, Modifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getModifier_FeatureModifiers(), this.getFeatureModifier(), null, "featureModifiers", null, 0, -1, Modifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getModifier_Complete(), ecorePackage.getEBoolean(), "complete", null, 0, 1, Modifier.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ EOperation op = addEOperation(modifierEClass, null, "updateScenario", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, theScenarioPackage.getScenario(), "baseScenario", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ addEOperation(modifierEClass, null, "reset", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(nopModifierEClass, NOPModifier.class, "NOPModifier", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(rangeModifierEClass, RangeModifier.class, "RangeModifier", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(stemTimeNOPModifierEClass, STEMTimeNOPModifier.class, "STEMTimeNOPModifier", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(stemTimeRangeModifierEClass, STEMTimeRangeModifier.class, "STEMTimeRangeModifier", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getSTEMTimeRangeModifier_StartValue(), theModelPackage.getSTEMTime(), null, "startValue", null, 0, 1, STEMTimeRangeModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getSTEMTimeRangeModifier_EndValue(), theModelPackage.getSTEMTime(), null, "endValue", null, 0, 1, STEMTimeRangeModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getSTEMTimeRangeModifier_Increment(), ecorePackage.getELong(), "increment", null, 0, 1, STEMTimeRangeModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getSTEMTimeRangeModifier_NextValue(), theModelPackage.getSTEMTime(), null, "nextValue", null, 0, 1, STEMTimeRangeModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getSTEMTimeRangeModifier_OriginalValue(), theModelPackage.getSTEMTime(), null, "originalValue", null, 0, 1, STEMTimeRangeModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(stemTimeSequenceModifierEClass, STEMTimeSequenceModifier.class, "STEMTimeSequenceModifier", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getSTEMTimeSequenceModifier_Sequence(), theModelPackage.getSTEMTime(), null, "sequence", null, 0, -1, STEMTimeSequenceModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(sequenceModifierEClass, SequenceModifier.class, "SequenceModifier", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getSequenceModifier_SequenceSize(), ecorePackage.getEInt(), "sequenceSize", null, 0, 1, SequenceModifier.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getSequenceModifier_CurrentSequenceIndex(), ecorePackage.getEInt(), "currentSequenceIndex", "0", 0, 1, SequenceModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+ initEAttribute(getSequenceModifier_NextValue(), ecorePackage.getEJavaObject(), "nextValue", null, 0, 1, SequenceModifier.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getSequenceModifier_OriginalValue(), ecorePackage.getEJavaObject(), "originalValue", null, 0, 1, SequenceModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(stringNOPModifierEClass, StringNOPModifier.class, "StringNOPModifier", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(stringSequenceModifierEClass, StringSequenceModifier.class, "StringSequenceModifier", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getStringSequenceModifier_Sequence(), ecorePackage.getEString(), "sequence", null, 0, -1, StringSequenceModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(modifiableEClass, Modifiable.class, "Modifiable", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(singleValueModifierEClass, SingleValueModifier.class, "SingleValueModifier", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(doubleModifierEClass, DoubleModifier.class, "DoubleModifier", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getDoubleModifier_Value(), theEcorePackage.getEDouble(), "value", null, 0, 1, DoubleModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getDoubleModifier_OriginalValue(), theEcorePackage.getEDouble(), "originalValue", "-1E200", 0, 1, DoubleModifier.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+
+ initEClass(integerModifierEClass, IntegerModifier.class, "IntegerModifier", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getIntegerModifier_Value(), theEcorePackage.getEInt(), "value", null, 0, 1, IntegerModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getIntegerModifier_OriginalValue(), theEcorePackage.getEInt(), "originalValue", "-2000000000", 0, 1, IntegerModifier.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+
+ initEClass(longModifierEClass, LongModifier.class, "LongModifier", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getLongModifier_Value(), theEcorePackage.getELong(), "value", null, 0, 1, LongModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getLongModifier_OriginalValue(), theEcorePackage.getELong(), "originalValue", "-2000000000", 0, 1, LongModifier.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+
+ initEClass(stemTimeModifierEClass, STEMTimeModifier.class, "STEMTimeModifier", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getSTEMTimeModifier_Value(), theModelPackage.getSTEMTime(), null, "value", null, 0, 1, STEMTimeModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getSTEMTimeModifier_OriginalValue(), theModelPackage.getSTEMTime(), null, "originalValue", null, 0, 1, STEMTimeModifier.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} //ModifierPackageImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/NOPModifierImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/NOPModifierImpl.java
new file mode 100644
index 000000000..452d2ffad
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/NOPModifierImpl.java
@@ -0,0 +1,69 @@
+package org.eclipse.stem.core.modifier.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+import org.eclipse.stem.core.modifier.NOPModifier;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>NOP Modifier</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class NOPModifierImpl extends FeatureModifierImpl implements
+ NOPModifier {
+
+ /**
+ * @see org.eclipse.stem.core.modifier.FeatureModifier#reset()
+ */
+ public void reset() {
+ // Nothing to do
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ protected NOPModifierImpl() {
+ super();
+ }
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.FeatureModifierImpl#isComplete()
+ */
+ @Override
+ public boolean isComplete() {
+ return true;
+ }
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.FeatureModifierImpl#updateFeature(org.eclipse.emf.ecore.EObject)
+ */
+ @Override
+ public void updateFeature() {
+ // do nothing
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ModifierPackage.Literals.NOP_MODIFIER;
+ }
+
+} // NOPModifierImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/RangeModifierImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/RangeModifierImpl.java
new file mode 100644
index 000000000..03471f85d
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/RangeModifierImpl.java
@@ -0,0 +1,73 @@
+package org.eclipse.stem.core.modifier.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+import org.eclipse.stem.core.modifier.RangeModifier;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Range Modifier</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class RangeModifierImpl extends FeatureModifierImpl implements RangeModifier {
+
+
+ /**
+ * If <code>true</code> then the modifier has completed
+ * @see DoubleRangeModifierImpl#getNextValue()
+ */
+ protected boolean complete = false;
+
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected RangeModifierImpl() {
+ super();
+ }
+
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.FeatureModifierImpl#isComplete()
+ */
+ @Override
+ public boolean isComplete() {
+ return complete;
+ }
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.FeatureModifierImpl#reset()
+ */
+ @Override
+ public void reset() {
+ complete = false;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ModifierPackage.Literals.RANGE_MODIFIER;
+ }
+
+} //RangeModifierImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/STEMTimeModifierImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/STEMTimeModifierImpl.java
new file mode 100644
index 000000000..02e7c36a0
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/STEMTimeModifierImpl.java
@@ -0,0 +1,254 @@
+package org.eclipse.stem.core.modifier.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2009 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+import org.eclipse.stem.core.modifier.STEMTimeModifier;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>STEM Time Modifier</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.STEMTimeModifierImpl#getValue <em>Value</em>}</li>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.STEMTimeModifierImpl#getOriginalValue <em>Original Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class STEMTimeModifierImpl extends SingleValueModifierImpl implements STEMTimeModifier {
+ /**
+ * The cached value of the '{@link #getValue() <em>Value</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected STEMTime value;
+
+ /**
+ * The cached value of the '{@link #getOriginalValue() <em>Original Value</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOriginalValue()
+ * @generated
+ * @ordered
+ */
+ protected STEMTime originalValue;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected STEMTimeModifierImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ModifierPackage.Literals.STEM_TIME_MODIFIER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public STEMTime getValue() {
+ if (value != null && value.eIsProxy()) {
+ InternalEObject oldValue = (InternalEObject)value;
+ value = (STEMTime)eResolveProxy(oldValue);
+ if (value != oldValue) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, ModifierPackage.STEM_TIME_MODIFIER__VALUE, oldValue, value));
+ }
+ }
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public STEMTime basicGetValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValue(STEMTime newValue) {
+ STEMTime oldValue = value;
+ value = newValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModifierPackage.STEM_TIME_MODIFIER__VALUE, oldValue, value));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public STEMTime getOriginalValue() {
+ if (originalValue != null && originalValue.eIsProxy()) {
+ InternalEObject oldOriginalValue = (InternalEObject)originalValue;
+ originalValue = (STEMTime)eResolveProxy(oldOriginalValue);
+ if (originalValue != oldOriginalValue) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, ModifierPackage.STEM_TIME_MODIFIER__ORIGINAL_VALUE, oldOriginalValue, originalValue));
+ }
+ }
+ return originalValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public STEMTime basicGetOriginalValue() {
+ return originalValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setOriginalValue(STEMTime newOriginalValue) {
+ STEMTime oldOriginalValue = originalValue;
+ originalValue = newOriginalValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModifierPackage.STEM_TIME_MODIFIER__ORIGINAL_VALUE, oldOriginalValue, originalValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ModifierPackage.STEM_TIME_MODIFIER__VALUE:
+ if (resolve) return getValue();
+ return basicGetValue();
+ case ModifierPackage.STEM_TIME_MODIFIER__ORIGINAL_VALUE:
+ if (resolve) return getOriginalValue();
+ return basicGetOriginalValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ModifierPackage.STEM_TIME_MODIFIER__VALUE:
+ setValue((STEMTime)newValue);
+ return;
+ case ModifierPackage.STEM_TIME_MODIFIER__ORIGINAL_VALUE:
+ setOriginalValue((STEMTime)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ModifierPackage.STEM_TIME_MODIFIER__VALUE:
+ setValue((STEMTime)null);
+ return;
+ case ModifierPackage.STEM_TIME_MODIFIER__ORIGINAL_VALUE:
+ setOriginalValue((STEMTime)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ @SuppressWarnings("boxing")
+ @Override
+ public void updateFeature() {
+ // Original value captured yet?
+ if (!eIsSet(ModifierPackage.DOUBLE_MODIFIER__ORIGINAL_VALUE)) {
+ // No
+ setOriginalValue((STEMTime)getTarget().eGet(getEStructuralFeature()));
+ } // if
+ getTarget().eSet(getEStructuralFeature(), getValue());
+ complete = true;
+ } // updateFeature
+
+
+ /**
+ *reset
+ */
+ @Override
+ public void reset() {
+ complete = false;
+ getTarget().eSet(getEStructuralFeature(), getOriginalValue());
+ setOriginalValue(null); // To make sure we capture any new value next time simulation is run
+ }
+
+ private boolean complete = false;
+ /**
+ * isComplete
+ */
+ @Override
+ public boolean isComplete() {
+ return complete;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ModifierPackage.STEM_TIME_MODIFIER__VALUE:
+ return value != null;
+ case ModifierPackage.STEM_TIME_MODIFIER__ORIGINAL_VALUE:
+ return originalValue != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //STEMTimeModifierImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/STEMTimeNOPModifierImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/STEMTimeNOPModifierImpl.java
new file mode 100644
index 000000000..2664bd441
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/STEMTimeNOPModifierImpl.java
@@ -0,0 +1,47 @@
+package org.eclipse.stem.core.modifier.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+import org.eclipse.stem.core.modifier.STEMTimeNOPModifier;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>STEM Time NOP Modifier</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class STEMTimeNOPModifierImpl extends NOPModifierImpl implements STEMTimeNOPModifier {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected STEMTimeNOPModifierImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ModifierPackage.Literals.STEM_TIME_NOP_MODIFIER;
+ }
+
+} // STEMTimeNOPModifierImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/STEMTimeRangeModifierImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/STEMTimeRangeModifierImpl.java
new file mode 100644
index 000000000..212729cf6
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/STEMTimeRangeModifierImpl.java
@@ -0,0 +1,445 @@
+package org.eclipse.stem.core.modifier.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+import org.eclipse.stem.core.modifier.STEMTimeRangeModifier;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>STEM Time Range Modifier</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.STEMTimeRangeModifierImpl#getStartValue <em>Start Value</em>}</li>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.STEMTimeRangeModifierImpl#getEndValue <em>End Value</em>}</li>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.STEMTimeRangeModifierImpl#getIncrement <em>Increment</em>}</li>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.STEMTimeRangeModifierImpl#getNextValue <em>Next Value</em>}</li>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.STEMTimeRangeModifierImpl#getOriginalValue <em>Original Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class STEMTimeRangeModifierImpl extends RangeModifierImpl implements
+ STEMTimeRangeModifier {
+ /**
+ * The cached value of the '{@link #getStartValue() <em>Start Value</em>}' reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getStartValue()
+ * @generated
+ * @ordered
+ */
+ protected STEMTime startValue;
+ /**
+ * The cached value of the '{@link #getEndValue() <em>End Value</em>}' reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getEndValue()
+ * @generated
+ * @ordered
+ */
+ protected STEMTime endValue;
+ /**
+ * The default value of the '{@link #getIncrement() <em>Increment</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getIncrement()
+ * @generated
+ * @ordered
+ */
+ protected static final long INCREMENT_EDEFAULT = 0L;
+ /**
+ * The cached value of the '{@link #getIncrement() <em>Increment</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getIncrement()
+ * @generated
+ * @ordered
+ */
+ protected long increment = INCREMENT_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getNextValue() <em>Next Value</em>}' reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getNextValue()
+ * @generated
+ * @ordered
+ */
+ protected STEMTime nextValue;
+
+ /**
+ * The cached value of the '{@link #getOriginalValue() <em>Original Value</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOriginalValue()
+ * @generated
+ * @ordered
+ */
+ protected STEMTime originalValue;
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ */
+ protected STEMTimeRangeModifierImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ModifierPackage.Literals.STEM_TIME_RANGE_MODIFIER;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public STEMTime getStartValue() {
+ if (startValue != null && startValue.eIsProxy()) {
+ InternalEObject oldStartValue = (InternalEObject)startValue;
+ startValue = (STEMTime)eResolveProxy(oldStartValue);
+ if (startValue != oldStartValue) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, ModifierPackage.STEM_TIME_RANGE_MODIFIER__START_VALUE, oldStartValue, startValue));
+ }
+ }
+ return startValue;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public STEMTime basicGetStartValue() {
+ return startValue;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setStartValue(STEMTime newStartValue) {
+ STEMTime oldStartValue = startValue;
+ startValue = newStartValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModifierPackage.STEM_TIME_RANGE_MODIFIER__START_VALUE, oldStartValue, startValue));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public STEMTime getEndValue() {
+ if (endValue != null && endValue.eIsProxy()) {
+ InternalEObject oldEndValue = (InternalEObject)endValue;
+ endValue = (STEMTime)eResolveProxy(oldEndValue);
+ if (endValue != oldEndValue) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, ModifierPackage.STEM_TIME_RANGE_MODIFIER__END_VALUE, oldEndValue, endValue));
+ }
+ }
+ return endValue;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public STEMTime basicGetEndValue() {
+ return endValue;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setEndValue(STEMTime newEndValue) {
+ STEMTime oldEndValue = endValue;
+ endValue = newEndValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModifierPackage.STEM_TIME_RANGE_MODIFIER__END_VALUE, oldEndValue, endValue));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public long getIncrement() {
+ return increment;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setIncrement(long newIncrement) {
+ long oldIncrement = increment;
+ increment = newIncrement;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModifierPackage.STEM_TIME_RANGE_MODIFIER__INCREMENT, oldIncrement, increment));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ModifierPackage.STEM_TIME_RANGE_MODIFIER__START_VALUE:
+ if (resolve) return getStartValue();
+ return basicGetStartValue();
+ case ModifierPackage.STEM_TIME_RANGE_MODIFIER__END_VALUE:
+ if (resolve) return getEndValue();
+ return basicGetEndValue();
+ case ModifierPackage.STEM_TIME_RANGE_MODIFIER__INCREMENT:
+ return getIncrement();
+ case ModifierPackage.STEM_TIME_RANGE_MODIFIER__NEXT_VALUE:
+ if (resolve) return getNextValue();
+ return basicGetNextValue();
+ case ModifierPackage.STEM_TIME_RANGE_MODIFIER__ORIGINAL_VALUE:
+ if (resolve) return getOriginalValue();
+ return basicGetOriginalValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ModifierPackage.STEM_TIME_RANGE_MODIFIER__START_VALUE:
+ setStartValue((STEMTime)newValue);
+ return;
+ case ModifierPackage.STEM_TIME_RANGE_MODIFIER__END_VALUE:
+ setEndValue((STEMTime)newValue);
+ return;
+ case ModifierPackage.STEM_TIME_RANGE_MODIFIER__INCREMENT:
+ setIncrement((Long)newValue);
+ return;
+ case ModifierPackage.STEM_TIME_RANGE_MODIFIER__NEXT_VALUE:
+ setNextValue((STEMTime)newValue);
+ return;
+ case ModifierPackage.STEM_TIME_RANGE_MODIFIER__ORIGINAL_VALUE:
+ setOriginalValue((STEMTime)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ModifierPackage.STEM_TIME_RANGE_MODIFIER__START_VALUE:
+ setStartValue((STEMTime)null);
+ return;
+ case ModifierPackage.STEM_TIME_RANGE_MODIFIER__END_VALUE:
+ setEndValue((STEMTime)null);
+ return;
+ case ModifierPackage.STEM_TIME_RANGE_MODIFIER__INCREMENT:
+ setIncrement(INCREMENT_EDEFAULT);
+ return;
+ case ModifierPackage.STEM_TIME_RANGE_MODIFIER__NEXT_VALUE:
+ setNextValue((STEMTime)null);
+ return;
+ case ModifierPackage.STEM_TIME_RANGE_MODIFIER__ORIGINAL_VALUE:
+ setOriginalValue((STEMTime)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ModifierPackage.STEM_TIME_RANGE_MODIFIER__START_VALUE:
+ return startValue != null;
+ case ModifierPackage.STEM_TIME_RANGE_MODIFIER__END_VALUE:
+ return endValue != null;
+ case ModifierPackage.STEM_TIME_RANGE_MODIFIER__INCREMENT:
+ return increment != INCREMENT_EDEFAULT;
+ case ModifierPackage.STEM_TIME_RANGE_MODIFIER__NEXT_VALUE:
+ return nextValue != null;
+ case ModifierPackage.STEM_TIME_RANGE_MODIFIER__ORIGINAL_VALUE:
+ return originalValue != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (increment: "); //$NON-NLS-1$
+ result.append(increment);
+ result.append(')');
+ return result.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public STEMTime getNextValue() {
+ // Unset?
+ if (!eIsSet(ModifierPackage.STEM_TIME_RANGE_MODIFIER__NEXT_VALUE)) {
+ // Yes
+ nextValue = startValue;
+ } // if
+
+ final STEMTime retValue = nextValue;
+ complete = retValue.valueEquals(endValue);
+
+ // Still incrementing?
+ if (!complete) {
+ // Yes
+ final STEMTime temp = ((STEMTime) EcoreUtil.copy(retValue))
+ .addIncrement(increment);
+ // Would the new currentValue be equal or "past" the endValue?
+ if (temp.getTime().before(endValue.getTime())) {
+ // No
+ nextValue = temp;
+ } // if
+ else {
+ // Yes
+ nextValue = endValue;
+ } // else
+ } // if
+ currentValueText = retValue.toString();
+ return retValue;
+
+ } // getNextValue
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public STEMTime basicGetNextValue() {
+ return nextValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setNextValue(STEMTime newNextValue) {
+ STEMTime oldNextValue = nextValue;
+ nextValue = newNextValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModifierPackage.STEM_TIME_RANGE_MODIFIER__NEXT_VALUE, oldNextValue, nextValue));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public STEMTime getOriginalValue() {
+ if (originalValue != null && originalValue.eIsProxy()) {
+ InternalEObject oldOriginalValue = (InternalEObject)originalValue;
+ originalValue = (STEMTime)eResolveProxy(oldOriginalValue);
+ if (originalValue != oldOriginalValue) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, ModifierPackage.STEM_TIME_RANGE_MODIFIER__ORIGINAL_VALUE, oldOriginalValue, originalValue));
+ }
+ }
+ return originalValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public STEMTime basicGetOriginalValue() {
+ return originalValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setOriginalValue(STEMTime newOriginalValue) {
+ STEMTime oldOriginalValue = originalValue;
+ originalValue = newOriginalValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModifierPackage.STEM_TIME_RANGE_MODIFIER__ORIGINAL_VALUE, oldOriginalValue, originalValue));
+ }
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.FeatureModifierImpl#updateFeature()
+ */
+ @Override
+ public void updateFeature() {
+ // Original value captured yet?
+ if (!eIsSet(ModifierPackage.INTEGER_RANGE_MODIFIER__ORIGINAL_VALUE)) {
+ // No
+ setOriginalValue((STEMTime)getTarget().eGet(getEStructuralFeature()));
+ } // if
+ getTarget().eSet(getEStructuralFeature(), getNextValue());
+ }
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.RangeModifierImpl#reset()
+ */
+ @Override
+ public void reset() {
+ super.reset();
+ eUnset(ModifierPackage.STEM_TIME_RANGE_MODIFIER__NEXT_VALUE);
+ getTarget().eSet(getEStructuralFeature(), getOriginalValue());
+ setOriginalValue(null); // To make sure we capture any new value next time simulation is run
+ }
+
+ /**
+ * @see org.eclipse.stem.core.common.SanityChecker#sane()
+ */
+ @Override
+ public boolean sane() {
+ boolean retValue = super.sane();
+ assert retValue;
+
+ retValue = retValue
+ && !((getEndValue()).getTime().before((getStartValue()).getTime()));
+ assert retValue;
+
+ retValue = retValue && getIncrement() > 0;
+ assert retValue;
+
+ return retValue;
+ } // sane
+
+} // STEMTimeRangeModifierImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/STEMTimeSequenceModifierImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/STEMTimeSequenceModifierImpl.java
new file mode 100644
index 000000000..b9b25fb4d
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/STEMTimeSequenceModifierImpl.java
@@ -0,0 +1,179 @@
+package org.eclipse.stem.core.modifier.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+import org.eclipse.stem.core.modifier.STEMTimeSequenceModifier;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>STEM Time Sequence Modifier</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.STEMTimeSequenceModifierImpl#getSequence <em>Sequence</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class STEMTimeSequenceModifierImpl extends SequenceModifierImpl implements STEMTimeSequenceModifier {
+ /**
+ * The cached value of the '{@link #getSequence() <em>Sequence</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSequence()
+ * @generated
+ * @ordered
+ */
+ protected EList<STEMTime> sequence;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected STEMTimeSequenceModifierImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ModifierPackage.Literals.STEM_TIME_SEQUENCE_MODIFIER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<STEMTime> getSequence() {
+ if (sequence == null) {
+ sequence = new EObjectResolvingEList<STEMTime>(STEMTime.class, this, ModifierPackage.STEM_TIME_SEQUENCE_MODIFIER__SEQUENCE);
+ }
+ return sequence;
+ }
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.SequenceModifierImpl#getNextValue()
+ */
+ @Override
+ public Object getNextValue() {
+ int index = getCurrentSequenceIndex();
+ final Object retValue = getSequence().get(index++);
+ setCurrentSequenceIndex(index);
+ currentValueText = retValue.toString();
+ return retValue;
+ } // getNextValue
+
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.SequenceModifierImpl#getSequenceSize()
+ */
+ @Override
+ public int getSequenceSize() {
+ return getSequence().size();
+ } // getSequenceSize
+
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.FeatureModifierImpl#updateFeature()
+ */
+ @Override
+ public void updateFeature() {
+ super.updateFeature();
+ getTarget().eSet(getEStructuralFeature(), getNextValue());
+ }
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.FeatureModifierImpl#reset()
+ */
+ @Override
+ public void reset() {
+ super.reset();
+ getTarget().eSet(getEStructuralFeature(), getOriginalValue());
+ setOriginalValue(ORIGINAL_VALUE_EDEFAULT); // To make sure we capture any new value next time simulation is run
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ModifierPackage.STEM_TIME_SEQUENCE_MODIFIER__SEQUENCE:
+ return getSequence();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ModifierPackage.STEM_TIME_SEQUENCE_MODIFIER__SEQUENCE:
+ getSequence().clear();
+ getSequence().addAll((Collection<? extends STEMTime>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ModifierPackage.STEM_TIME_SEQUENCE_MODIFIER__SEQUENCE:
+ getSequence().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ModifierPackage.STEM_TIME_SEQUENCE_MODIFIER__SEQUENCE:
+ return sequence != null && !sequence.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //STEMTimeSequenceModifierImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/SequenceModifierImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/SequenceModifierImpl.java
new file mode 100644
index 000000000..9b35af55f
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/SequenceModifierImpl.java
@@ -0,0 +1,309 @@
+package org.eclipse.stem.core.modifier.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+import org.eclipse.stem.core.modifier.SequenceModifier;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Sequence Modifier</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.SequenceModifierImpl#getSequenceSize <em>Sequence Size</em>}</li>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.SequenceModifierImpl#getCurrentSequenceIndex <em>Current Sequence Index</em>}</li>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.SequenceModifierImpl#getNextValue <em>Next Value</em>}</li>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.SequenceModifierImpl#getOriginalValue <em>Original Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class SequenceModifierImpl extends FeatureModifierImpl implements SequenceModifier {
+ /**
+ * The default value of the '{@link #getSequenceSize() <em>Sequence Size</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSequenceSize()
+ * @generated
+ * @ordered
+ */
+ protected static final int SEQUENCE_SIZE_EDEFAULT = 0;
+
+ /**
+ * The default value of the '{@link #getCurrentSequenceIndex() <em>Current Sequence Index</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCurrentSequenceIndex()
+ * @generated
+ * @ordered
+ */
+ protected static final int CURRENT_SEQUENCE_INDEX_EDEFAULT = 0;
+ /**
+ * The cached value of the '{@link #getCurrentSequenceIndex() <em>Current Sequence Index</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCurrentSequenceIndex()
+ * @generated
+ * @ordered
+ */
+ protected int currentSequenceIndex = CURRENT_SEQUENCE_INDEX_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getNextValue() <em>Next Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNextValue()
+ * @generated
+ * @ordered
+ */
+ protected static final Object NEXT_VALUE_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getOriginalValue() <em>Original Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOriginalValue()
+ * @generated
+ * @ordered
+ */
+ protected static final Object ORIGINAL_VALUE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getOriginalValue() <em>Original Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOriginalValue()
+ * @generated
+ * @ordered
+ */
+ protected Object originalValue = ORIGINAL_VALUE_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SequenceModifierImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ModifierPackage.Literals.SEQUENCE_MODIFIER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getSequenceSize() {
+ // TODO: implement this method to return the 'Sequence Size' attribute
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getCurrentSequenceIndex() {
+ return currentSequenceIndex;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setCurrentSequenceIndex(int newCurrentSequenceIndex) {
+ int oldCurrentSequenceIndex = currentSequenceIndex;
+ currentSequenceIndex = newCurrentSequenceIndex;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModifierPackage.SEQUENCE_MODIFIER__CURRENT_SEQUENCE_INDEX, oldCurrentSequenceIndex, currentSequenceIndex));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ abstract public Object getNextValue();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isSetNextValue() {
+ // TODO: implement this method to return whether the 'Next Value' attribute is set
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object getOriginalValue() {
+ return originalValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setOriginalValue(Object newOriginalValue) {
+ Object oldOriginalValue = originalValue;
+ originalValue = newOriginalValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ModifierPackage.SEQUENCE_MODIFIER__ORIGINAL_VALUE, oldOriginalValue, originalValue));
+ }
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.FeatureModifierImpl#isComplete()
+ */
+ @Override
+ public boolean isComplete() {
+ return getCurrentSequenceIndex() >= getSequenceSize();
+ } // isComplete
+
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.FeatureModifierImpl#reset()
+ */
+ @Override
+ public void reset() {
+ setCurrentSequenceIndex(CURRENT_SEQUENCE_INDEX_EDEFAULT);
+ }
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.FeatureModifierImpl#updateFeature()
+ */
+ @Override
+ public void updateFeature() {
+ // Capture the original value?
+ if (getCurrentSequenceIndex() == CURRENT_SEQUENCE_INDEX_EDEFAULT) {
+ // Yes
+ setOriginalValue(getTarget().eGet(getEStructuralFeature()));
+ } // if
+ } // updateFeature
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ModifierPackage.SEQUENCE_MODIFIER__SEQUENCE_SIZE:
+ return getSequenceSize();
+ case ModifierPackage.SEQUENCE_MODIFIER__CURRENT_SEQUENCE_INDEX:
+ return getCurrentSequenceIndex();
+ case ModifierPackage.SEQUENCE_MODIFIER__NEXT_VALUE:
+ return getNextValue();
+ case ModifierPackage.SEQUENCE_MODIFIER__ORIGINAL_VALUE:
+ return getOriginalValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ModifierPackage.SEQUENCE_MODIFIER__CURRENT_SEQUENCE_INDEX:
+ setCurrentSequenceIndex((Integer)newValue);
+ return;
+ case ModifierPackage.SEQUENCE_MODIFIER__ORIGINAL_VALUE:
+ setOriginalValue(newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ModifierPackage.SEQUENCE_MODIFIER__CURRENT_SEQUENCE_INDEX:
+ setCurrentSequenceIndex(CURRENT_SEQUENCE_INDEX_EDEFAULT);
+ return;
+ case ModifierPackage.SEQUENCE_MODIFIER__ORIGINAL_VALUE:
+ setOriginalValue(ORIGINAL_VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ModifierPackage.SEQUENCE_MODIFIER__SEQUENCE_SIZE:
+ return getSequenceSize() != SEQUENCE_SIZE_EDEFAULT;
+ case ModifierPackage.SEQUENCE_MODIFIER__CURRENT_SEQUENCE_INDEX:
+ return currentSequenceIndex != CURRENT_SEQUENCE_INDEX_EDEFAULT;
+ case ModifierPackage.SEQUENCE_MODIFIER__NEXT_VALUE:
+ return isSetNextValue();
+ case ModifierPackage.SEQUENCE_MODIFIER__ORIGINAL_VALUE:
+ return ORIGINAL_VALUE_EDEFAULT == null ? originalValue != null : !ORIGINAL_VALUE_EDEFAULT.equals(originalValue);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (currentSequenceIndex: "); //$NON-NLS-1$
+ result.append(currentSequenceIndex);
+ result.append(", originalValue: "); //$NON-NLS-1$
+ result.append(originalValue);
+ result.append(')');
+ return result.toString();
+ }
+
+} //SequenceModifierImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/SingleValueModifierImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/SingleValueModifierImpl.java
new file mode 100644
index 000000000..cd1550012
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/SingleValueModifierImpl.java
@@ -0,0 +1,47 @@
+package org.eclipse.stem.core.modifier.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2009 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+import org.eclipse.stem.core.modifier.SingleValueModifier;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Single Value Modifier</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class SingleValueModifierImpl extends FeatureModifierImpl implements SingleValueModifier {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SingleValueModifierImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ModifierPackage.Literals.SINGLE_VALUE_MODIFIER;
+ }
+
+} //SingleValueModifierImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/StringNOPModifierImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/StringNOPModifierImpl.java
new file mode 100644
index 000000000..43f70b0bb
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/StringNOPModifierImpl.java
@@ -0,0 +1,47 @@
+package org.eclipse.stem.core.modifier.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+import org.eclipse.stem.core.modifier.StringNOPModifier;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>String NOP Modifier</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class StringNOPModifierImpl extends NOPModifierImpl implements StringNOPModifier {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StringNOPModifierImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ModifierPackage.Literals.STRING_NOP_MODIFIER;
+ }
+
+} //StringNOPModifierImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/StringSequenceModifierImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/StringSequenceModifierImpl.java
new file mode 100644
index 000000000..2d4868774
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/impl/StringSequenceModifierImpl.java
@@ -0,0 +1,194 @@
+package org.eclipse.stem.core.modifier.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+import org.eclipse.stem.core.modifier.StringSequenceModifier;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>String Sequence Modifier</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.modifier.impl.StringSequenceModifierImpl#getSequence <em>Sequence</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StringSequenceModifierImpl extends SequenceModifierImpl implements StringSequenceModifier {
+ /**
+ * The cached value of the '{@link #getSequence() <em>Sequence</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSequence()
+ * @generated
+ * @ordered
+ */
+ protected EList<String> sequence;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StringSequenceModifierImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ModifierPackage.Literals.STRING_SEQUENCE_MODIFIER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<String> getSequence() {
+ if (sequence == null) {
+ sequence = new EDataTypeUniqueEList<String>(String.class, this, ModifierPackage.STRING_SEQUENCE_MODIFIER__SEQUENCE);
+ }
+ return sequence;
+ }
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.SequenceModifierImpl#getNextValue()
+ */
+ @Override
+ public Object getNextValue() {
+ int index = getCurrentSequenceIndex();
+ final Object retValue = getSequence().get(index++);
+ setCurrentSequenceIndex(index);
+ currentValueText = retValue.toString();
+ return retValue;
+ } // getNextValue
+
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.SequenceModifierImpl#getSequenceSize()
+ */
+ @Override
+ public int getSequenceSize() {
+ return getSequence().size();
+ } // getSequenceSize
+
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.FeatureModifierImpl#updateFeature()
+ */
+ @Override
+ public void updateFeature() {
+ super.updateFeature();
+ getTarget().eSet(getEStructuralFeature(), getNextValue());
+ }
+
+ /**
+ * @see org.eclipse.stem.core.modifier.impl.FeatureModifierImpl#reset()
+ */
+ @Override
+ public void reset() {
+ super.reset();
+ getTarget().eSet(getEStructuralFeature(), getOriginalValue());
+ setOriginalValue(ORIGINAL_VALUE_EDEFAULT); // To make sure we capture any new value next time simulation is run
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ModifierPackage.STRING_SEQUENCE_MODIFIER__SEQUENCE:
+ return getSequence();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ModifierPackage.STRING_SEQUENCE_MODIFIER__SEQUENCE:
+ getSequence().clear();
+ getSequence().addAll((Collection<? extends String>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ModifierPackage.STRING_SEQUENCE_MODIFIER__SEQUENCE:
+ getSequence().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ModifierPackage.STRING_SEQUENCE_MODIFIER__SEQUENCE:
+ return sequence != null && !sequence.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (sequence: "); //$NON-NLS-1$
+ result.append(sequence);
+ result.append(')');
+ return result.toString();
+ }
+
+} //StringSequenceModifierImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/DoubleModifierItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/DoubleModifierItemProvider.java
new file mode 100644
index 000000000..031ea6f64
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/DoubleModifierItemProvider.java
@@ -0,0 +1,188 @@
+package org.eclipse.stem.core.modifier.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2009 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
+ *******************************************************************************/
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.modifier.DoubleModifier;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.modifier.DoubleModifier} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DoubleModifierItemProvider
+ extends SingleValueModifierItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DoubleModifierItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addValuePropertyDescriptor(object);
+ addOriginalValuePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Value feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addValuePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_DoubleModifier_value_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_DoubleModifier_value_feature", "_UI_DoubleModifier_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ModifierPackage.Literals.DOUBLE_MODIFIER__VALUE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Original Value feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addOriginalValuePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_DoubleModifier_originalValue_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_DoubleModifier_originalValue_feature", "_UI_DoubleModifier_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ModifierPackage.Literals.DOUBLE_MODIFIER__ORIGINAL_VALUE,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns DoubleModifier.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/customobj16/DoubleModifier.png")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getTextGen(Object object) {
+ String label = ((DoubleModifier)object).getFeatureName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_DoubleModifier_type") : //$NON-NLS-1$
+ getString("_UI_DoubleModifier_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((DoubleModifier)object).getFeatureName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_DoubleModifier_type") : //$NON-NLS-1$
+
+ label+" "+((DoubleModifier)object).getValue();
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(DoubleModifier.class)) {
+ case ModifierPackage.DOUBLE_MODIFIER__VALUE:
+ case ModifierPackage.DOUBLE_MODIFIER__ORIGINAL_VALUE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/DoubleNOPModifierItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/DoubleNOPModifierItemProvider.java
new file mode 100644
index 000000000..db4fc5eed
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/DoubleNOPModifierItemProvider.java
@@ -0,0 +1,106 @@
+package org.eclipse.stem.core.modifier.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.modifier.DoubleNOPModifier;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.modifier.DoubleNOPModifier} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DoubleNOPModifierItemProvider
+ extends NOPModifierItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DoubleNOPModifierItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((DoubleNOPModifier)object).getFeatureName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_DoubleNOPModifier_type") : //$NON-NLS-1$
+ getString("_UI_DoubleNOPModifier_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/DoubleRangeModifierItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/DoubleRangeModifierItemProvider.java
new file mode 100644
index 000000000..a88408881
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/DoubleRangeModifierItemProvider.java
@@ -0,0 +1,208 @@
+package org.eclipse.stem.core.modifier.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.modifier.DoubleRangeModifier;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.modifier.DoubleRangeModifier} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DoubleRangeModifierItemProvider
+ extends RangeModifierItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DoubleRangeModifierItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addStartValuePropertyDescriptor(object);
+ addEndValuePropertyDescriptor(object);
+ addIncrementPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+
+ /**
+ * This adds a property descriptor for the Start Value feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addStartValuePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_DoubleRangeModifier_startValue_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_DoubleRangeModifier_startValue_feature", "_UI_DoubleRangeModifier_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ModifierPackage.Literals.DOUBLE_RANGE_MODIFIER__START_VALUE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the End Value feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addEndValuePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_DoubleRangeModifier_endValue_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_DoubleRangeModifier_endValue_feature", "_UI_DoubleRangeModifier_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ModifierPackage.Literals.DOUBLE_RANGE_MODIFIER__END_VALUE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Increment feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addIncrementPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_DoubleRangeModifier_increment_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_DoubleRangeModifier_increment_feature", "_UI_DoubleRangeModifier_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ModifierPackage.Literals.DOUBLE_RANGE_MODIFIER__INCREMENT,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ final DoubleRangeModifier rm = (DoubleRangeModifier)object;
+ final StringBuilder sb = new StringBuilder(rm.getFeatureName());
+ sb.append(": ");
+ sb.append(rm.getStartValue());
+ sb.append(" to ");
+ sb.append(rm.getEndValue());
+ sb.append(" by ");
+ sb.append(rm.getIncrement());
+ return sb.toString();
+ } // getText
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getTextGen(Object object) {
+ String label = ((DoubleRangeModifier)object).getFeatureName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_DoubleRangeModifier_type") : //$NON-NLS-1$
+ getString("_UI_DoubleRangeModifier_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(DoubleRangeModifier.class)) {
+ case ModifierPackage.DOUBLE_RANGE_MODIFIER__START_VALUE:
+ case ModifierPackage.DOUBLE_RANGE_MODIFIER__END_VALUE:
+ case ModifierPackage.DOUBLE_RANGE_MODIFIER__INCREMENT:
+ case ModifierPackage.DOUBLE_RANGE_MODIFIER__NEXT_VALUE:
+ case ModifierPackage.DOUBLE_RANGE_MODIFIER__ORIGINAL_VALUE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/DoubleSequenceModifierItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/DoubleSequenceModifierItemProvider.java
new file mode 100644
index 000000000..034585a85
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/DoubleSequenceModifierItemProvider.java
@@ -0,0 +1,139 @@
+package org.eclipse.stem.core.modifier.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.modifier.DoubleSequenceModifier;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.modifier.DoubleSequenceModifier} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DoubleSequenceModifierItemProvider
+ extends SequenceModifierItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DoubleSequenceModifierItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addSequencePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Sequence feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addSequencePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_DoubleSequenceModifier_sequence_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_DoubleSequenceModifier_sequence_feature", "_UI_DoubleSequenceModifier_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ModifierPackage.Literals.DOUBLE_SEQUENCE_MODIFIER__SEQUENCE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((DoubleSequenceModifier)object).getFeatureName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_DoubleSequenceModifier_type") : //$NON-NLS-1$
+ getString("_UI_DoubleSequenceModifier_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(DoubleSequenceModifier.class)) {
+ case ModifierPackage.DOUBLE_SEQUENCE_MODIFIER__SEQUENCE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/FeatureModifierItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/FeatureModifierItemProvider.java
new file mode 100644
index 000000000..d37a5fbfd
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/FeatureModifierItemProvider.java
@@ -0,0 +1,178 @@
+package org.eclipse.stem.core.modifier.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.common.provider.CoreEditPlugin;
+import org.eclipse.stem.core.modifier.FeatureModifier;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.modifier.FeatureModifier} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FeatureModifierItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FeatureModifierItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addFeatureNamePropertyDescriptor(object);
+ addCompletePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Complete feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addCompletePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_FeatureModifier_complete_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_FeatureModifier_complete_feature", "_UI_FeatureModifier_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ModifierPackage.Literals.FEATURE_MODIFIER__COMPLETE,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Feature Name feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addFeatureNamePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_FeatureModifier_featureName_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_FeatureModifier_featureName_feature", "_UI_FeatureModifier_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ModifierPackage.Literals.FEATURE_MODIFIER__FEATURE_NAME,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((FeatureModifier)object).getFeatureName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_FeatureModifier_type") : //$NON-NLS-1$
+ getString("_UI_FeatureModifier_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(FeatureModifier.class)) {
+ case ModifierPackage.FEATURE_MODIFIER__FEATURE_NAME:
+ case ModifierPackage.FEATURE_MODIFIER__FEATURE_ID:
+ case ModifierPackage.FEATURE_MODIFIER__CURRENT_VALUE_TEXT:
+ case ModifierPackage.FEATURE_MODIFIER__COMPLETE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return CoreEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/IntegerModifierItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/IntegerModifierItemProvider.java
new file mode 100644
index 000000000..cc6bb7d0a
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/IntegerModifierItemProvider.java
@@ -0,0 +1,188 @@
+package org.eclipse.stem.core.modifier.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2009 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
+ *******************************************************************************/
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.modifier.IntegerModifier;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.modifier.IntegerModifier} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IntegerModifierItemProvider
+ extends SingleValueModifierItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IntegerModifierItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addValuePropertyDescriptor(object);
+ addOriginalValuePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Value feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addValuePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_IntegerModifier_value_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_IntegerModifier_value_feature", "_UI_IntegerModifier_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ModifierPackage.Literals.INTEGER_MODIFIER__VALUE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Original Value feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addOriginalValuePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_IntegerModifier_originalValue_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_IntegerModifier_originalValue_feature", "_UI_IntegerModifier_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ModifierPackage.Literals.INTEGER_MODIFIER__ORIGINAL_VALUE,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns IntegerModifier.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/customobj16/IntegerModifier.png")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getTextGen(Object object) {
+ String label = ((IntegerModifier)object).getFeatureName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_IntegerModifier_type") : //$NON-NLS-1$
+ getString("_UI_IntegerModifier_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((IntegerModifier)object).getFeatureName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_IntegerModifier_type") : //$NON-NLS-1$
+
+ label+" "+((IntegerModifier)object).getValue();
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(IntegerModifier.class)) {
+ case ModifierPackage.INTEGER_MODIFIER__VALUE:
+ case ModifierPackage.INTEGER_MODIFIER__ORIGINAL_VALUE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/IntegerNOPModifierItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/IntegerNOPModifierItemProvider.java
new file mode 100644
index 000000000..c6b1c2c01
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/IntegerNOPModifierItemProvider.java
@@ -0,0 +1,106 @@
+package org.eclipse.stem.core.modifier.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.modifier.IntegerNOPModifier;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.modifier.IntegerNOPModifier} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IntegerNOPModifierItemProvider
+ extends NOPModifierItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IntegerNOPModifierItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((IntegerNOPModifier)object).getFeatureName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_IntegerNOPModifier_type") : //$NON-NLS-1$
+ getString("_UI_IntegerNOPModifier_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/IntegerRangeModifierItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/IntegerRangeModifierItemProvider.java
new file mode 100644
index 000000000..2679f5ec3
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/IntegerRangeModifierItemProvider.java
@@ -0,0 +1,226 @@
+package org.eclipse.stem.core.modifier.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.modifier.IntegerRangeModifier;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.modifier.IntegerRangeModifier} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IntegerRangeModifierItemProvider
+ extends RangeModifierItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IntegerRangeModifierItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+// /**
+// * This returns the property descriptors for the adapted class.
+// * <!-- begin-user-doc -->
+// * <!-- end-user-doc -->
+// * @generated
+// */
+// @Override
+// public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+// if (itemPropertyDescriptors == null) {
+// super.getPropertyDescriptors(object);
+//
+// addStartValuePropertyDescriptor(object);
+// addEndValuePropertyDescriptor(object);
+// addIncrementPropertyDescriptor(object);
+// addNextValuePropertyDescriptor(object);
+// }
+// return itemPropertyDescriptors;
+// }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addStartValuePropertyDescriptor(object);
+ addEndValuePropertyDescriptor(object);
+ addIncrementPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+
+ /**
+ * This adds a property descriptor for the Start Value feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addStartValuePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_IntegerRangeModifier_startValue_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_IntegerRangeModifier_startValue_feature", "_UI_IntegerRangeModifier_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ModifierPackage.Literals.INTEGER_RANGE_MODIFIER__START_VALUE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the End Value feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addEndValuePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_IntegerRangeModifier_endValue_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_IntegerRangeModifier_endValue_feature", "_UI_IntegerRangeModifier_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ModifierPackage.Literals.INTEGER_RANGE_MODIFIER__END_VALUE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Increment feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addIncrementPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_IntegerRangeModifier_increment_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_IntegerRangeModifier_increment_feature", "_UI_IntegerRangeModifier_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ModifierPackage.Literals.INTEGER_RANGE_MODIFIER__INCREMENT,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ final IntegerRangeModifier rm = (IntegerRangeModifier)object;
+ final StringBuilder sb = new StringBuilder(rm.getFeatureName());
+ sb.append(": ");
+ sb.append(rm.getStartValue());
+ sb.append(" to ");
+ sb.append(rm.getEndValue());
+ sb.append(" by ");
+ sb.append(rm.getIncrement());
+ return sb.toString();
+ } // getText
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getTextGen(Object object) {
+ String label = ((IntegerRangeModifier)object).getFeatureName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_IntegerRangeModifier_type") : //$NON-NLS-1$
+ getString("_UI_IntegerRangeModifier_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(IntegerRangeModifier.class)) {
+ case ModifierPackage.INTEGER_RANGE_MODIFIER__START_VALUE:
+ case ModifierPackage.INTEGER_RANGE_MODIFIER__END_VALUE:
+ case ModifierPackage.INTEGER_RANGE_MODIFIER__INCREMENT:
+ case ModifierPackage.INTEGER_RANGE_MODIFIER__NEXT_VALUE:
+ case ModifierPackage.INTEGER_RANGE_MODIFIER__ORIGINAL_VALUE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/IntegerSequenceModifierItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/IntegerSequenceModifierItemProvider.java
new file mode 100644
index 000000000..398743029
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/IntegerSequenceModifierItemProvider.java
@@ -0,0 +1,139 @@
+package org.eclipse.stem.core.modifier.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.modifier.IntegerSequenceModifier;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.modifier.IntegerSequenceModifier} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IntegerSequenceModifierItemProvider
+ extends SequenceModifierItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IntegerSequenceModifierItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addSequencePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Sequence feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addSequencePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_IntegerSequenceModifier_sequence_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_IntegerSequenceModifier_sequence_feature", "_UI_IntegerSequenceModifier_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ModifierPackage.Literals.INTEGER_SEQUENCE_MODIFIER__SEQUENCE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((IntegerSequenceModifier)object).getFeatureName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_IntegerSequenceModifier_type") : //$NON-NLS-1$
+ getString("_UI_IntegerSequenceModifier_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(IntegerSequenceModifier.class)) {
+ case ModifierPackage.INTEGER_SEQUENCE_MODIFIER__SEQUENCE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/LongModifierItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/LongModifierItemProvider.java
new file mode 100644
index 000000000..5bc02875b
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/LongModifierItemProvider.java
@@ -0,0 +1,188 @@
+package org.eclipse.stem.core.modifier.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2009 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
+ *******************************************************************************/
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.modifier.LongModifier;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.modifier.LongModifier} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LongModifierItemProvider
+ extends SingleValueModifierItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LongModifierItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addValuePropertyDescriptor(object);
+ addOriginalValuePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Value feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addValuePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_LongModifier_value_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_LongModifier_value_feature", "_UI_LongModifier_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ModifierPackage.Literals.LONG_MODIFIER__VALUE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Original Value feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addOriginalValuePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_LongModifier_originalValue_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_LongModifier_originalValue_feature", "_UI_LongModifier_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ModifierPackage.Literals.LONG_MODIFIER__ORIGINAL_VALUE,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns LongModifier.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/customobj16/LongModifier.png")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+
+ public String getTextGen(Object object) {
+ String label = ((LongModifier)object).getFeatureName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_LongModifier_type") : //$NON-NLS-1$
+ getString("_UI_LongModifier_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((LongModifier)object).getFeatureName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_LongModifier_type") : //$NON-NLS-1$
+
+ label+" "+((LongModifier)object).getValue();
+ }
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(LongModifier.class)) {
+ case ModifierPackage.LONG_MODIFIER__VALUE:
+ case ModifierPackage.LONG_MODIFIER__ORIGINAL_VALUE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/LongNOPModifierItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/LongNOPModifierItemProvider.java
new file mode 100644
index 000000000..258df307e
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/LongNOPModifierItemProvider.java
@@ -0,0 +1,106 @@
+package org.eclipse.stem.core.modifier.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.modifier.LongNOPModifier;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.modifier.LongNOPModifier} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LongNOPModifierItemProvider
+ extends NOPModifierItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LongNOPModifierItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((LongNOPModifier)object).getFeatureName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_LongNOPModifier_type") : //$NON-NLS-1$
+ getString("_UI_LongNOPModifier_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/LongRangeModifierItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/LongRangeModifierItemProvider.java
new file mode 100644
index 000000000..df07837d7
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/LongRangeModifierItemProvider.java
@@ -0,0 +1,226 @@
+package org.eclipse.stem.core.modifier.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.modifier.LongRangeModifier;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.modifier.LongRangeModifier} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LongRangeModifierItemProvider
+ extends RangeModifierItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LongRangeModifierItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+// /**
+// * This returns the property descriptors for the adapted class.
+// * <!-- begin-user-doc -->
+// * <!-- end-user-doc -->
+// * @generated
+// */
+// @Override
+// public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+// if (itemPropertyDescriptors == null) {
+// super.getPropertyDescriptors(object);
+//
+// addStartValuePropertyDescriptor(object);
+// addEndValuePropertyDescriptor(object);
+// addIncrementPropertyDescriptor(object);
+// addNextValuePropertyDescriptor(object);
+// }
+// return itemPropertyDescriptors;
+// }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addStartValuePropertyDescriptor(object);
+ addEndValuePropertyDescriptor(object);
+ addIncrementPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Start Value feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addStartValuePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_LongRangeModifier_startValue_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_LongRangeModifier_startValue_feature", "_UI_LongRangeModifier_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ModifierPackage.Literals.LONG_RANGE_MODIFIER__START_VALUE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the End Value feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addEndValuePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_LongRangeModifier_endValue_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_LongRangeModifier_endValue_feature", "_UI_LongRangeModifier_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ModifierPackage.Literals.LONG_RANGE_MODIFIER__END_VALUE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Increment feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addIncrementPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_LongRangeModifier_increment_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_LongRangeModifier_increment_feature", "_UI_LongRangeModifier_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ModifierPackage.Literals.LONG_RANGE_MODIFIER__INCREMENT,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ final LongRangeModifier rm = (LongRangeModifier)object;
+ final StringBuilder sb = new StringBuilder(rm.getFeatureName());
+ sb.append(": ");
+ sb.append(rm.getStartValue());
+ sb.append(" to ");
+ sb.append(rm.getEndValue());
+ sb.append(" by ");
+ sb.append(rm.getIncrement());
+ return sb.toString();
+ } // getText
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getTextGen(Object object) {
+ String label = ((LongRangeModifier)object).getFeatureName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_LongRangeModifier_type") : //$NON-NLS-1$
+ getString("_UI_LongRangeModifier_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(LongRangeModifier.class)) {
+ case ModifierPackage.LONG_RANGE_MODIFIER__START_VALUE:
+ case ModifierPackage.LONG_RANGE_MODIFIER__END_VALUE:
+ case ModifierPackage.LONG_RANGE_MODIFIER__INCREMENT:
+ case ModifierPackage.LONG_RANGE_MODIFIER__NEXT_VALUE:
+ case ModifierPackage.LONG_RANGE_MODIFIER__ORIGINAL_VALUE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/LongSequenceModifierItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/LongSequenceModifierItemProvider.java
new file mode 100644
index 000000000..5fa4777a2
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/LongSequenceModifierItemProvider.java
@@ -0,0 +1,139 @@
+package org.eclipse.stem.core.modifier.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.modifier.LongSequenceModifier;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.modifier.LongSequenceModifier} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LongSequenceModifierItemProvider
+ extends SequenceModifierItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public LongSequenceModifierItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addSequencePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Sequence feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addSequencePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_LongSequenceModifier_sequence_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_LongSequenceModifier_sequence_feature", "_UI_LongSequenceModifier_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ModifierPackage.Literals.LONG_SEQUENCE_MODIFIER__SEQUENCE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((LongSequenceModifier)object).getFeatureName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_LongSequenceModifier_type") : //$NON-NLS-1$
+ getString("_UI_LongSequenceModifier_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(LongSequenceModifier.class)) {
+ case ModifierPackage.LONG_SEQUENCE_MODIFIER__SEQUENCE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/ModifierItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/ModifierItemProvider.java
new file mode 100644
index 000000000..9f3979ab3
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/ModifierItemProvider.java
@@ -0,0 +1,229 @@
+package org.eclipse.stem.core.modifier.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.common.provider.CoreEditPlugin;
+import org.eclipse.stem.core.model.provider.DecoratorItemProvider;
+import org.eclipse.stem.core.modifier.Modifier;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+
+/**
+ * This is the item provider adapter for a
+ * {@link org.eclipse.stem.core.modifier.Modifier} object. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ModifierItemProvider extends DecoratorItemProvider implements
+ IEditingDomainItemProvider, IStructuredItemContentProvider,
+ ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ModifierItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addTargetURIPropertyDescriptor(object);
+ addCompletePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Target URI feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void addTargetURIPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Modifier_targetURI_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Modifier_targetURI_feature", "_UI_Modifier_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ModifierPackage.Literals.MODIFIER__TARGET_URI,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Complete feature. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected void addCompletePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Modifier_complete_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Modifier_complete_feature", "_UI_Modifier_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ModifierPackage.Literals.MODIFIER__COMPLETE,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(
+ Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(ModifierPackage.Literals.MODIFIER__FEATURE_MODIFIERS);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns Modifier.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/customobj16/Modifier"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ return super.getText(object);
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getTextGen(Object object) {
+ URI labelValue = ((Modifier)object).getURI();
+ String label = labelValue == null ? null : labelValue.toString();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Modifier_type") : //$NON-NLS-1$
+ getString("_UI_Modifier_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(Modifier.class)) {
+ case ModifierPackage.MODIFIER__COMPLETE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case ModifierPackage.MODIFIER__FEATURE_MODIFIERS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s
+ * describing the children that can be created under this object. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(
+ Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return CoreEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/ModifierItemProviderAdapterFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/ModifierItemProviderAdapterFactory.java
new file mode 100644
index 000000000..84a85eae3
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/ModifierItemProviderAdapterFactory.java
@@ -0,0 +1,663 @@
+package org.eclipse.stem.core.modifier.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.modifier.util.ModifierAdapterFactory;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+@SuppressWarnings("all")
+public class ModifierItemProviderAdapterFactory extends ModifierAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+ /**
+ * This keeps track of the root adapter factory that delegates to this adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ComposedAdapterFactory parentAdapterFactory;
+
+ /**
+ * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+ /**
+ * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+ /**
+ * This constructs an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ModifierItemProviderAdapterFactory() {
+ supportedTypes.add(IEditingDomainItemProvider.class);
+ supportedTypes.add(IStructuredItemContentProvider.class);
+ supportedTypes.add(ITreeItemContentProvider.class);
+ supportedTypes.add(IItemLabelProvider.class);
+ supportedTypes.add(IItemPropertySource.class);
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.modifier.DoubleNOPModifier} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DoubleNOPModifierItemProvider doubleNOPModifierItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.modifier.DoubleNOPModifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createDoubleNOPModifierAdapter() {
+ if (doubleNOPModifierItemProvider == null) {
+ doubleNOPModifierItemProvider = new DoubleNOPModifierItemProvider(this);
+ }
+
+ return doubleNOPModifierItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.modifier.DoubleRangeModifier} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DoubleRangeModifierItemProvider doubleRangeModifierItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.modifier.DoubleRangeModifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createDoubleRangeModifierAdapter() {
+ if (doubleRangeModifierItemProvider == null) {
+ doubleRangeModifierItemProvider = new DoubleRangeModifierItemProvider(this);
+ }
+
+ return doubleRangeModifierItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.modifier.DoubleSequenceModifier} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DoubleSequenceModifierItemProvider doubleSequenceModifierItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.modifier.DoubleSequenceModifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createDoubleSequenceModifierAdapter() {
+ if (doubleSequenceModifierItemProvider == null) {
+ doubleSequenceModifierItemProvider = new DoubleSequenceModifierItemProvider(this);
+ }
+
+ return doubleSequenceModifierItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.modifier.IntegerNOPModifier} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IntegerNOPModifierItemProvider integerNOPModifierItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.modifier.IntegerNOPModifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createIntegerNOPModifierAdapter() {
+ if (integerNOPModifierItemProvider == null) {
+ integerNOPModifierItemProvider = new IntegerNOPModifierItemProvider(this);
+ }
+
+ return integerNOPModifierItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.modifier.IntegerRangeModifier} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IntegerRangeModifierItemProvider integerRangeModifierItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.modifier.IntegerRangeModifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createIntegerRangeModifierAdapter() {
+ if (integerRangeModifierItemProvider == null) {
+ integerRangeModifierItemProvider = new IntegerRangeModifierItemProvider(this);
+ }
+
+ return integerRangeModifierItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.modifier.IntegerSequenceModifier} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IntegerSequenceModifierItemProvider integerSequenceModifierItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.modifier.IntegerSequenceModifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createIntegerSequenceModifierAdapter() {
+ if (integerSequenceModifierItemProvider == null) {
+ integerSequenceModifierItemProvider = new IntegerSequenceModifierItemProvider(this);
+ }
+
+ return integerSequenceModifierItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.modifier.LongNOPModifier} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LongNOPModifierItemProvider longNOPModifierItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.modifier.LongNOPModifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createLongNOPModifierAdapter() {
+ if (longNOPModifierItemProvider == null) {
+ longNOPModifierItemProvider = new LongNOPModifierItemProvider(this);
+ }
+
+ return longNOPModifierItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.modifier.LongRangeModifier} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LongRangeModifierItemProvider longRangeModifierItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.modifier.LongRangeModifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createLongRangeModifierAdapter() {
+ if (longRangeModifierItemProvider == null) {
+ longRangeModifierItemProvider = new LongRangeModifierItemProvider(this);
+ }
+
+ return longRangeModifierItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.modifier.LongSequenceModifier} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LongSequenceModifierItemProvider longSequenceModifierItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.modifier.LongSequenceModifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createLongSequenceModifierAdapter() {
+ if (longSequenceModifierItemProvider == null) {
+ longSequenceModifierItemProvider = new LongSequenceModifierItemProvider(this);
+ }
+
+ return longSequenceModifierItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.modifier.Modifier} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ModifierItemProvider modifierItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.modifier.Modifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createModifierAdapter() {
+ if (modifierItemProvider == null) {
+ modifierItemProvider = new ModifierItemProvider(this);
+ }
+
+ return modifierItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.modifier.NOPModifier} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected NOPModifierItemProvider nopModifierItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.modifier.NOPModifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createNOPModifierAdapter() {
+ if (nopModifierItemProvider == null) {
+ nopModifierItemProvider = new NOPModifierItemProvider(this);
+ }
+
+ return nopModifierItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.modifier.STEMTimeNOPModifier} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected STEMTimeNOPModifierItemProvider stemTimeNOPModifierItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.modifier.STEMTimeNOPModifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createSTEMTimeNOPModifierAdapter() {
+ if (stemTimeNOPModifierItemProvider == null) {
+ stemTimeNOPModifierItemProvider = new STEMTimeNOPModifierItemProvider(this);
+ }
+
+ return stemTimeNOPModifierItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.modifier.STEMTimeRangeModifier} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected STEMTimeRangeModifierItemProvider stemTimeRangeModifierItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.modifier.STEMTimeRangeModifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createSTEMTimeRangeModifierAdapter() {
+ if (stemTimeRangeModifierItemProvider == null) {
+ stemTimeRangeModifierItemProvider = new STEMTimeRangeModifierItemProvider(this);
+ }
+
+ return stemTimeRangeModifierItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.modifier.STEMTimeSequenceModifier} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected STEMTimeSequenceModifierItemProvider stemTimeSequenceModifierItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.modifier.STEMTimeSequenceModifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createSTEMTimeSequenceModifierAdapter() {
+ if (stemTimeSequenceModifierItemProvider == null) {
+ stemTimeSequenceModifierItemProvider = new STEMTimeSequenceModifierItemProvider(this);
+ }
+
+ return stemTimeSequenceModifierItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.modifier.StringNOPModifier} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StringNOPModifierItemProvider stringNOPModifierItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.modifier.StringNOPModifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createStringNOPModifierAdapter() {
+ if (stringNOPModifierItemProvider == null) {
+ stringNOPModifierItemProvider = new StringNOPModifierItemProvider(this);
+ }
+
+ return stringNOPModifierItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.modifier.StringSequenceModifier} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected StringSequenceModifierItemProvider stringSequenceModifierItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.modifier.StringSequenceModifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createStringSequenceModifierAdapter() {
+ if (stringSequenceModifierItemProvider == null) {
+ stringSequenceModifierItemProvider = new StringSequenceModifierItemProvider(this);
+ }
+
+ return stringSequenceModifierItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.modifier.DoubleModifier} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DoubleModifierItemProvider doubleModifierItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.modifier.DoubleModifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createDoubleModifierAdapter() {
+ if (doubleModifierItemProvider == null) {
+ doubleModifierItemProvider = new DoubleModifierItemProvider(this);
+ }
+
+ return doubleModifierItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.modifier.IntegerModifier} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IntegerModifierItemProvider integerModifierItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.modifier.IntegerModifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createIntegerModifierAdapter() {
+ if (integerModifierItemProvider == null) {
+ integerModifierItemProvider = new IntegerModifierItemProvider(this);
+ }
+
+ return integerModifierItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.modifier.LongModifier} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected LongModifierItemProvider longModifierItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.modifier.LongModifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createLongModifierAdapter() {
+ if (longModifierItemProvider == null) {
+ longModifierItemProvider = new LongModifierItemProvider(this);
+ }
+
+ return longModifierItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.modifier.STEMTimeModifier} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected STEMTimeModifierItemProvider stemTimeModifierItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.modifier.STEMTimeModifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createSTEMTimeModifierAdapter() {
+ if (stemTimeModifierItemProvider == null) {
+ stemTimeModifierItemProvider = new STEMTimeModifierItemProvider(this);
+ }
+
+ return stemTimeModifierItemProvider;
+ }
+
+ /**
+ * This returns the root adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ComposeableAdapterFactory getRootAdapterFactory() {
+ return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+ }
+
+ /**
+ * This sets the composed adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+ this.parentAdapterFactory = parentAdapterFactory;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object type) {
+ return supportedTypes.contains(type) || super.isFactoryForType(type);
+ }
+
+ /**
+ * This implementation substitutes the factory itself as the key for the adapter.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter adapt(Notifier notifier, Object type) {
+ return super.adapt(notifier, this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object adapt(Object object, Object type) {
+ if (isFactoryForType(type)) {
+ Object adapter = super.adapt(object, type);
+ if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+ return adapter;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * This adds a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void addListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.addListener(notifyChangedListener);
+ }
+
+ /**
+ * This removes a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void removeListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.removeListener(notifyChangedListener);
+ }
+
+ /**
+ * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void fireNotifyChanged(Notification notification) {
+ changeNotifier.fireNotifyChanged(notification);
+
+ if (parentAdapterFactory != null) {
+ parentAdapterFactory.fireNotifyChanged(notification);
+ }
+ }
+
+ /**
+ * This disposes all of the item providers created by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void dispose() {
+ if (doubleNOPModifierItemProvider != null) doubleNOPModifierItemProvider.dispose();
+ if (doubleRangeModifierItemProvider != null) doubleRangeModifierItemProvider.dispose();
+ if (doubleSequenceModifierItemProvider != null) doubleSequenceModifierItemProvider.dispose();
+ if (integerNOPModifierItemProvider != null) integerNOPModifierItemProvider.dispose();
+ if (integerRangeModifierItemProvider != null) integerRangeModifierItemProvider.dispose();
+ if (integerSequenceModifierItemProvider != null) integerSequenceModifierItemProvider.dispose();
+ if (longNOPModifierItemProvider != null) longNOPModifierItemProvider.dispose();
+ if (longRangeModifierItemProvider != null) longRangeModifierItemProvider.dispose();
+ if (longSequenceModifierItemProvider != null) longSequenceModifierItemProvider.dispose();
+ if (modifierItemProvider != null) modifierItemProvider.dispose();
+ if (nopModifierItemProvider != null) nopModifierItemProvider.dispose();
+ if (stemTimeNOPModifierItemProvider != null) stemTimeNOPModifierItemProvider.dispose();
+ if (stemTimeRangeModifierItemProvider != null) stemTimeRangeModifierItemProvider.dispose();
+ if (stemTimeSequenceModifierItemProvider != null) stemTimeSequenceModifierItemProvider.dispose();
+ if (stringNOPModifierItemProvider != null) stringNOPModifierItemProvider.dispose();
+ if (stringSequenceModifierItemProvider != null) stringSequenceModifierItemProvider.dispose();
+ if (doubleModifierItemProvider != null) doubleModifierItemProvider.dispose();
+ if (integerModifierItemProvider != null) integerModifierItemProvider.dispose();
+ if (longModifierItemProvider != null) longModifierItemProvider.dispose();
+ if (stemTimeModifierItemProvider != null) stemTimeModifierItemProvider.dispose();
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/NOPModifierItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/NOPModifierItemProvider.java
new file mode 100644
index 000000000..0ee4a396a
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/NOPModifierItemProvider.java
@@ -0,0 +1,117 @@
+package org.eclipse.stem.core.modifier.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.modifier.NOPModifier;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.modifier.NOPModifier} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NOPModifierItemProvider
+ extends FeatureModifierItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NOPModifierItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns NOPModifier.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/NOPModifier")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((NOPModifier)object).getFeatureName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_NOPModifier_type") : //$NON-NLS-1$
+ getString("_UI_NOPModifier_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/RangeModifierItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/RangeModifierItemProvider.java
new file mode 100644
index 000000000..444ad3b53
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/RangeModifierItemProvider.java
@@ -0,0 +1,116 @@
+package org.eclipse.stem.core.modifier.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.modifier.RangeModifier;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.modifier.RangeModifier} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class RangeModifierItemProvider
+ extends FeatureModifierItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public RangeModifierItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns RangeModifier.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/RangeModifier")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((RangeModifier)object).getFeatureName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_RangeModifier_type") : //$NON-NLS-1$
+ getString("_UI_RangeModifier_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/STEMTimeModifierItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/STEMTimeModifierItemProvider.java
new file mode 100644
index 000000000..8e32005d2
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/STEMTimeModifierItemProvider.java
@@ -0,0 +1,165 @@
+package org.eclipse.stem.core.modifier.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2009 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
+ *******************************************************************************/
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+import org.eclipse.stem.core.modifier.STEMTimeModifier;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.modifier.STEMTimeModifier} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class STEMTimeModifierItemProvider
+ extends SingleValueModifierItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public STEMTimeModifierItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addValuePropertyDescriptor(object);
+ addOriginalValuePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Value feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addValuePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_STEMTimeModifier_value_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_STEMTimeModifier_value_feature", "_UI_STEMTimeModifier_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ModifierPackage.Literals.STEM_TIME_MODIFIER__VALUE,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Original Value feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addOriginalValuePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_STEMTimeModifier_originalValue_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_STEMTimeModifier_originalValue_feature", "_UI_STEMTimeModifier_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ModifierPackage.Literals.STEM_TIME_MODIFIER__ORIGINAL_VALUE,
+ false,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This returns STEMTimeModifier.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/STEMTimeModifier")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((STEMTimeModifier)object).getFeatureName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_STEMTimeModifier_type") : //$NON-NLS-1$
+ getString("_UI_STEMTimeModifier_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/STEMTimeNOPModifierItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/STEMTimeNOPModifierItemProvider.java
new file mode 100644
index 000000000..079680d18
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/STEMTimeNOPModifierItemProvider.java
@@ -0,0 +1,106 @@
+package org.eclipse.stem.core.modifier.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.modifier.STEMTimeNOPModifier;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.modifier.STEMTimeNOPModifier} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class STEMTimeNOPModifierItemProvider
+ extends NOPModifierItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public STEMTimeNOPModifierItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((STEMTimeNOPModifier)object).getFeatureName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_STEMTimeNOPModifier_type") : //$NON-NLS-1$
+ getString("_UI_STEMTimeNOPModifier_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/STEMTimeRangeModifierItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/STEMTimeRangeModifierItemProvider.java
new file mode 100644
index 000000000..11307839a
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/STEMTimeRangeModifierItemProvider.java
@@ -0,0 +1,245 @@
+package org.eclipse.stem.core.modifier.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+import org.eclipse.stem.core.modifier.STEMTimeRangeModifier;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.modifier.STEMTimeRangeModifier} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class STEMTimeRangeModifierItemProvider
+ extends RangeModifierItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public STEMTimeRangeModifierItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+// /**
+// * This returns the property descriptors for the adapted class.
+// * <!-- begin-user-doc -->
+// * <!-- end-user-doc -->
+// * @generated
+// */
+// @Override
+// public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+// if (itemPropertyDescriptors == null) {
+// super.getPropertyDescriptors(object);
+//
+// addStartValuePropertyDescriptor(object);
+// addEndValuePropertyDescriptor(object);
+// addIncrementPropertyDescriptor(object);
+// addNextValuePropertyDescriptor(object);
+// }
+// return itemPropertyDescriptors;
+// }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addStartValuePropertyDescriptor(object);
+ addEndValuePropertyDescriptor(object);
+ addIncrementPropertyDescriptor(object);
+ addNextValuePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+
+ /**
+ * This adds a property descriptor for the Start Value feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addStartValuePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_STEMTimeRangeModifier_startValue_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_STEMTimeRangeModifier_startValue_feature", "_UI_STEMTimeRangeModifier_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ModifierPackage.Literals.STEM_TIME_RANGE_MODIFIER__START_VALUE,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the End Value feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addEndValuePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_STEMTimeRangeModifier_endValue_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_STEMTimeRangeModifier_endValue_feature", "_UI_STEMTimeRangeModifier_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ModifierPackage.Literals.STEM_TIME_RANGE_MODIFIER__END_VALUE,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Increment feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addIncrementPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_STEMTimeRangeModifier_increment_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_STEMTimeRangeModifier_increment_feature", "_UI_STEMTimeRangeModifier_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ModifierPackage.Literals.STEM_TIME_RANGE_MODIFIER__INCREMENT,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Next Value feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addNextValuePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_STEMTimeRangeModifier_nextValue_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_STEMTimeRangeModifier_nextValue_feature", "_UI_STEMTimeRangeModifier_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ModifierPackage.Literals.STEM_TIME_RANGE_MODIFIER__NEXT_VALUE,
+ true,
+ false,
+ false,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ final STEMTimeRangeModifier rm = (STEMTimeRangeModifier)object;
+ final StringBuilder sb = new StringBuilder(rm.getFeatureName());
+ sb.append(": ");
+ sb.append(rm.getStartValue());
+ sb.append(" to ");
+ sb.append(rm.getEndValue());
+ sb.append(" by ");
+ sb.append(rm.getIncrement());
+ return sb.toString();
+ } // getText
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getTextGen(Object object) {
+ String label = ((STEMTimeRangeModifier)object).getFeatureName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_STEMTimeRangeModifier_type") : //$NON-NLS-1$
+ getString("_UI_STEMTimeRangeModifier_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(STEMTimeRangeModifier.class)) {
+ case ModifierPackage.STEM_TIME_RANGE_MODIFIER__INCREMENT:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/STEMTimeSequenceModifierItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/STEMTimeSequenceModifierItemProvider.java
new file mode 100644
index 000000000..aa8b0fa0a
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/STEMTimeSequenceModifierItemProvider.java
@@ -0,0 +1,131 @@
+package org.eclipse.stem.core.modifier.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+import org.eclipse.stem.core.modifier.STEMTimeSequenceModifier;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.modifier.STEMTimeSequenceModifier} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class STEMTimeSequenceModifierItemProvider
+ extends SequenceModifierItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public STEMTimeSequenceModifierItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addSequencePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Sequence feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addSequencePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_STEMTimeSequenceModifier_sequence_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_STEMTimeSequenceModifier_sequence_feature", "_UI_STEMTimeSequenceModifier_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ModifierPackage.Literals.STEM_TIME_SEQUENCE_MODIFIER__SEQUENCE,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((STEMTimeSequenceModifier)object).getFeatureName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_STEMTimeSequenceModifier_type") : //$NON-NLS-1$
+ getString("_UI_STEMTimeSequenceModifier_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/SequenceModifierItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/SequenceModifierItemProvider.java
new file mode 100644
index 000000000..0560830bf
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/SequenceModifierItemProvider.java
@@ -0,0 +1,221 @@
+package org.eclipse.stem.core.modifier.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+import org.eclipse.stem.core.modifier.SequenceModifier;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.modifier.SequenceModifier} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SequenceModifierItemProvider
+ extends FeatureModifierItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SequenceModifierItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addSequenceSizePropertyDescriptor(object);
+ addCurrentSequenceIndexPropertyDescriptor(object);
+ addNextValuePropertyDescriptor(object);
+ addOriginalValuePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Sequence Size feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addSequenceSizePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_SequenceModifier_sequenceSize_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_SequenceModifier_sequenceSize_feature", "_UI_SequenceModifier_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ModifierPackage.Literals.SEQUENCE_MODIFIER__SEQUENCE_SIZE,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Current Sequence Index feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addCurrentSequenceIndexPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_SequenceModifier_currentSequenceIndex_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_SequenceModifier_currentSequenceIndex_feature", "_UI_SequenceModifier_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ModifierPackage.Literals.SEQUENCE_MODIFIER__CURRENT_SEQUENCE_INDEX,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Next Value feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addNextValuePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_SequenceModifier_nextValue_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_SequenceModifier_nextValue_feature", "_UI_SequenceModifier_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ModifierPackage.Literals.SEQUENCE_MODIFIER__NEXT_VALUE,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Original Value feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addOriginalValuePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_SequenceModifier_originalValue_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_SequenceModifier_originalValue_feature", "_UI_SequenceModifier_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ModifierPackage.Literals.SEQUENCE_MODIFIER__ORIGINAL_VALUE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns SequenceModifier.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/customobj16/SequenceModifier.png")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((SequenceModifier)object).getFeatureName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_SequenceModifier_type") : //$NON-NLS-1$
+ getString("_UI_SequenceModifier_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(SequenceModifier.class)) {
+ case ModifierPackage.SEQUENCE_MODIFIER__SEQUENCE_SIZE:
+ case ModifierPackage.SEQUENCE_MODIFIER__CURRENT_SEQUENCE_INDEX:
+ case ModifierPackage.SEQUENCE_MODIFIER__NEXT_VALUE:
+ case ModifierPackage.SEQUENCE_MODIFIER__ORIGINAL_VALUE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/SingleValueModifierItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/SingleValueModifierItemProvider.java
new file mode 100644
index 000000000..941d563f2
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/SingleValueModifierItemProvider.java
@@ -0,0 +1,106 @@
+package org.eclipse.stem.core.modifier.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2009 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
+ *******************************************************************************/
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.modifier.SingleValueModifier;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.modifier.SingleValueModifier} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SingleValueModifierItemProvider
+ extends FeatureModifierItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SingleValueModifierItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((SingleValueModifier)object).getFeatureName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_SingleValueModifier_type") : //$NON-NLS-1$
+ getString("_UI_SingleValueModifier_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/StringNOPModifierItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/StringNOPModifierItemProvider.java
new file mode 100644
index 000000000..894f4a6e7
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/StringNOPModifierItemProvider.java
@@ -0,0 +1,106 @@
+package org.eclipse.stem.core.modifier.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.modifier.StringNOPModifier;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.modifier.StringNOPModifier} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StringNOPModifierItemProvider
+ extends NOPModifierItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StringNOPModifierItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((StringNOPModifier)object).getFeatureName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_StringNOPModifier_type") : //$NON-NLS-1$
+ getString("_UI_StringNOPModifier_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/StringSequenceModifierItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/StringSequenceModifierItemProvider.java
new file mode 100644
index 000000000..a2f45e0d8
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/provider/StringSequenceModifierItemProvider.java
@@ -0,0 +1,138 @@
+package org.eclipse.stem.core.modifier.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+import org.eclipse.stem.core.modifier.StringSequenceModifier;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.modifier.StringSequenceModifier} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class StringSequenceModifierItemProvider
+ extends SequenceModifierItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public StringSequenceModifierItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addSequencePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Sequence feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addSequencePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_StringSequenceModifier_sequence_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_StringSequenceModifier_sequence_feature", "_UI_StringSequenceModifier_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ ModifierPackage.Literals.STRING_SEQUENCE_MODIFIER__SEQUENCE,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ String label = ((StringSequenceModifier)object).getFeatureName();
+ return label == null || label.length() == 0 ?
+ getString("_UI_StringSequenceModifier_type") : //$NON-NLS-1$
+ getString("_UI_StringSequenceModifier_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(StringSequenceModifier.class)) {
+ case ModifierPackage.STRING_SEQUENCE_MODIFIER__SEQUENCE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/util/ModifierAdapterFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/util/ModifierAdapterFactory.java
new file mode 100644
index 000000000..fe67f5892
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/util/ModifierAdapterFactory.java
@@ -0,0 +1,658 @@
+package org.eclipse.stem.core.modifier.util;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.SanityChecker;
+import org.eclipse.stem.core.model.Decorator;
+import org.eclipse.stem.core.modifier.DoubleModifier;
+import org.eclipse.stem.core.modifier.DoubleNOPModifier;
+import org.eclipse.stem.core.modifier.DoubleRangeModifier;
+import org.eclipse.stem.core.modifier.DoubleSequenceModifier;
+import org.eclipse.stem.core.modifier.FeatureModifier;
+import org.eclipse.stem.core.modifier.IntegerModifier;
+import org.eclipse.stem.core.modifier.IntegerNOPModifier;
+import org.eclipse.stem.core.modifier.IntegerRangeModifier;
+import org.eclipse.stem.core.modifier.IntegerSequenceModifier;
+import org.eclipse.stem.core.modifier.LongModifier;
+import org.eclipse.stem.core.modifier.LongNOPModifier;
+import org.eclipse.stem.core.modifier.LongRangeModifier;
+import org.eclipse.stem.core.modifier.LongSequenceModifier;
+import org.eclipse.stem.core.modifier.Modifiable;
+import org.eclipse.stem.core.modifier.Modifier;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+import org.eclipse.stem.core.modifier.NOPModifier;
+import org.eclipse.stem.core.modifier.RangeModifier;
+import org.eclipse.stem.core.modifier.STEMTimeModifier;
+import org.eclipse.stem.core.modifier.STEMTimeNOPModifier;
+import org.eclipse.stem.core.modifier.STEMTimeRangeModifier;
+import org.eclipse.stem.core.modifier.STEMTimeSequenceModifier;
+import org.eclipse.stem.core.modifier.SequenceModifier;
+import org.eclipse.stem.core.modifier.SingleValueModifier;
+import org.eclipse.stem.core.modifier.StringNOPModifier;
+import org.eclipse.stem.core.modifier.StringSequenceModifier;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.ModifierPackage
+ * @generated
+ */
+public class ModifierAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static ModifierPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ModifierAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = ModifierPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ModifierSwitch<Adapter> modelSwitch =
+ new ModifierSwitch<Adapter>() {
+ @Override
+ public Adapter caseDoubleNOPModifier(DoubleNOPModifier object) {
+ return createDoubleNOPModifierAdapter();
+ }
+ @Override
+ public Adapter caseDoubleRangeModifier(DoubleRangeModifier object) {
+ return createDoubleRangeModifierAdapter();
+ }
+ @Override
+ public Adapter caseDoubleSequenceModifier(DoubleSequenceModifier object) {
+ return createDoubleSequenceModifierAdapter();
+ }
+ @Override
+ public Adapter caseFeatureModifier(FeatureModifier object) {
+ return createFeatureModifierAdapter();
+ }
+ @Override
+ public Adapter caseIntegerNOPModifier(IntegerNOPModifier object) {
+ return createIntegerNOPModifierAdapter();
+ }
+ @Override
+ public Adapter caseIntegerRangeModifier(IntegerRangeModifier object) {
+ return createIntegerRangeModifierAdapter();
+ }
+ @Override
+ public Adapter caseIntegerSequenceModifier(IntegerSequenceModifier object) {
+ return createIntegerSequenceModifierAdapter();
+ }
+ @Override
+ public Adapter caseLongNOPModifier(LongNOPModifier object) {
+ return createLongNOPModifierAdapter();
+ }
+ @Override
+ public Adapter caseLongRangeModifier(LongRangeModifier object) {
+ return createLongRangeModifierAdapter();
+ }
+ @Override
+ public Adapter caseLongSequenceModifier(LongSequenceModifier object) {
+ return createLongSequenceModifierAdapter();
+ }
+ @Override
+ public Adapter caseModifier(Modifier object) {
+ return createModifierAdapter();
+ }
+ @Override
+ public Adapter caseNOPModifier(NOPModifier object) {
+ return createNOPModifierAdapter();
+ }
+ @Override
+ public Adapter caseRangeModifier(RangeModifier object) {
+ return createRangeModifierAdapter();
+ }
+ @Override
+ public Adapter caseSTEMTimeNOPModifier(STEMTimeNOPModifier object) {
+ return createSTEMTimeNOPModifierAdapter();
+ }
+ @Override
+ public Adapter caseSTEMTimeRangeModifier(STEMTimeRangeModifier object) {
+ return createSTEMTimeRangeModifierAdapter();
+ }
+ @Override
+ public Adapter caseSTEMTimeSequenceModifier(STEMTimeSequenceModifier object) {
+ return createSTEMTimeSequenceModifierAdapter();
+ }
+ @Override
+ public Adapter caseSequenceModifier(SequenceModifier object) {
+ return createSequenceModifierAdapter();
+ }
+ @Override
+ public Adapter caseStringNOPModifier(StringNOPModifier object) {
+ return createStringNOPModifierAdapter();
+ }
+ @Override
+ public Adapter caseStringSequenceModifier(StringSequenceModifier object) {
+ return createStringSequenceModifierAdapter();
+ }
+ @Override
+ public Adapter caseModifiable(Modifiable object) {
+ return createModifiableAdapter();
+ }
+ @Override
+ public Adapter caseSingleValueModifier(SingleValueModifier object) {
+ return createSingleValueModifierAdapter();
+ }
+ @Override
+ public Adapter caseDoubleModifier(DoubleModifier object) {
+ return createDoubleModifierAdapter();
+ }
+ @Override
+ public Adapter caseIntegerModifier(IntegerModifier object) {
+ return createIntegerModifierAdapter();
+ }
+ @Override
+ public Adapter caseLongModifier(LongModifier object) {
+ return createLongModifierAdapter();
+ }
+ @Override
+ public Adapter caseSTEMTimeModifier(STEMTimeModifier object) {
+ return createSTEMTimeModifierAdapter();
+ }
+ @Override
+ public <T> Adapter caseComparable(Comparable<T> object) {
+ return createComparableAdapter();
+ }
+ @Override
+ public Adapter caseSanityChecker(SanityChecker object) {
+ return createSanityCheckerAdapter();
+ }
+ @Override
+ public Adapter caseIdentifiable(Identifiable object) {
+ return createIdentifiableAdapter();
+ }
+ @Override
+ public Adapter caseDecorator(Decorator object) {
+ return createDecoratorAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.modifier.DoubleNOPModifier <em>Double NOP Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.modifier.DoubleNOPModifier
+ * @generated
+ */
+ public Adapter createDoubleNOPModifierAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.modifier.DoubleRangeModifier <em>Double Range Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.modifier.DoubleRangeModifier
+ * @generated
+ */
+ public Adapter createDoubleRangeModifierAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.modifier.DoubleSequenceModifier <em>Double Sequence Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.modifier.DoubleSequenceModifier
+ * @generated
+ */
+ public Adapter createDoubleSequenceModifierAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.modifier.FeatureModifier <em>Feature Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.modifier.FeatureModifier
+ * @generated
+ */
+ public Adapter createFeatureModifierAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.modifier.IntegerNOPModifier <em>Integer NOP Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.modifier.IntegerNOPModifier
+ * @generated
+ */
+ public Adapter createIntegerNOPModifierAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.modifier.IntegerRangeModifier <em>Integer Range Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.modifier.IntegerRangeModifier
+ * @generated
+ */
+ public Adapter createIntegerRangeModifierAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.modifier.IntegerSequenceModifier <em>Integer Sequence Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.modifier.IntegerSequenceModifier
+ * @generated
+ */
+ public Adapter createIntegerSequenceModifierAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.modifier.LongNOPModifier <em>Long NOP Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.modifier.LongNOPModifier
+ * @generated
+ */
+ public Adapter createLongNOPModifierAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.modifier.LongRangeModifier <em>Long Range Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.modifier.LongRangeModifier
+ * @generated
+ */
+ public Adapter createLongRangeModifierAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.modifier.LongSequenceModifier <em>Long Sequence Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.modifier.LongSequenceModifier
+ * @generated
+ */
+ public Adapter createLongSequenceModifierAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.modifier.Modifier <em>Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.modifier.Modifier
+ * @generated
+ */
+ public Adapter createModifierAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.modifier.NOPModifier <em>NOP Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.modifier.NOPModifier
+ * @generated
+ */
+ public Adapter createNOPModifierAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.modifier.RangeModifier <em>Range Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.modifier.RangeModifier
+ * @generated
+ */
+ public Adapter createRangeModifierAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.modifier.STEMTimeNOPModifier <em>STEM Time NOP Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.modifier.STEMTimeNOPModifier
+ * @generated
+ */
+ public Adapter createSTEMTimeNOPModifierAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.modifier.STEMTimeRangeModifier <em>STEM Time Range Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.modifier.STEMTimeRangeModifier
+ * @generated
+ */
+ public Adapter createSTEMTimeRangeModifierAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.modifier.STEMTimeSequenceModifier <em>STEM Time Sequence Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.modifier.STEMTimeSequenceModifier
+ * @generated
+ */
+ public Adapter createSTEMTimeSequenceModifierAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.modifier.SequenceModifier <em>Sequence Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.modifier.SequenceModifier
+ * @generated
+ */
+ public Adapter createSequenceModifierAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.modifier.StringNOPModifier <em>String NOP Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.modifier.StringNOPModifier
+ * @generated
+ */
+ public Adapter createStringNOPModifierAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.modifier.StringSequenceModifier <em>String Sequence Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.modifier.StringSequenceModifier
+ * @generated
+ */
+ public Adapter createStringSequenceModifierAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.modifier.Modifiable <em>Modifiable</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.modifier.Modifiable
+ * @generated
+ */
+ public Adapter createModifiableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.modifier.SingleValueModifier <em>Single Value Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.modifier.SingleValueModifier
+ * @generated
+ */
+ public Adapter createSingleValueModifierAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.modifier.DoubleModifier <em>Double Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.modifier.DoubleModifier
+ * @generated
+ */
+ public Adapter createDoubleModifierAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.modifier.IntegerModifier <em>Integer Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.modifier.IntegerModifier
+ * @generated
+ */
+ public Adapter createIntegerModifierAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.modifier.LongModifier <em>Long Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.modifier.LongModifier
+ * @generated
+ */
+ public Adapter createLongModifierAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.modifier.STEMTimeModifier <em>STEM Time Modifier</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.modifier.STEMTimeModifier
+ * @generated
+ */
+ public Adapter createSTEMTimeModifierAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link java.lang.Comparable <em>Comparable</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see java.lang.Comparable
+ * @generated
+ */
+ public Adapter createComparableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.SanityChecker <em>Sanity Checker</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.common.SanityChecker
+ * @generated
+ */
+ public Adapter createSanityCheckerAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.Identifiable <em>Identifiable</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.common.Identifiable
+ * @generated
+ */
+ public Adapter createIdentifiableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.model.Decorator <em>Decorator</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.model.Decorator
+ * @generated
+ */
+ public Adapter createDecoratorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} //ModifierAdapterFactory
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/util/ModifierSwitch.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/util/ModifierSwitch.java
new file mode 100644
index 000000000..9b7a8690d
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/modifier/util/ModifierSwitch.java
@@ -0,0 +1,770 @@
+package org.eclipse.stem.core.modifier.util;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.SanityChecker;
+import org.eclipse.stem.core.model.Decorator;
+import org.eclipse.stem.core.modifier.DoubleModifier;
+import org.eclipse.stem.core.modifier.DoubleNOPModifier;
+import org.eclipse.stem.core.modifier.DoubleRangeModifier;
+import org.eclipse.stem.core.modifier.DoubleSequenceModifier;
+import org.eclipse.stem.core.modifier.FeatureModifier;
+import org.eclipse.stem.core.modifier.IntegerModifier;
+import org.eclipse.stem.core.modifier.IntegerNOPModifier;
+import org.eclipse.stem.core.modifier.IntegerRangeModifier;
+import org.eclipse.stem.core.modifier.IntegerSequenceModifier;
+import org.eclipse.stem.core.modifier.LongModifier;
+import org.eclipse.stem.core.modifier.LongNOPModifier;
+import org.eclipse.stem.core.modifier.LongRangeModifier;
+import org.eclipse.stem.core.modifier.LongSequenceModifier;
+import org.eclipse.stem.core.modifier.Modifiable;
+import org.eclipse.stem.core.modifier.Modifier;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+import org.eclipse.stem.core.modifier.NOPModifier;
+import org.eclipse.stem.core.modifier.RangeModifier;
+import org.eclipse.stem.core.modifier.STEMTimeModifier;
+import org.eclipse.stem.core.modifier.STEMTimeNOPModifier;
+import org.eclipse.stem.core.modifier.STEMTimeRangeModifier;
+import org.eclipse.stem.core.modifier.STEMTimeSequenceModifier;
+import org.eclipse.stem.core.modifier.SequenceModifier;
+import org.eclipse.stem.core.modifier.SingleValueModifier;
+import org.eclipse.stem.core.modifier.StringNOPModifier;
+import org.eclipse.stem.core.modifier.StringSequenceModifier;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.modifier.ModifierPackage
+ * @generated
+ */
+public class ModifierSwitch<T1> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static ModifierPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ModifierSwitch() {
+ if (modelPackage == null) {
+ modelPackage = ModifierPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ public T1 doSwitch(EObject theEObject) {
+ return doSwitch(theEObject.eClass(), theEObject);
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T1 doSwitch(EClass theEClass, EObject theEObject) {
+ if (theEClass.eContainer() == modelPackage) {
+ return doSwitch(theEClass.getClassifierID(), theEObject);
+ }
+ else {
+ List<EClass> eSuperTypes = theEClass.getESuperTypes();
+ return
+ eSuperTypes.isEmpty() ?
+ defaultCase(theEObject) :
+ doSwitch(eSuperTypes.get(0), theEObject);
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T1 doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case ModifierPackage.DOUBLE_NOP_MODIFIER: {
+ DoubleNOPModifier doubleNOPModifier = (DoubleNOPModifier)theEObject;
+ T1 result = caseDoubleNOPModifier(doubleNOPModifier);
+ if (result == null) result = caseNOPModifier(doubleNOPModifier);
+ if (result == null) result = caseFeatureModifier(doubleNOPModifier);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ModifierPackage.DOUBLE_RANGE_MODIFIER: {
+ DoubleRangeModifier doubleRangeModifier = (DoubleRangeModifier)theEObject;
+ T1 result = caseDoubleRangeModifier(doubleRangeModifier);
+ if (result == null) result = caseRangeModifier(doubleRangeModifier);
+ if (result == null) result = caseFeatureModifier(doubleRangeModifier);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ModifierPackage.DOUBLE_SEQUENCE_MODIFIER: {
+ DoubleSequenceModifier doubleSequenceModifier = (DoubleSequenceModifier)theEObject;
+ T1 result = caseDoubleSequenceModifier(doubleSequenceModifier);
+ if (result == null) result = caseSequenceModifier(doubleSequenceModifier);
+ if (result == null) result = caseFeatureModifier(doubleSequenceModifier);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ModifierPackage.FEATURE_MODIFIER: {
+ FeatureModifier featureModifier = (FeatureModifier)theEObject;
+ T1 result = caseFeatureModifier(featureModifier);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ModifierPackage.INTEGER_NOP_MODIFIER: {
+ IntegerNOPModifier integerNOPModifier = (IntegerNOPModifier)theEObject;
+ T1 result = caseIntegerNOPModifier(integerNOPModifier);
+ if (result == null) result = caseNOPModifier(integerNOPModifier);
+ if (result == null) result = caseFeatureModifier(integerNOPModifier);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ModifierPackage.INTEGER_RANGE_MODIFIER: {
+ IntegerRangeModifier integerRangeModifier = (IntegerRangeModifier)theEObject;
+ T1 result = caseIntegerRangeModifier(integerRangeModifier);
+ if (result == null) result = caseRangeModifier(integerRangeModifier);
+ if (result == null) result = caseFeatureModifier(integerRangeModifier);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ModifierPackage.INTEGER_SEQUENCE_MODIFIER: {
+ IntegerSequenceModifier integerSequenceModifier = (IntegerSequenceModifier)theEObject;
+ T1 result = caseIntegerSequenceModifier(integerSequenceModifier);
+ if (result == null) result = caseSequenceModifier(integerSequenceModifier);
+ if (result == null) result = caseFeatureModifier(integerSequenceModifier);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ModifierPackage.LONG_NOP_MODIFIER: {
+ LongNOPModifier longNOPModifier = (LongNOPModifier)theEObject;
+ T1 result = caseLongNOPModifier(longNOPModifier);
+ if (result == null) result = caseNOPModifier(longNOPModifier);
+ if (result == null) result = caseFeatureModifier(longNOPModifier);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ModifierPackage.LONG_RANGE_MODIFIER: {
+ LongRangeModifier longRangeModifier = (LongRangeModifier)theEObject;
+ T1 result = caseLongRangeModifier(longRangeModifier);
+ if (result == null) result = caseRangeModifier(longRangeModifier);
+ if (result == null) result = caseFeatureModifier(longRangeModifier);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ModifierPackage.LONG_SEQUENCE_MODIFIER: {
+ LongSequenceModifier longSequenceModifier = (LongSequenceModifier)theEObject;
+ T1 result = caseLongSequenceModifier(longSequenceModifier);
+ if (result == null) result = caseSequenceModifier(longSequenceModifier);
+ if (result == null) result = caseFeatureModifier(longSequenceModifier);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ModifierPackage.MODIFIER: {
+ Modifier modifier = (Modifier)theEObject;
+ T1 result = caseModifier(modifier);
+ if (result == null) result = caseDecorator(modifier);
+ if (result == null) result = caseIdentifiable(modifier);
+ if (result == null) result = caseComparable(modifier);
+ if (result == null) result = caseSanityChecker(modifier);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ModifierPackage.NOP_MODIFIER: {
+ NOPModifier nopModifier = (NOPModifier)theEObject;
+ T1 result = caseNOPModifier(nopModifier);
+ if (result == null) result = caseFeatureModifier(nopModifier);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ModifierPackage.RANGE_MODIFIER: {
+ RangeModifier rangeModifier = (RangeModifier)theEObject;
+ T1 result = caseRangeModifier(rangeModifier);
+ if (result == null) result = caseFeatureModifier(rangeModifier);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ModifierPackage.STEM_TIME_NOP_MODIFIER: {
+ STEMTimeNOPModifier stemTimeNOPModifier = (STEMTimeNOPModifier)theEObject;
+ T1 result = caseSTEMTimeNOPModifier(stemTimeNOPModifier);
+ if (result == null) result = caseNOPModifier(stemTimeNOPModifier);
+ if (result == null) result = caseFeatureModifier(stemTimeNOPModifier);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ModifierPackage.STEM_TIME_RANGE_MODIFIER: {
+ STEMTimeRangeModifier stemTimeRangeModifier = (STEMTimeRangeModifier)theEObject;
+ T1 result = caseSTEMTimeRangeModifier(stemTimeRangeModifier);
+ if (result == null) result = caseRangeModifier(stemTimeRangeModifier);
+ if (result == null) result = caseFeatureModifier(stemTimeRangeModifier);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ModifierPackage.STEM_TIME_SEQUENCE_MODIFIER: {
+ STEMTimeSequenceModifier stemTimeSequenceModifier = (STEMTimeSequenceModifier)theEObject;
+ T1 result = caseSTEMTimeSequenceModifier(stemTimeSequenceModifier);
+ if (result == null) result = caseSequenceModifier(stemTimeSequenceModifier);
+ if (result == null) result = caseFeatureModifier(stemTimeSequenceModifier);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ModifierPackage.SEQUENCE_MODIFIER: {
+ SequenceModifier sequenceModifier = (SequenceModifier)theEObject;
+ T1 result = caseSequenceModifier(sequenceModifier);
+ if (result == null) result = caseFeatureModifier(sequenceModifier);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ModifierPackage.STRING_NOP_MODIFIER: {
+ StringNOPModifier stringNOPModifier = (StringNOPModifier)theEObject;
+ T1 result = caseStringNOPModifier(stringNOPModifier);
+ if (result == null) result = caseNOPModifier(stringNOPModifier);
+ if (result == null) result = caseFeatureModifier(stringNOPModifier);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ModifierPackage.STRING_SEQUENCE_MODIFIER: {
+ StringSequenceModifier stringSequenceModifier = (StringSequenceModifier)theEObject;
+ T1 result = caseStringSequenceModifier(stringSequenceModifier);
+ if (result == null) result = caseSequenceModifier(stringSequenceModifier);
+ if (result == null) result = caseFeatureModifier(stringSequenceModifier);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ModifierPackage.MODIFIABLE: {
+ Modifiable modifiable = (Modifiable)theEObject;
+ T1 result = caseModifiable(modifiable);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ModifierPackage.SINGLE_VALUE_MODIFIER: {
+ SingleValueModifier singleValueModifier = (SingleValueModifier)theEObject;
+ T1 result = caseSingleValueModifier(singleValueModifier);
+ if (result == null) result = caseFeatureModifier(singleValueModifier);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ModifierPackage.DOUBLE_MODIFIER: {
+ DoubleModifier doubleModifier = (DoubleModifier)theEObject;
+ T1 result = caseDoubleModifier(doubleModifier);
+ if (result == null) result = caseSingleValueModifier(doubleModifier);
+ if (result == null) result = caseFeatureModifier(doubleModifier);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ModifierPackage.INTEGER_MODIFIER: {
+ IntegerModifier integerModifier = (IntegerModifier)theEObject;
+ T1 result = caseIntegerModifier(integerModifier);
+ if (result == null) result = caseSingleValueModifier(integerModifier);
+ if (result == null) result = caseFeatureModifier(integerModifier);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ModifierPackage.LONG_MODIFIER: {
+ LongModifier longModifier = (LongModifier)theEObject;
+ T1 result = caseLongModifier(longModifier);
+ if (result == null) result = caseSingleValueModifier(longModifier);
+ if (result == null) result = caseFeatureModifier(longModifier);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case ModifierPackage.STEM_TIME_MODIFIER: {
+ STEMTimeModifier stemTimeModifier = (STEMTimeModifier)theEObject;
+ T1 result = caseSTEMTimeModifier(stemTimeModifier);
+ if (result == null) result = caseSingleValueModifier(stemTimeModifier);
+ if (result == null) result = caseFeatureModifier(stemTimeModifier);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Double NOP Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Double NOP Modifier</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseDoubleNOPModifier(DoubleNOPModifier object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Double Range Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Double Range Modifier</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseDoubleRangeModifier(DoubleRangeModifier object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Double Sequence Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Double Sequence Modifier</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseDoubleSequenceModifier(DoubleSequenceModifier object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Feature Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Feature Modifier</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseFeatureModifier(FeatureModifier object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Integer NOP Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Integer NOP Modifier</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseIntegerNOPModifier(IntegerNOPModifier object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Integer Range Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Integer Range Modifier</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseIntegerRangeModifier(IntegerRangeModifier object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Integer Sequence Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Integer Sequence Modifier</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseIntegerSequenceModifier(IntegerSequenceModifier object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Long NOP Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Long NOP Modifier</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseLongNOPModifier(LongNOPModifier object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Long Range Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Long Range Modifier</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseLongRangeModifier(LongRangeModifier object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Long Sequence Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Long Sequence Modifier</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseLongSequenceModifier(LongSequenceModifier object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Modifier</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseModifier(Modifier object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>NOP Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>NOP Modifier</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseNOPModifier(NOPModifier object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Range Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Range Modifier</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseRangeModifier(RangeModifier object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>STEM Time NOP Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>STEM Time NOP Modifier</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseSTEMTimeNOPModifier(STEMTimeNOPModifier object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>STEM Time Range Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>STEM Time Range Modifier</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseSTEMTimeRangeModifier(STEMTimeRangeModifier object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>STEM Time Sequence Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>STEM Time Sequence Modifier</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseSTEMTimeSequenceModifier(STEMTimeSequenceModifier object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Sequence Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Sequence Modifier</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseSequenceModifier(SequenceModifier object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>String NOP Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>String NOP Modifier</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseStringNOPModifier(StringNOPModifier object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>String Sequence Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>String Sequence Modifier</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseStringSequenceModifier(StringSequenceModifier object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Modifiable</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Modifiable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseModifiable(Modifiable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Single Value Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Single Value Modifier</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseSingleValueModifier(SingleValueModifier object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Double Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Double Modifier</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseDoubleModifier(DoubleModifier object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Integer Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Integer Modifier</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseIntegerModifier(IntegerModifier object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Long Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Long Modifier</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseLongModifier(LongModifier object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>STEM Time Modifier</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>STEM Time Modifier</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseSTEMTimeModifier(STEMTimeModifier object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Comparable</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Comparable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public <T> T1 caseComparable(Comparable<T> object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Sanity Checker</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Sanity Checker</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseSanityChecker(SanityChecker object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Identifiable</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Identifiable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseIdentifiable(Identifiable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Decorator</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Decorator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseDecorator(Decorator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ public T1 defaultCase(EObject object) {
+ return null;
+ }
+
+} //ModifierSwitch
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/And.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/And.java
new file mode 100644
index 000000000..94a278062
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/And.java
@@ -0,0 +1,26 @@
+// And.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+/**
+ * <code>And</code> is a {@link NaryBooleanOperator} whose value is
+ * <code>true</code> only if the values of all of its operands are
+ * <code>true</code>.
+ *
+ * @see Or
+ * @see Not
+ * @model
+ */
+public interface And extends NaryBooleanOperator {
+ // Nothing
+} // And \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/BooleanExpression.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/BooleanExpression.java
new file mode 100644
index 000000000..3920be469
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/BooleanExpression.java
@@ -0,0 +1,25 @@
+// BooleanExpression.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+/**
+ * A <code>BooleanExpression</code> is a {@link Predicate} whose value is the
+ * result of evaluating a logical (boolean) expression.
+ *
+ * @see Test
+ * @see PredicateReference
+ * @model abstract="true"
+ */
+public interface BooleanExpression extends Predicate {
+ // Nothing
+} // BooleanExpression \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/BooleanOperator.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/BooleanOperator.java
new file mode 100644
index 000000000..76942103b
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/BooleanOperator.java
@@ -0,0 +1,25 @@
+// BooleanOperator.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+/**
+ * A <code>BooleanOperator</code> is a {@link BooleanExpression} whose value is
+ * the result of evaluating a boolean operator.
+ *
+ * @see UnaryBooleanOperator
+ * @see NaryBooleanOperator
+ * @model abstract="true"
+ */
+public interface BooleanOperator extends BooleanExpression {
+ // Nothing
+} // BooleanOperator \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/ElapsedTimeTest.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/ElapsedTimeTest.java
new file mode 100644
index 000000000..412cff708
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/ElapsedTimeTest.java
@@ -0,0 +1,83 @@
+// ElapsedTimeTest.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.stem.core.model.STEMTime;
+
+/**
+ * A <code>ElapsedTimeTest</code> is a {@link TimeTest} that returns a boolean
+ * value depending upon the difference between the first time value passed to
+ * {@link #evaluate(org.eclipse.stem.core.model.STEMTime, long, org.eclipse.stem.core.model.Decorator)}
+ * and subsequent values.
+ *
+ * @model
+ */
+public interface ElapsedTimeTest extends TimeTest {
+
+ /**
+ * @return the time value used for comparison purposes.
+ * @model containment="true"
+ */
+ STEMTime getReferenceTime();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.predicate.ElapsedTimeTest#getReferenceTime <em>Reference Time</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Reference Time</em>' containment reference.
+ * @see #getReferenceTime()
+ * @generated
+ */
+ void setReferenceTime(STEMTime value);
+
+ /**
+ * @return <code>true</code> if the reference time has been set
+ * @model default="false"
+ */
+ boolean isReferenceTimeValid();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.predicate.ElapsedTimeTest#isReferenceTimeValid <em>Reference Time Valid</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Reference Time Valid</em>' attribute.
+ * @see #isReferenceTimeValid()
+ * @generated
+ */
+ void setReferenceTimeValid(boolean value);
+
+ /**
+ * @return the number of milliseconds of elapsed time to be used for
+ * comparison between the reference time and the current time.
+ * @model transient="true" changeable="false"
+ */
+ long getElapsedMilliseconds();
+
+ /**
+ * @return the number of days of elapsed time to be used for the comparison
+ * between the reference time and the current time.
+ * @model default="0"
+ */
+ int getNumberofDays();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.predicate.ElapsedTimeTest#getNumberofDays <em>Numberof Days</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Numberof Days</em>' attribute.
+ * @see #getNumberofDays()
+ * @generated
+ */
+ void setNumberofDays(int value);
+
+} // ElapsedTimeTest \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/False.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/False.java
new file mode 100644
index 000000000..5489f4dff
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/False.java
@@ -0,0 +1,23 @@
+// False.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+/**
+ * <code>False</code> is a {@link Test} whose value is always <code>false</code>.
+ *
+ * @see True
+ * @model
+ */
+public interface False extends Test {
+ // Nothing
+} // False \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/IdentifiablePredicate.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/IdentifiablePredicate.java
new file mode 100644
index 000000000..f6ee5aeb2
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/IdentifiablePredicate.java
@@ -0,0 +1,31 @@
+// IdentifiablePredicate.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.stem.core.common.Identifiable;
+
+/**
+ * A <code>IdentifiablePredicate</code> represents a testable condition that is
+ * Identifiable.
+ *
+ * @model abstract="true"
+ */
+public interface IdentifiablePredicate extends Identifiable, Predicate {
+
+ /**
+ * This is the segment of the type {@link URI} that prefixes all other segments in a
+ * predicate {@link URI}s.
+ */
+ String URI_TYPE_PREDICATE_SEGMENT = "predicate";
+} // IdentifiablePredicate \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/IdentifiablePredicateExpression.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/IdentifiablePredicateExpression.java
new file mode 100644
index 000000000..f482b7db5
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/IdentifiablePredicateExpression.java
@@ -0,0 +1,24 @@
+// IdentifiablePredicateExpression.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+/**
+ * An <code>IdentifiablePredicateExpression</code> is a PredicateExpression that
+ * is Identifiable.
+ *
+ * @model
+ */
+public interface IdentifiablePredicateExpression extends IdentifiablePredicate,
+ PredicateExpression {
+ // Nothing
+} // IdentifiablePredicateExpression \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/IdentifiableTest.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/IdentifiableTest.java
new file mode 100644
index 000000000..70b133a04
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/IdentifiableTest.java
@@ -0,0 +1,22 @@
+// IdentifiableTest.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+/**
+ * A <code>IdentifiableTest<code> is a <code>IdentifiablePredicate</code> represents a testable condition.
+ *
+ * @model abstract="true"
+ */
+public interface IdentifiableTest extends IdentifiablePredicate, Test {
+ // Nothing
+} // IdentifiableTest \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/NaryBooleanOperator.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/NaryBooleanOperator.java
new file mode 100644
index 000000000..82758cceb
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/NaryBooleanOperator.java
@@ -0,0 +1,31 @@
+// NaryBooleanOperator.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * A <code>NaryBooleanOperator</code> is a {@link BooleanOperator} whose value
+ * is the result of evaluating a boolean operator that takes one or (usually)
+ * more operands.
+ *
+ * @see UnaryBooleanOperator
+ * @model abstract="true"
+ */
+public interface NaryBooleanOperator extends BooleanOperator {
+ /**
+ * @return the collection of operands to this operator
+ * @model type="Predicate" containment="true"
+ */
+ EList<Predicate> getOperands();
+} // NaryBooleanOperator \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/Not.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/Not.java
new file mode 100644
index 000000000..f868c6c2a
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/Not.java
@@ -0,0 +1,26 @@
+// Not.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+/**
+ * <code>Not</code> is a {@link UnaryBooleanOperator} whose value is
+ * <code>true</code> if the value of its operand is <code>false</code>,
+ * otherwise it is <code>false</code>.
+ *
+ * @see And
+ * @see Or
+ * @model
+ */
+public interface Not extends UnaryBooleanOperator {
+ // Nothing
+} // Not \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/Or.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/Or.java
new file mode 100644
index 000000000..462246b72
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/Or.java
@@ -0,0 +1,25 @@
+// Or.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+/**
+ * An <code>Or</code> is a {@link NaryBooleanOperator} whose value is
+ * <code>true</code> if any of the values of its operands are <code>true</code>.
+ *
+ * @see And
+ * @see Not
+ * @model
+ */
+public interface Or extends NaryBooleanOperator {
+ // Nothing
+} // Or \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/Predicate.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/Predicate.java
new file mode 100644
index 000000000..3cf51bd48
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/Predicate.java
@@ -0,0 +1,59 @@
+// Predicate.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.model.Decorator;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.trigger.Trigger;
+
+/**
+ * A <code>Predicate</code> represents a testable condition. Instances of
+ * <code>Predicate</code> are referenced by {@link Trigger}s that use the value
+ * returned by {@link #evaluate(STEMTime, long, Decorator)} to control the
+ * execution of another {@link Decorator} called the {@link Trigger}'s "action".
+ * <p>
+ * This interface definition is also an "Annotated Java Interface" that defines
+ * one class in a <a href="http://www.uml.org/">UML</a> "model". The UML class
+ * diagram for the model is in the <code>documentation</code> folder of the
+ * project. This file and the other interfaces in this Java package are
+ * processed by the Eclipse Modeling Framework (aka EMF <a
+ * href="http://org.eclipse/emf">http://org.eclipse/emf</a>). to automatically
+ * generate an implementation of the model. EMF is documented in the book <a
+ * href="http://www.awprofessional.com/bookstore/product.asp?isbn=0131425420&rl=1">Eclipse
+ * Modeling Framework </a> by Budinsky, et al.
+ * </p>
+ * @see Trigger
+ * @see Modifier
+ * @model abstract="true"
+ */
+public interface Predicate extends EObject {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ boolean evaluate(STEMTime time, long timerPeriod, Graph graph);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ void reset();
+
+} // Predicate \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/PredicateExpression.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/PredicateExpression.java
new file mode 100644
index 000000000..7bfd001c8
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/PredicateExpression.java
@@ -0,0 +1,39 @@
+// PredicateExpression.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+/**
+ * A <code>PredicateExpression</code> is a {@link BooleanExpression} whose value
+ * is the result of evaluating a {@link Predicate}.
+ *
+ * @model
+ */
+public interface PredicateExpression extends BooleanExpression {
+
+ /**
+ * @return the {@link Predicate} that determines the value of this
+ * expression.
+ * @model containment="true"
+ */
+ Predicate getPredicate();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.predicate.PredicateExpression#getPredicate <em>Predicate</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Predicate</em>' containment reference.
+ * @see #getPredicate()
+ * @generated
+ */
+ void setPredicate(Predicate value);
+} // PredicateExpression \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/PredicateFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/PredicateFactory.java
new file mode 100644
index 000000000..4e9f058b8
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/PredicateFactory.java
@@ -0,0 +1,122 @@
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.PredicatePackage
+ * @generated
+ */
+public interface PredicateFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ PredicateFactory eINSTANCE = org.eclipse.stem.core.predicate.impl.PredicateFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>And</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>And</em>'.
+ * @generated
+ */
+ And createAnd();
+
+ /**
+ * Returns a new object of class '<em>False</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>False</em>'.
+ * @generated
+ */
+ False createFalse();
+
+ /**
+ * Returns a new object of class '<em>Not</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Not</em>'.
+ * @generated
+ */
+ Not createNot();
+
+ /**
+ * Returns a new object of class '<em>Or</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Or</em>'.
+ * @generated
+ */
+ Or createOr();
+
+ /**
+ * Returns a new object of class '<em>Reference</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Reference</em>'.
+ * @generated
+ */
+ PredicateReference createPredicateReference();
+
+ /**
+ * Returns a new object of class '<em>True</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>True</em>'.
+ * @generated
+ */
+ True createTrue();
+
+ /**
+ * Returns a new object of class '<em>Expression</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Expression</em>'.
+ * @generated
+ */
+ PredicateExpression createPredicateExpression();
+
+ /**
+ * Returns a new object of class '<em>Identifiable Predicate Expression</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Identifiable Predicate Expression</em>'.
+ * @generated
+ */
+ IdentifiablePredicateExpression createIdentifiablePredicateExpression();
+
+ /**
+ * Returns a new object of class '<em>Elapsed Time Test</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Elapsed Time Test</em>'.
+ * @generated
+ */
+ ElapsedTimeTest createElapsedTimeTest();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ PredicatePackage getPredicatePackage();
+
+} //PredicateFactory
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/PredicatePackage.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/PredicatePackage.java
new file mode 100644
index 000000000..96a421153
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/PredicatePackage.java
@@ -0,0 +1,1141 @@
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.stem.core.common.CommonPackage;
+
+//import org.eclipse.stem.core.common.CommonPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.PredicateFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface PredicatePackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "predicate"; //$NON-NLS-1$
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http:///org/eclipse/stem/core/predicate.ecore"; //$NON-NLS-1$
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "org.eclipse.stem.core.predicate"; //$NON-NLS-1$
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ PredicatePackage eINSTANCE = org.eclipse.stem.core.predicate.impl.PredicatePackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.PredicateImpl <em>Predicate</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.PredicateImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getPredicate()
+ * @generated
+ */
+ int PREDICATE = 7;
+
+ /**
+ * The number of structural features of the '<em>Predicate</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PREDICATE_FEATURE_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.BooleanExpressionImpl <em>Boolean Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.BooleanExpressionImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getBooleanExpression()
+ * @generated
+ */
+ int BOOLEAN_EXPRESSION = 1;
+
+ /**
+ * The number of structural features of the '<em>Boolean Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_EXPRESSION_FEATURE_COUNT = PREDICATE_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.BooleanOperatorImpl <em>Boolean Operator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.BooleanOperatorImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getBooleanOperator()
+ * @generated
+ */
+ int BOOLEAN_OPERATOR = 2;
+
+ /**
+ * The number of structural features of the '<em>Boolean Operator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BOOLEAN_OPERATOR_FEATURE_COUNT = BOOLEAN_EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.NaryBooleanOperatorImpl <em>Nary Boolean Operator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.NaryBooleanOperatorImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getNaryBooleanOperator()
+ * @generated
+ */
+ int NARY_BOOLEAN_OPERATOR = 4;
+
+ /**
+ * The feature id for the '<em><b>Operands</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NARY_BOOLEAN_OPERATOR__OPERANDS = BOOLEAN_OPERATOR_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Nary Boolean Operator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NARY_BOOLEAN_OPERATOR_FEATURE_COUNT = BOOLEAN_OPERATOR_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.AndImpl <em>And</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.AndImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getAnd()
+ * @generated
+ */
+ int AND = 0;
+
+ /**
+ * The feature id for the '<em><b>Operands</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int AND__OPERANDS = NARY_BOOLEAN_OPERATOR__OPERANDS;
+
+ /**
+ * The number of structural features of the '<em>And</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int AND_FEATURE_COUNT = NARY_BOOLEAN_OPERATOR_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.TestImpl <em>Test</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.TestImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getTest()
+ * @generated
+ */
+ int TEST = 9;
+
+ /**
+ * The number of structural features of the '<em>Test</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TEST_FEATURE_COUNT = PREDICATE_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.FalseImpl <em>False</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.FalseImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getFalse()
+ * @generated
+ */
+ int FALSE = 3;
+
+ /**
+ * The number of structural features of the '<em>False</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int FALSE_FEATURE_COUNT = TEST_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.UnaryBooleanOperatorImpl <em>Unary Boolean Operator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.UnaryBooleanOperatorImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getUnaryBooleanOperator()
+ * @generated
+ */
+ int UNARY_BOOLEAN_OPERATOR = 11;
+
+ /**
+ * The feature id for the '<em><b>Operand</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int UNARY_BOOLEAN_OPERATOR__OPERAND = BOOLEAN_OPERATOR_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Unary Boolean Operator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int UNARY_BOOLEAN_OPERATOR_FEATURE_COUNT = BOOLEAN_OPERATOR_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.NotImpl <em>Not</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.NotImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getNot()
+ * @generated
+ */
+ int NOT = 5;
+
+ /**
+ * The feature id for the '<em><b>Operand</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NOT__OPERAND = UNARY_BOOLEAN_OPERATOR__OPERAND;
+
+ /**
+ * The number of structural features of the '<em>Not</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NOT_FEATURE_COUNT = UNARY_BOOLEAN_OPERATOR_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.OrImpl <em>Or</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.OrImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getOr()
+ * @generated
+ */
+ int OR = 6;
+
+ /**
+ * The feature id for the '<em><b>Operands</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OR__OPERANDS = NARY_BOOLEAN_OPERATOR__OPERANDS;
+
+ /**
+ * The number of structural features of the '<em>Or</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OR_FEATURE_COUNT = NARY_BOOLEAN_OPERATOR_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.PredicateReferenceImpl <em>Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.PredicateReferenceImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getPredicateReference()
+ * @generated
+ */
+ int PREDICATE_REFERENCE = 8;
+
+ /**
+ * The feature id for the '<em><b>Predicate</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PREDICATE_REFERENCE__PREDICATE = PREDICATE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Reference</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PREDICATE_REFERENCE_FEATURE_COUNT = PREDICATE_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.TrueImpl <em>True</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.TrueImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getTrue()
+ * @generated
+ */
+ int TRUE = 10;
+
+ /**
+ * The number of structural features of the '<em>True</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRUE_FEATURE_COUNT = TEST_FEATURE_COUNT + 0;
+
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.PredicateExpressionImpl <em>Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.PredicateExpressionImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getPredicateExpression()
+ * @generated
+ */
+ int PREDICATE_EXPRESSION = 12;
+
+ /**
+ * The feature id for the '<em><b>Predicate</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PREDICATE_EXPRESSION__PREDICATE = BOOLEAN_EXPRESSION_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PREDICATE_EXPRESSION_FEATURE_COUNT = BOOLEAN_EXPRESSION_FEATURE_COUNT + 1;
+
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.IdentifiablePredicateImpl <em>Identifiable Predicate</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.IdentifiablePredicateImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getIdentifiablePredicate()
+ * @generated
+ */
+ int IDENTIFIABLE_PREDICATE = 13;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIABLE_PREDICATE__URI = CommonPackage.IDENTIFIABLE__URI;
+
+ /**
+ * The feature id for the '<em><b>Type URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIABLE_PREDICATE__TYPE_URI = CommonPackage.IDENTIFIABLE__TYPE_URI;
+
+ /**
+ * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIABLE_PREDICATE__DUBLIN_CORE = CommonPackage.IDENTIFIABLE__DUBLIN_CORE;
+
+ /**
+ * The number of structural features of the '<em>Identifiable Predicate</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIABLE_PREDICATE_FEATURE_COUNT = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.IdentifiablePredicateExpressionImpl <em>Identifiable Predicate Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.IdentifiablePredicateExpressionImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getIdentifiablePredicateExpression()
+ * @generated
+ */
+ int IDENTIFIABLE_PREDICATE_EXPRESSION = 14;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIABLE_PREDICATE_EXPRESSION__URI = IDENTIFIABLE_PREDICATE__URI;
+
+ /**
+ * The feature id for the '<em><b>Type URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIABLE_PREDICATE_EXPRESSION__TYPE_URI = IDENTIFIABLE_PREDICATE__TYPE_URI;
+
+ /**
+ * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIABLE_PREDICATE_EXPRESSION__DUBLIN_CORE = IDENTIFIABLE_PREDICATE__DUBLIN_CORE;
+
+ /**
+ * The feature id for the '<em><b>Predicate</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIABLE_PREDICATE_EXPRESSION__PREDICATE = IDENTIFIABLE_PREDICATE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Identifiable Predicate Expression</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIABLE_PREDICATE_EXPRESSION_FEATURE_COUNT = IDENTIFIABLE_PREDICATE_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.IdentifiableTestImpl <em>Identifiable Test</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.IdentifiableTestImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getIdentifiableTest()
+ * @generated
+ */
+ int IDENTIFIABLE_TEST = 15;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIABLE_TEST__URI = IDENTIFIABLE_PREDICATE__URI;
+
+ /**
+ * The feature id for the '<em><b>Type URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIABLE_TEST__TYPE_URI = IDENTIFIABLE_PREDICATE__TYPE_URI;
+
+ /**
+ * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIABLE_TEST__DUBLIN_CORE = IDENTIFIABLE_PREDICATE__DUBLIN_CORE;
+
+ /**
+ * The number of structural features of the '<em>Identifiable Test</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IDENTIFIABLE_TEST_FEATURE_COUNT = IDENTIFIABLE_PREDICATE_FEATURE_COUNT + 0;
+
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.TimeTestImpl <em>Time Test</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.TimeTestImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getTimeTest()
+ * @generated
+ */
+ int TIME_TEST = 16;
+
+ /**
+ * The number of structural features of the '<em>Time Test</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TIME_TEST_FEATURE_COUNT = TEST_FEATURE_COUNT + 0;
+
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.predicate.impl.ElapsedTimeTestImpl <em>Elapsed Time Test</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.ElapsedTimeTestImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getElapsedTimeTest()
+ * @generated
+ */
+ int ELAPSED_TIME_TEST = 17;
+
+ /**
+ * The feature id for the '<em><b>Reference Time Valid</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ELAPSED_TIME_TEST__REFERENCE_TIME_VALID = TIME_TEST_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Elapsed Milliseconds</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ELAPSED_TIME_TEST__ELAPSED_MILLISECONDS = TIME_TEST_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Numberof Days</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ELAPSED_TIME_TEST__NUMBEROF_DAYS = TIME_TEST_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Reference Time</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ELAPSED_TIME_TEST__REFERENCE_TIME = TIME_TEST_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>Elapsed Time Test</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ELAPSED_TIME_TEST_FEATURE_COUNT = TIME_TEST_FEATURE_COUNT + 4;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.And <em>And</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>And</em>'.
+ * @see org.eclipse.stem.core.predicate.And
+ * @generated
+ */
+ EClass getAnd();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.BooleanExpression <em>Boolean Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Boolean Expression</em>'.
+ * @see org.eclipse.stem.core.predicate.BooleanExpression
+ * @generated
+ */
+ EClass getBooleanExpression();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.BooleanOperator <em>Boolean Operator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Boolean Operator</em>'.
+ * @see org.eclipse.stem.core.predicate.BooleanOperator
+ * @generated
+ */
+ EClass getBooleanOperator();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.False <em>False</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>False</em>'.
+ * @see org.eclipse.stem.core.predicate.False
+ * @generated
+ */
+ EClass getFalse();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.NaryBooleanOperator <em>Nary Boolean Operator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Nary Boolean Operator</em>'.
+ * @see org.eclipse.stem.core.predicate.NaryBooleanOperator
+ * @generated
+ */
+ EClass getNaryBooleanOperator();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.stem.core.predicate.NaryBooleanOperator#getOperands <em>Operands</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Operands</em>'.
+ * @see org.eclipse.stem.core.predicate.NaryBooleanOperator#getOperands()
+ * @see #getNaryBooleanOperator()
+ * @generated
+ */
+ EReference getNaryBooleanOperator_Operands();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.Not <em>Not</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Not</em>'.
+ * @see org.eclipse.stem.core.predicate.Not
+ * @generated
+ */
+ EClass getNot();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.Or <em>Or</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Or</em>'.
+ * @see org.eclipse.stem.core.predicate.Or
+ * @generated
+ */
+ EClass getOr();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.Predicate <em>Predicate</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Predicate</em>'.
+ * @see org.eclipse.stem.core.predicate.Predicate
+ * @generated
+ */
+ EClass getPredicate();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.PredicateReference <em>Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Reference</em>'.
+ * @see org.eclipse.stem.core.predicate.PredicateReference
+ * @generated
+ */
+ EClass getPredicateReference();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.core.predicate.PredicateReference#getPredicate <em>Predicate</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Predicate</em>'.
+ * @see org.eclipse.stem.core.predicate.PredicateReference#getPredicate()
+ * @see #getPredicateReference()
+ * @generated
+ */
+ EReference getPredicateReference_Predicate();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.Test <em>Test</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Test</em>'.
+ * @see org.eclipse.stem.core.predicate.Test
+ * @generated
+ */
+ EClass getTest();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.True <em>True</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>True</em>'.
+ * @see org.eclipse.stem.core.predicate.True
+ * @generated
+ */
+ EClass getTrue();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.UnaryBooleanOperator <em>Unary Boolean Operator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Unary Boolean Operator</em>'.
+ * @see org.eclipse.stem.core.predicate.UnaryBooleanOperator
+ * @generated
+ */
+ EClass getUnaryBooleanOperator();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.stem.core.predicate.UnaryBooleanOperator#getOperand <em>Operand</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Operand</em>'.
+ * @see org.eclipse.stem.core.predicate.UnaryBooleanOperator#getOperand()
+ * @see #getUnaryBooleanOperator()
+ * @generated
+ */
+ EReference getUnaryBooleanOperator_Operand();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.PredicateExpression <em>Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Expression</em>'.
+ * @see org.eclipse.stem.core.predicate.PredicateExpression
+ * @generated
+ */
+ EClass getPredicateExpression();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.stem.core.predicate.PredicateExpression#getPredicate <em>Predicate</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Predicate</em>'.
+ * @see org.eclipse.stem.core.predicate.PredicateExpression#getPredicate()
+ * @see #getPredicateExpression()
+ * @generated
+ */
+ EReference getPredicateExpression_Predicate();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.IdentifiablePredicate <em>Identifiable Predicate</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Identifiable Predicate</em>'.
+ * @see org.eclipse.stem.core.predicate.IdentifiablePredicate
+ * @generated
+ */
+ EClass getIdentifiablePredicate();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.IdentifiablePredicateExpression <em>Identifiable Predicate Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Identifiable Predicate Expression</em>'.
+ * @see org.eclipse.stem.core.predicate.IdentifiablePredicateExpression
+ * @generated
+ */
+ EClass getIdentifiablePredicateExpression();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.IdentifiableTest <em>Identifiable Test</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Identifiable Test</em>'.
+ * @see org.eclipse.stem.core.predicate.IdentifiableTest
+ * @generated
+ */
+ EClass getIdentifiableTest();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.TimeTest <em>Time Test</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Time Test</em>'.
+ * @see org.eclipse.stem.core.predicate.TimeTest
+ * @generated
+ */
+ EClass getTimeTest();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.predicate.ElapsedTimeTest <em>Elapsed Time Test</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Elapsed Time Test</em>'.
+ * @see org.eclipse.stem.core.predicate.ElapsedTimeTest
+ * @generated
+ */
+ EClass getElapsedTimeTest();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.predicate.ElapsedTimeTest#isReferenceTimeValid <em>Reference Time Valid</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Reference Time Valid</em>'.
+ * @see org.eclipse.stem.core.predicate.ElapsedTimeTest#isReferenceTimeValid()
+ * @see #getElapsedTimeTest()
+ * @generated
+ */
+ EAttribute getElapsedTimeTest_ReferenceTimeValid();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.predicate.ElapsedTimeTest#getElapsedMilliseconds <em>Elapsed Milliseconds</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Elapsed Milliseconds</em>'.
+ * @see org.eclipse.stem.core.predicate.ElapsedTimeTest#getElapsedMilliseconds()
+ * @see #getElapsedTimeTest()
+ * @generated
+ */
+ EAttribute getElapsedTimeTest_ElapsedMilliseconds();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.predicate.ElapsedTimeTest#getNumberofDays <em>Numberof Days</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Numberof Days</em>'.
+ * @see org.eclipse.stem.core.predicate.ElapsedTimeTest#getNumberofDays()
+ * @see #getElapsedTimeTest()
+ * @generated
+ */
+ EAttribute getElapsedTimeTest_NumberofDays();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.stem.core.predicate.ElapsedTimeTest#getReferenceTime <em>Reference Time</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Reference Time</em>'.
+ * @see org.eclipse.stem.core.predicate.ElapsedTimeTest#getReferenceTime()
+ * @see #getElapsedTimeTest()
+ * @generated
+ */
+ EReference getElapsedTimeTest_ReferenceTime();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ PredicateFactory getPredicateFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.AndImpl <em>And</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.AndImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getAnd()
+ * @generated
+ */
+ EClass AND = eINSTANCE.getAnd();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.BooleanExpressionImpl <em>Boolean Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.BooleanExpressionImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getBooleanExpression()
+ * @generated
+ */
+ EClass BOOLEAN_EXPRESSION = eINSTANCE.getBooleanExpression();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.BooleanOperatorImpl <em>Boolean Operator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.BooleanOperatorImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getBooleanOperator()
+ * @generated
+ */
+ EClass BOOLEAN_OPERATOR = eINSTANCE.getBooleanOperator();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.FalseImpl <em>False</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.FalseImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getFalse()
+ * @generated
+ */
+ EClass FALSE = eINSTANCE.getFalse();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.NaryBooleanOperatorImpl <em>Nary Boolean Operator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.NaryBooleanOperatorImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getNaryBooleanOperator()
+ * @generated
+ */
+ EClass NARY_BOOLEAN_OPERATOR = eINSTANCE.getNaryBooleanOperator();
+
+ /**
+ * The meta object literal for the '<em><b>Operands</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference NARY_BOOLEAN_OPERATOR__OPERANDS = eINSTANCE.getNaryBooleanOperator_Operands();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.NotImpl <em>Not</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.NotImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getNot()
+ * @generated
+ */
+ EClass NOT = eINSTANCE.getNot();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.OrImpl <em>Or</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.OrImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getOr()
+ * @generated
+ */
+ EClass OR = eINSTANCE.getOr();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.PredicateImpl <em>Predicate</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.PredicateImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getPredicate()
+ * @generated
+ */
+ EClass PREDICATE = eINSTANCE.getPredicate();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.PredicateReferenceImpl <em>Reference</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.PredicateReferenceImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getPredicateReference()
+ * @generated
+ */
+ EClass PREDICATE_REFERENCE = eINSTANCE.getPredicateReference();
+
+ /**
+ * The meta object literal for the '<em><b>Predicate</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PREDICATE_REFERENCE__PREDICATE = eINSTANCE.getPredicateReference_Predicate();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.TestImpl <em>Test</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.TestImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getTest()
+ * @generated
+ */
+ EClass TEST = eINSTANCE.getTest();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.TrueImpl <em>True</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.TrueImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getTrue()
+ * @generated
+ */
+ EClass TRUE = eINSTANCE.getTrue();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.UnaryBooleanOperatorImpl <em>Unary Boolean Operator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.UnaryBooleanOperatorImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getUnaryBooleanOperator()
+ * @generated
+ */
+ EClass UNARY_BOOLEAN_OPERATOR = eINSTANCE.getUnaryBooleanOperator();
+
+ /**
+ * The meta object literal for the '<em><b>Operand</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference UNARY_BOOLEAN_OPERATOR__OPERAND = eINSTANCE.getUnaryBooleanOperator_Operand();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.PredicateExpressionImpl <em>Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.PredicateExpressionImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getPredicateExpression()
+ * @generated
+ */
+ EClass PREDICATE_EXPRESSION = eINSTANCE.getPredicateExpression();
+
+ /**
+ * The meta object literal for the '<em><b>Predicate</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PREDICATE_EXPRESSION__PREDICATE = eINSTANCE.getPredicateExpression_Predicate();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.IdentifiablePredicateImpl <em>Identifiable Predicate</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.IdentifiablePredicateImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getIdentifiablePredicate()
+ * @generated
+ */
+ EClass IDENTIFIABLE_PREDICATE = eINSTANCE.getIdentifiablePredicate();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.IdentifiablePredicateExpressionImpl <em>Identifiable Predicate Expression</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.IdentifiablePredicateExpressionImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getIdentifiablePredicateExpression()
+ * @generated
+ */
+ EClass IDENTIFIABLE_PREDICATE_EXPRESSION = eINSTANCE.getIdentifiablePredicateExpression();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.IdentifiableTestImpl <em>Identifiable Test</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.IdentifiableTestImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getIdentifiableTest()
+ * @generated
+ */
+ EClass IDENTIFIABLE_TEST = eINSTANCE.getIdentifiableTest();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.TimeTestImpl <em>Time Test</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.TimeTestImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getTimeTest()
+ * @generated
+ */
+ EClass TIME_TEST = eINSTANCE.getTimeTest();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.predicate.impl.ElapsedTimeTestImpl <em>Elapsed Time Test</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.impl.ElapsedTimeTestImpl
+ * @see org.eclipse.stem.core.predicate.impl.PredicatePackageImpl#getElapsedTimeTest()
+ * @generated
+ */
+ EClass ELAPSED_TIME_TEST = eINSTANCE.getElapsedTimeTest();
+
+ /**
+ * The meta object literal for the '<em><b>Reference Time Valid</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute ELAPSED_TIME_TEST__REFERENCE_TIME_VALID = eINSTANCE.getElapsedTimeTest_ReferenceTimeValid();
+
+ /**
+ * The meta object literal for the '<em><b>Elapsed Milliseconds</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute ELAPSED_TIME_TEST__ELAPSED_MILLISECONDS = eINSTANCE.getElapsedTimeTest_ElapsedMilliseconds();
+
+ /**
+ * The meta object literal for the '<em><b>Numberof Days</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute ELAPSED_TIME_TEST__NUMBEROF_DAYS = eINSTANCE.getElapsedTimeTest_NumberofDays();
+
+ /**
+ * The meta object literal for the '<em><b>Reference Time</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ELAPSED_TIME_TEST__REFERENCE_TIME = eINSTANCE.getElapsedTimeTest_ReferenceTime();
+
+ }
+
+} //PredicatePackage
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/PredicateReference.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/PredicateReference.java
new file mode 100644
index 000000000..09f76f718
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/PredicateReference.java
@@ -0,0 +1,38 @@
+// PredicateReference.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+/**
+ * An <code>PredicateReference</code> is a {@link Predicate} whose value is the
+ * result of evaluating a referenced (i.e., non-containment) {@link Predicate}.
+ *
+ * @see Test
+ * @see BooleanExpression
+ * @model
+ */
+public interface PredicateReference extends Predicate {
+ /**
+ * @model containment="false"
+ */
+ Predicate getPredicate();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.predicate.PredicateReference#getPredicate <em>Predicate</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Predicate</em>' reference.
+ * @see #getPredicate()
+ * @generated
+ */
+ void setPredicate(Predicate value);
+} // PredicateReference \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/Test.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/Test.java
new file mode 100644
index 000000000..9c5f0ce23
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/Test.java
@@ -0,0 +1,26 @@
+// Test.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+/**
+ * A <code>Test</code> is a {@link Predicate} whose value is the result of
+ * executing underlying code rather than from the evaluation of some boolean
+ * expression.
+ *
+ * @see BooleanExpression
+ * @see PredicateReference
+ * @model abstract="true"
+ */
+public interface Test extends Predicate {
+ // Nothing
+} // Test \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/TimeTest.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/TimeTest.java
new file mode 100644
index 000000000..67914e3be
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/TimeTest.java
@@ -0,0 +1,26 @@
+// TimeTest.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+
+/**
+ * A <code>TimeTest</code> is a <code>Test</code> that returns a boolean value
+ * depending upon the comparison of the time values passed to
+ * {@link #evaluate(org.eclipse.stem.core.model.STEMTime, long, org.eclipse.stem.core.model.Decorator)}
+ * and a reference time value.
+ *
+ * @model abstract="true"
+ */
+public interface TimeTest extends Test {
+ // Nothing
+} // TimeTest \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/True.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/True.java
new file mode 100644
index 000000000..a0412ad9d
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/True.java
@@ -0,0 +1,23 @@
+// True.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+/**
+ * <code>True</code> is a {@link Test} whose value is always <code>true</code>.
+ *
+ * @see False
+ * @model
+ */
+public interface True extends Test {
+ // Nothing
+} // True \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/UnaryBooleanOperator.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/UnaryBooleanOperator.java
new file mode 100644
index 000000000..4b9a582c1
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/UnaryBooleanOperator.java
@@ -0,0 +1,39 @@
+// UnaryBooleanOperator.java
+package org.eclipse.stem.core.predicate;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+/**
+ * An <code>UnaryBooleanOperator</code> is a {@link BooleanOperator} whose value
+ * is the result of evaluating a boolean operator that takes only a single
+ * operand.
+ *
+ * @see NaryBooleanOperator
+ * @model abstract="true"
+ */
+public interface UnaryBooleanOperator extends BooleanOperator {
+ /**
+ * @return the operand of the operator
+ * @model containment="true"
+ */
+ Predicate getOperand();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.predicate.UnaryBooleanOperator#getOperand <em>Operand</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Operand</em>' containment reference.
+ * @see #getOperand()
+ * @generated
+ */
+ void setOperand(Predicate value);
+} // UnaryBooleanOperator \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/AndImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/AndImpl.java
new file mode 100644
index 000000000..1f38560bc
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/AndImpl.java
@@ -0,0 +1,66 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.predicate.And;
+import org.eclipse.stem.core.predicate.Predicate;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>And</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class AndImpl extends NaryBooleanOperatorImpl implements And {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AndImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.AND;
+ }
+
+ /**
+ * @see org.eclipse.stem.core.predicate.impl.PredicateImpl#evaluate(org.eclipse.stem.core.model.STEMTime, long, org.eclipse.stem.core.model.Decorator)
+ */
+ @Override
+ public boolean evaluate(STEMTime time, long timerPeriod, Graph graph) {
+ boolean retValue = true;
+ for (Predicate predicate : getOperands()) {
+ retValue = predicate.evaluate(time, timerPeriod, graph);
+ // Is it false
+ if (!retValue) {
+ // Yes
+ break;
+ } // if
+ } // for each Predicate
+ return retValue;
+ } // evaluate
+} //AndImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/BooleanExpressionImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/BooleanExpressionImpl.java
new file mode 100644
index 000000000..db9745a95
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/BooleanExpressionImpl.java
@@ -0,0 +1,47 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.predicate.BooleanExpression;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Boolean Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class BooleanExpressionImpl extends PredicateImpl implements BooleanExpression {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected BooleanExpressionImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.BOOLEAN_EXPRESSION;
+ }
+
+} //BooleanExpressionImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/BooleanOperatorImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/BooleanOperatorImpl.java
new file mode 100644
index 000000000..b872cdd9a
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/BooleanOperatorImpl.java
@@ -0,0 +1,47 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.predicate.BooleanOperator;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Boolean Operator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class BooleanOperatorImpl extends BooleanExpressionImpl implements BooleanOperator {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected BooleanOperatorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.BOOLEAN_OPERATOR;
+ }
+
+} //BooleanOperatorImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/ElapsedTimeTestImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/ElapsedTimeTestImpl.java
new file mode 100644
index 000000000..2f5fea038
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/ElapsedTimeTestImpl.java
@@ -0,0 +1,374 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.model.ModelFactory;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.predicate.ElapsedTimeTest;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Elapsed Time Test</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.predicate.impl.ElapsedTimeTestImpl#isReferenceTimeValid <em>Reference Time Valid</em>}</li>
+ * <li>{@link org.eclipse.stem.core.predicate.impl.ElapsedTimeTestImpl#getElapsedMilliseconds <em>Elapsed Milliseconds</em>}</li>
+ * <li>{@link org.eclipse.stem.core.predicate.impl.ElapsedTimeTestImpl#getNumberofDays <em>Numberof Days</em>}</li>
+ * <li>{@link org.eclipse.stem.core.predicate.impl.ElapsedTimeTestImpl#getReferenceTime <em>Reference Time</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ElapsedTimeTestImpl extends TimeTestImpl implements ElapsedTimeTest {
+ /**
+ * The default value of the '{@link #isReferenceTimeValid() <em>Reference Time Valid</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isReferenceTimeValid()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean REFERENCE_TIME_VALID_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isReferenceTimeValid() <em>Reference Time Valid</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isReferenceTimeValid()
+ * @generated
+ * @ordered
+ */
+ protected boolean referenceTimeValid = REFERENCE_TIME_VALID_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getElapsedMilliseconds() <em>Elapsed Milliseconds</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getElapsedMilliseconds()
+ * @generated
+ * @ordered
+ */
+ protected static final long ELAPSED_MILLISECONDS_EDEFAULT = 0L;
+
+ /**
+ * The cached value of the '{@link #getElapsedMilliseconds() <em>Elapsed Milliseconds</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getElapsedMilliseconds()
+ * @generated
+ * @ordered
+ */
+ protected long elapsedMilliseconds = ELAPSED_MILLISECONDS_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getNumberofDays() <em>Numberof Days</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNumberofDays()
+ * @generated
+ * @ordered
+ */
+ protected static final int NUMBEROF_DAYS_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getNumberofDays() <em>Numberof Days</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNumberofDays()
+ * @generated
+ * @ordered
+ */
+ protected int numberofDays = NUMBEROF_DAYS_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getReferenceTime() <em>Reference Time</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getReferenceTime()
+ * @generated
+ * @ordered
+ */
+ protected STEMTime referenceTime;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected ElapsedTimeTestImpl() {
+ super();
+ setReferenceTime(ModelFactory.eINSTANCE.createSTEMTime());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.ELAPSED_TIME_TEST;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isReferenceTimeValid() {
+ return referenceTimeValid;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setReferenceTimeValid(boolean newReferenceTimeValid) {
+ boolean oldReferenceTimeValid = referenceTimeValid;
+ referenceTimeValid = newReferenceTimeValid;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PredicatePackage.ELAPSED_TIME_TEST__REFERENCE_TIME_VALID, oldReferenceTimeValid, referenceTimeValid));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public long getElapsedMilliseconds() {
+ return elapsedMilliseconds;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getNumberofDays() {
+ return numberofDays;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setNumberofDays(int newNumberofDays) {
+ int oldNumberofDays = getNumberofDays();
+ numberofDays = newNumberofDays;
+
+ elapsedMilliseconds = getNumberofDays() * STEMTime.Units.DAY.getMilliseconds();
+
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PredicatePackage.ELAPSED_TIME_TEST__NUMBEROF_DAYS, oldNumberofDays, numberofDays));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public STEMTime getReferenceTime() {
+ return referenceTime;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetReferenceTime(STEMTime newReferenceTime, NotificationChain msgs) {
+ STEMTime oldReferenceTime = referenceTime;
+ referenceTime = newReferenceTime;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, PredicatePackage.ELAPSED_TIME_TEST__REFERENCE_TIME, oldReferenceTime, newReferenceTime);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setReferenceTime(STEMTime newReferenceTime) {
+ if (newReferenceTime != referenceTime) {
+ NotificationChain msgs = null;
+ if (referenceTime != null)
+ msgs = ((InternalEObject)referenceTime).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - PredicatePackage.ELAPSED_TIME_TEST__REFERENCE_TIME, null, msgs);
+ if (newReferenceTime != null)
+ msgs = ((InternalEObject)newReferenceTime).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - PredicatePackage.ELAPSED_TIME_TEST__REFERENCE_TIME, null, msgs);
+ msgs = basicSetReferenceTime(newReferenceTime, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PredicatePackage.ELAPSED_TIME_TEST__REFERENCE_TIME, newReferenceTime, newReferenceTime));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case PredicatePackage.ELAPSED_TIME_TEST__REFERENCE_TIME:
+ return basicSetReferenceTime(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PredicatePackage.ELAPSED_TIME_TEST__REFERENCE_TIME_VALID:
+ return isReferenceTimeValid();
+ case PredicatePackage.ELAPSED_TIME_TEST__ELAPSED_MILLISECONDS:
+ return getElapsedMilliseconds();
+ case PredicatePackage.ELAPSED_TIME_TEST__NUMBEROF_DAYS:
+ return getNumberofDays();
+ case PredicatePackage.ELAPSED_TIME_TEST__REFERENCE_TIME:
+ return getReferenceTime();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PredicatePackage.ELAPSED_TIME_TEST__REFERENCE_TIME_VALID:
+ setReferenceTimeValid((Boolean)newValue);
+ return;
+ case PredicatePackage.ELAPSED_TIME_TEST__NUMBEROF_DAYS:
+ setNumberofDays((Integer)newValue);
+ return;
+ case PredicatePackage.ELAPSED_TIME_TEST__REFERENCE_TIME:
+ setReferenceTime((STEMTime)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PredicatePackage.ELAPSED_TIME_TEST__REFERENCE_TIME_VALID:
+ setReferenceTimeValid(REFERENCE_TIME_VALID_EDEFAULT);
+ return;
+ case PredicatePackage.ELAPSED_TIME_TEST__NUMBEROF_DAYS:
+ setNumberofDays(NUMBEROF_DAYS_EDEFAULT);
+ return;
+ case PredicatePackage.ELAPSED_TIME_TEST__REFERENCE_TIME:
+ setReferenceTime((STEMTime)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PredicatePackage.ELAPSED_TIME_TEST__REFERENCE_TIME_VALID:
+ return referenceTimeValid != REFERENCE_TIME_VALID_EDEFAULT;
+ case PredicatePackage.ELAPSED_TIME_TEST__ELAPSED_MILLISECONDS:
+ return elapsedMilliseconds != ELAPSED_MILLISECONDS_EDEFAULT;
+ case PredicatePackage.ELAPSED_TIME_TEST__NUMBEROF_DAYS:
+ return numberofDays != NUMBEROF_DAYS_EDEFAULT;
+ case PredicatePackage.ELAPSED_TIME_TEST__REFERENCE_TIME:
+ return referenceTime != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (referenceTimeValid: "); //$NON-NLS-1$
+ result.append(referenceTimeValid);
+ result.append(", elapsedMilliseconds: "); //$NON-NLS-1$
+ result.append(elapsedMilliseconds);
+ result.append(", numberofDays: "); //$NON-NLS-1$
+ result.append(numberofDays);
+ result.append(')');
+ return result.toString();
+ }
+
+ /**
+ * @see org.eclipse.stem.core.predicate.impl.PredicateImpl#evaluate(org.eclipse.stem.core.model.STEMTime, long, org.eclipse.stem.core.model.Decorator)
+ */
+ @Override
+ public boolean evaluate(STEMTime time, long timerPeriod, Graph graph) {
+ boolean retValue = false;
+ // Is the reference time valid?
+ if (isReferenceTimeValid()) {
+ // Yes
+ final long elapsedTimeMS = time.getTime().getTime() - getReferenceTime().getTime().getTime();
+ // Has enough time gone by?
+ retValue = elapsedTimeMS >= getElapsedMilliseconds();
+ } // if reference time valid?
+ else {
+ // No
+ // This must be the first time this has been called so this must be
+ // the start of the simulation. Remember the time value passed in as
+ // the reference value.
+
+ STEMTime newTime = (STEMTime)EcoreUtil.copy(time);
+ newTime = newTime.addIncrement(-timerPeriod); // Substract one time period
+ setReferenceTime(newTime);
+ setReferenceTimeValid(true);
+ } // else
+
+ return retValue;
+ } // evaluate
+
+} //ElapsedTimeTestImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/FalseImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/FalseImpl.java
new file mode 100644
index 000000000..cbcf787a5
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/FalseImpl.java
@@ -0,0 +1,57 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.predicate.False;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>False</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class FalseImpl extends TestImpl implements False {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FalseImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.FALSE;
+ }
+
+ /**
+ * @see org.eclipse.stem.core.predicate.impl.PredicateImpl#evaluate(org.eclipse.stem.core.model.STEMTime, long, org.eclipse.stem.core.model.Decorator)
+ */
+ @Override
+ public boolean evaluate(STEMTime time, long timerPeriod, Graph graph) {
+ return false;
+ }
+
+} //FalseImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/IdentifiablePredicateExpressionImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/IdentifiablePredicateExpressionImpl.java
new file mode 100644
index 000000000..90e2715f0
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/IdentifiablePredicateExpressionImpl.java
@@ -0,0 +1,270 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.predicate.BooleanExpression;
+import org.eclipse.stem.core.predicate.IdentifiablePredicateExpression;
+import org.eclipse.stem.core.predicate.Predicate;
+import org.eclipse.stem.core.predicate.PredicateExpression;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Identifiable Predicate Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.predicate.impl.IdentifiablePredicateExpressionImpl#getPredicate <em>Predicate</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class IdentifiablePredicateExpressionImpl extends IdentifiablePredicateImpl implements IdentifiablePredicateExpression {
+ /**
+ * The cached value of the '{@link #getPredicate() <em>Predicate</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPredicate()
+ * @generated
+ * @ordered
+ */
+ protected Predicate predicate;
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IdentifiablePredicateExpressionImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void reset() {
+ if(this.getPredicate() != null)
+ this.getPredicate().reset();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.IDENTIFIABLE_PREDICATE_EXPRESSION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Predicate getPredicate() {
+ return predicate;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetPredicate(Predicate newPredicate, NotificationChain msgs) {
+ Predicate oldPredicate = predicate;
+ predicate = newPredicate;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, PredicatePackage.IDENTIFIABLE_PREDICATE_EXPRESSION__PREDICATE, oldPredicate, newPredicate);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPredicate(Predicate newPredicate) {
+ if (newPredicate != predicate) {
+ NotificationChain msgs = null;
+ if (predicate != null)
+ msgs = ((InternalEObject)predicate).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - PredicatePackage.IDENTIFIABLE_PREDICATE_EXPRESSION__PREDICATE, null, msgs);
+ if (newPredicate != null)
+ msgs = ((InternalEObject)newPredicate).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - PredicatePackage.IDENTIFIABLE_PREDICATE_EXPRESSION__PREDICATE, null, msgs);
+ msgs = basicSetPredicate(newPredicate, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PredicatePackage.IDENTIFIABLE_PREDICATE_EXPRESSION__PREDICATE, newPredicate, newPredicate));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case PredicatePackage.IDENTIFIABLE_PREDICATE_EXPRESSION__PREDICATE:
+ return basicSetPredicate(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PredicatePackage.IDENTIFIABLE_PREDICATE_EXPRESSION__PREDICATE:
+ return getPredicate();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PredicatePackage.IDENTIFIABLE_PREDICATE_EXPRESSION__PREDICATE:
+ setPredicate((Predicate)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PredicatePackage.IDENTIFIABLE_PREDICATE_EXPRESSION__PREDICATE:
+ setPredicate((Predicate)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PredicatePackage.IDENTIFIABLE_PREDICATE_EXPRESSION__PREDICATE:
+ return predicate != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == BooleanExpression.class) {
+ switch (derivedFeatureID) {
+ default: return -1;
+ }
+ }
+ if (baseClass == PredicateExpression.class) {
+ switch (derivedFeatureID) {
+ case PredicatePackage.IDENTIFIABLE_PREDICATE_EXPRESSION__PREDICATE: return PredicatePackage.PREDICATE_EXPRESSION__PREDICATE;
+ default: return -1;
+ }
+ }
+ return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+ if (baseClass == BooleanExpression.class) {
+ switch (baseFeatureID) {
+ default: return -1;
+ }
+ }
+ if (baseClass == PredicateExpression.class) {
+ switch (baseFeatureID) {
+ case PredicatePackage.PREDICATE_EXPRESSION__PREDICATE: return PredicatePackage.IDENTIFIABLE_PREDICATE_EXPRESSION__PREDICATE;
+ default: return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * @see Identifiable#compareTo(Identifiable)
+ */
+ @Override
+ public int compareTo(Identifiable o) {
+ final ComposedAdapterFactory itemProviderFactory = new ComposedAdapterFactory(
+ ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+ final IItemLabelProvider lp1 = (IItemLabelProvider) itemProviderFactory.adapt(
+ this, IItemLabelProvider.class);
+ final IItemLabelProvider lp2 = (IItemLabelProvider) itemProviderFactory.adapt(o,
+ IItemLabelProvider.class);
+ return lp1.getText(this).compareTo(lp2.getText(o));
+ } // compareTo
+
+ /**
+ * @see org.eclipse.stem.core.predicate.impl.IdentifiablePredicateImpl#evaluate(org.eclipse.stem.core.model.STEMTime, long, org.eclipse.stem.core.model.Decorator)
+ */
+ @Override
+ public boolean evaluate(STEMTime time, long timerPeriod, Graph graph) {
+ boolean retValue = false;
+ final Predicate predicate = getPredicate();
+ // Was a predicate supplied?
+ if (predicate != null) {
+ // Yes
+ retValue = predicate.evaluate(time, timerPeriod, graph);
+ }
+ return retValue;
+ } // evaluate
+
+} //IdentifiablePredicateExpressionImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/IdentifiablePredicateImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/IdentifiablePredicateImpl.java
new file mode 100644
index 000000000..319a5f5ee
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/IdentifiablePredicateImpl.java
@@ -0,0 +1,75 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.STEMURI;
+import org.eclipse.stem.core.common.impl.IdentifiableImpl;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.predicate.IdentifiablePredicate;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Identifiable Predicate</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class IdentifiablePredicateImpl extends IdentifiableImpl implements IdentifiablePredicate {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected IdentifiablePredicateImpl() {
+ super();
+ setURI(STEMURI.createURI(URI_TYPE_PREDICATE_SEGMENT + "/"
+ + STEMURI.generateUniquePart()));
+ setTypeURI(STEMURI.PREDICATE_TYPE_URI);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.IDENTIFIABLE_PREDICATE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean evaluate(STEMTime time, long timerPeriod, Graph graph) {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void reset() {
+ // Nothing, override in subclass
+ }
+
+} //IdentifiablePredicateImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/IdentifiableTestImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/IdentifiableTestImpl.java
new file mode 100644
index 000000000..df837a013
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/IdentifiableTestImpl.java
@@ -0,0 +1,47 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.predicate.IdentifiableTest;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Identifiable Test</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class IdentifiableTestImpl extends IdentifiablePredicateImpl implements IdentifiableTest {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IdentifiableTestImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.IDENTIFIABLE_TEST;
+ }
+
+} //IdentifiableTestImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/NaryBooleanOperatorImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/NaryBooleanOperatorImpl.java
new file mode 100644
index 000000000..5ee604ec4
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/NaryBooleanOperatorImpl.java
@@ -0,0 +1,155 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.stem.core.predicate.NaryBooleanOperator;
+import org.eclipse.stem.core.predicate.Predicate;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Nary Boolean Operator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.predicate.impl.NaryBooleanOperatorImpl#getOperands <em>Operands</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class NaryBooleanOperatorImpl extends BooleanOperatorImpl implements NaryBooleanOperator {
+ /**
+ * The cached value of the '{@link #getOperands() <em>Operands</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOperands()
+ * @generated
+ * @ordered
+ */
+ protected EList<Predicate> operands;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected NaryBooleanOperatorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Predicate> getOperands() {
+ if (operands == null) {
+ operands = new EObjectContainmentEList<Predicate>(Predicate.class, this, PredicatePackage.NARY_BOOLEAN_OPERATOR__OPERANDS);
+ }
+ return operands;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case PredicatePackage.NARY_BOOLEAN_OPERATOR__OPERANDS:
+ return ((InternalEList<?>)getOperands()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PredicatePackage.NARY_BOOLEAN_OPERATOR__OPERANDS:
+ return getOperands();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PredicatePackage.NARY_BOOLEAN_OPERATOR__OPERANDS:
+ getOperands().clear();
+ getOperands().addAll((Collection<? extends Predicate>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PredicatePackage.NARY_BOOLEAN_OPERATOR__OPERANDS:
+ getOperands().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PredicatePackage.NARY_BOOLEAN_OPERATOR__OPERANDS:
+ return operands != null && !operands.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //NaryBooleanOperatorImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/NotImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/NotImpl.java
new file mode 100644
index 000000000..89d4e3bb6
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/NotImpl.java
@@ -0,0 +1,58 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.predicate.Not;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Not</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class NotImpl extends UnaryBooleanOperatorImpl implements Not {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected NotImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.NOT;
+ }
+
+ /**
+ * @see org.eclipse.stem.core.predicate.impl.PredicateImpl#evaluate(org.eclipse.stem.core.model.STEMTime, long, org.eclipse.stem.core.model.Decorator)
+ */
+ @Override
+ public boolean evaluate(STEMTime time, long timerPeriod, Graph graph) {
+ return !getOperand().evaluate(time, timerPeriod, graph);
+ }
+
+
+} //NotImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/OrImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/OrImpl.java
new file mode 100644
index 000000000..91ffc9c01
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/OrImpl.java
@@ -0,0 +1,68 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.predicate.Or;
+import org.eclipse.stem.core.predicate.Predicate;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Or</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class OrImpl extends NaryBooleanOperatorImpl implements Or {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected OrImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.OR;
+ }
+
+ /**
+ * @see org.eclipse.stem.core.predicate.impl.PredicateImpl#evaluate(org.eclipse.stem.core.model.STEMTime, long, org.eclipse.stem.core.model.Decorator)
+ */
+ @Override
+ public boolean evaluate(STEMTime time, long timerPeriod, Graph graph) {
+ boolean retValue = false;
+ for (Predicate predicate : getOperands()) {
+ retValue = predicate.evaluate(time, timerPeriod, graph);
+ // One is true?
+ if (retValue) {
+ // Yes
+ break;
+ } // if
+ } // for each Predicate
+ return retValue;
+ } // evaluate
+
+
+} //OrImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicateExpressionImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicateExpressionImpl.java
new file mode 100644
index 000000000..281b9d1aa
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicateExpressionImpl.java
@@ -0,0 +1,196 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.predicate.Predicate;
+import org.eclipse.stem.core.predicate.PredicateExpression;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.predicate.impl.PredicateExpressionImpl#getPredicate <em>Predicate</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PredicateExpressionImpl extends BooleanExpressionImpl implements PredicateExpression {
+ /**
+ * The cached value of the '{@link #getPredicate() <em>Predicate</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPredicate()
+ * @generated
+ * @ordered
+ */
+ protected Predicate predicate;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PredicateExpressionImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.PREDICATE_EXPRESSION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Predicate getPredicate() {
+ return predicate;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetPredicate(Predicate newPredicate, NotificationChain msgs) {
+ Predicate oldPredicate = predicate;
+ predicate = newPredicate;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, PredicatePackage.PREDICATE_EXPRESSION__PREDICATE, oldPredicate, newPredicate);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPredicate(Predicate newPredicate) {
+ if (newPredicate != predicate) {
+ NotificationChain msgs = null;
+ if (predicate != null)
+ msgs = ((InternalEObject)predicate).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - PredicatePackage.PREDICATE_EXPRESSION__PREDICATE, null, msgs);
+ if (newPredicate != null)
+ msgs = ((InternalEObject)newPredicate).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - PredicatePackage.PREDICATE_EXPRESSION__PREDICATE, null, msgs);
+ msgs = basicSetPredicate(newPredicate, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PredicatePackage.PREDICATE_EXPRESSION__PREDICATE, newPredicate, newPredicate));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case PredicatePackage.PREDICATE_EXPRESSION__PREDICATE:
+ return basicSetPredicate(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PredicatePackage.PREDICATE_EXPRESSION__PREDICATE:
+ return getPredicate();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PredicatePackage.PREDICATE_EXPRESSION__PREDICATE:
+ setPredicate((Predicate)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PredicatePackage.PREDICATE_EXPRESSION__PREDICATE:
+ setPredicate((Predicate)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PredicatePackage.PREDICATE_EXPRESSION__PREDICATE:
+ return predicate != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * @see org.eclipse.stem.core.predicate.impl.PredicateImpl#evaluate(org.eclipse.stem.core.model.STEMTime, long, org.eclipse.stem.core.model.Decorator)
+ */
+ @Override
+ public boolean evaluate(STEMTime time, long timerPeriod, Graph graph) {
+ try {
+ return getPredicate().evaluate(time, timerPeriod, graph);
+ } catch (Exception e) {
+ return false;
+ }
+ }
+
+} //PredicateExpressionImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicateFactoryImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicateFactoryImpl.java
new file mode 100644
index 000000000..b8f163b4d
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicateFactoryImpl.java
@@ -0,0 +1,199 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.stem.core.predicate.And;
+import org.eclipse.stem.core.predicate.ElapsedTimeTest;
+import org.eclipse.stem.core.predicate.False;
+import org.eclipse.stem.core.predicate.IdentifiablePredicateExpression;
+import org.eclipse.stem.core.predicate.Not;
+import org.eclipse.stem.core.predicate.Or;
+import org.eclipse.stem.core.predicate.PredicateExpression;
+import org.eclipse.stem.core.predicate.PredicateFactory;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+import org.eclipse.stem.core.predicate.PredicateReference;
+import org.eclipse.stem.core.predicate.True;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PredicateFactoryImpl extends EFactoryImpl implements PredicateFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static PredicateFactory init() {
+ try {
+ PredicateFactory thePredicateFactory = (PredicateFactory)EPackage.Registry.INSTANCE.getEFactory("http:///org/eclipse/stem/core/predicate.ecore"); //$NON-NLS-1$
+ if (thePredicateFactory != null) {
+ return thePredicateFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new PredicateFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PredicateFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case PredicatePackage.AND: return createAnd();
+ case PredicatePackage.FALSE: return createFalse();
+ case PredicatePackage.NOT: return createNot();
+ case PredicatePackage.OR: return createOr();
+ case PredicatePackage.PREDICATE_REFERENCE: return createPredicateReference();
+ case PredicatePackage.TRUE: return createTrue();
+ case PredicatePackage.PREDICATE_EXPRESSION: return createPredicateExpression();
+ case PredicatePackage.IDENTIFIABLE_PREDICATE_EXPRESSION: return createIdentifiablePredicateExpression();
+ case PredicatePackage.ELAPSED_TIME_TEST: return createElapsedTimeTest();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public And createAnd() {
+ AndImpl and = new AndImpl();
+ return and;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public False createFalse() {
+ FalseImpl false_ = new FalseImpl();
+ return false_;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Not createNot() {
+ NotImpl not = new NotImpl();
+ return not;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Or createOr() {
+ OrImpl or = new OrImpl();
+ return or;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PredicateReference createPredicateReference() {
+ PredicateReferenceImpl predicateReference = new PredicateReferenceImpl();
+ return predicateReference;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public True createTrue() {
+ TrueImpl true_ = new TrueImpl();
+ return true_;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PredicateExpression createPredicateExpression() {
+ PredicateExpressionImpl predicateExpression = new PredicateExpressionImpl();
+ return predicateExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IdentifiablePredicateExpression createIdentifiablePredicateExpression() {
+ IdentifiablePredicateExpressionImpl identifiablePredicateExpression = new IdentifiablePredicateExpressionImpl();
+ return identifiablePredicateExpression;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ElapsedTimeTest createElapsedTimeTest() {
+ ElapsedTimeTestImpl elapsedTimeTest = new ElapsedTimeTestImpl();
+ return elapsedTimeTest;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PredicatePackage getPredicatePackage() {
+ return (PredicatePackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static PredicatePackage getPackage() {
+ return PredicatePackage.eINSTANCE;
+ }
+
+} //PredicateFactoryImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicateImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicateImpl.java
new file mode 100644
index 000000000..03f5f9a5a
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicateImpl.java
@@ -0,0 +1,70 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.predicate.Predicate;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Predicate</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class PredicateImpl extends EObjectImpl implements Predicate {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PredicateImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.PREDICATE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean evaluate(STEMTime time, long timerPeriod, Graph graph) {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void reset() {
+ // Subclasses overrides if necessary
+ }
+
+} //PredicateImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicatePackageImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicatePackageImpl.java
new file mode 100644
index 000000000..7d8c696c1
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicatePackageImpl.java
@@ -0,0 +1,708 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.stem.core.common.CommonPackage;
+import org.eclipse.stem.core.common.impl.CommonPackageImpl;
+import org.eclipse.stem.core.experiment.ExperimentPackage;
+import org.eclipse.stem.core.experiment.impl.ExperimentPackageImpl;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.impl.GraphPackageImpl;
+import org.eclipse.stem.core.logger.LoggerPackage;
+import org.eclipse.stem.core.logger.impl.LoggerPackageImpl;
+import org.eclipse.stem.core.model.ModelPackage;
+import org.eclipse.stem.core.model.impl.ModelPackageImpl;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+import org.eclipse.stem.core.modifier.impl.ModifierPackageImpl;
+import org.eclipse.stem.core.predicate.And;
+import org.eclipse.stem.core.predicate.BooleanExpression;
+import org.eclipse.stem.core.predicate.BooleanOperator;
+import org.eclipse.stem.core.predicate.ElapsedTimeTest;
+import org.eclipse.stem.core.predicate.False;
+import org.eclipse.stem.core.predicate.IdentifiablePredicate;
+import org.eclipse.stem.core.predicate.IdentifiablePredicateExpression;
+import org.eclipse.stem.core.predicate.IdentifiableTest;
+import org.eclipse.stem.core.predicate.NaryBooleanOperator;
+import org.eclipse.stem.core.predicate.Not;
+import org.eclipse.stem.core.predicate.Or;
+import org.eclipse.stem.core.predicate.Predicate;
+import org.eclipse.stem.core.predicate.PredicateExpression;
+import org.eclipse.stem.core.predicate.PredicateFactory;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+import org.eclipse.stem.core.predicate.PredicateReference;
+import org.eclipse.stem.core.predicate.Test;
+import org.eclipse.stem.core.predicate.TimeTest;
+import org.eclipse.stem.core.predicate.True;
+import org.eclipse.stem.core.predicate.UnaryBooleanOperator;
+import org.eclipse.stem.core.scenario.ScenarioPackage;
+import org.eclipse.stem.core.scenario.impl.ScenarioPackageImpl;
+import org.eclipse.stem.core.sequencer.SequencerPackage;
+import org.eclipse.stem.core.sequencer.impl.SequencerPackageImpl;
+import org.eclipse.stem.core.solver.SolverPackage;
+import org.eclipse.stem.core.solver.impl.SolverPackageImpl;
+import org.eclipse.stem.core.trigger.TriggerPackage;
+import org.eclipse.stem.core.trigger.impl.TriggerPackageImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PredicatePackageImpl extends EPackageImpl implements PredicatePackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass andEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass booleanExpressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass booleanOperatorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass falseEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass naryBooleanOperatorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass notEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass orEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass predicateEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass predicateReferenceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass testEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass trueEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass unaryBooleanOperatorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass predicateExpressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass identifiablePredicateEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass identifiablePredicateExpressionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass identifiableTestEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass timeTestEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass elapsedTimeTestEClass = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.eclipse.stem.core.predicate.PredicatePackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private PredicatePackageImpl() {
+ super(eNS_URI, PredicateFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link PredicatePackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static PredicatePackage init() {
+ if (isInited) return (PredicatePackage)EPackage.Registry.INSTANCE.getEPackage(PredicatePackage.eNS_URI);
+
+ // Obtain or create and register package
+ PredicatePackageImpl thePredicatePackage = (PredicatePackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof PredicatePackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new PredicatePackageImpl());
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ EcorePackage.eINSTANCE.eClass();
+
+ // Obtain or create and register interdependencies
+ CommonPackageImpl theCommonPackage = (CommonPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(CommonPackage.eNS_URI) instanceof CommonPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(CommonPackage.eNS_URI) : CommonPackage.eINSTANCE);
+ ExperimentPackageImpl theExperimentPackage = (ExperimentPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ExperimentPackage.eNS_URI) instanceof ExperimentPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ExperimentPackage.eNS_URI) : ExperimentPackage.eINSTANCE);
+ GraphPackageImpl theGraphPackage = (GraphPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(GraphPackage.eNS_URI) instanceof GraphPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(GraphPackage.eNS_URI) : GraphPackage.eINSTANCE);
+ ModelPackageImpl theModelPackage = (ModelPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ModelPackage.eNS_URI) instanceof ModelPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ModelPackage.eNS_URI) : ModelPackage.eINSTANCE);
+ ModifierPackageImpl theModifierPackage = (ModifierPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ModifierPackage.eNS_URI) instanceof ModifierPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ModifierPackage.eNS_URI) : ModifierPackage.eINSTANCE);
+ ScenarioPackageImpl theScenarioPackage = (ScenarioPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ScenarioPackage.eNS_URI) instanceof ScenarioPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ScenarioPackage.eNS_URI) : ScenarioPackage.eINSTANCE);
+ SequencerPackageImpl theSequencerPackage = (SequencerPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SequencerPackage.eNS_URI) instanceof SequencerPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SequencerPackage.eNS_URI) : SequencerPackage.eINSTANCE);
+ TriggerPackageImpl theTriggerPackage = (TriggerPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(TriggerPackage.eNS_URI) instanceof TriggerPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(TriggerPackage.eNS_URI) : TriggerPackage.eINSTANCE);
+ SolverPackageImpl theSolverPackage = (SolverPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SolverPackage.eNS_URI) instanceof SolverPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SolverPackage.eNS_URI) : SolverPackage.eINSTANCE);
+ LoggerPackageImpl theLoggerPackage = (LoggerPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(LoggerPackage.eNS_URI) instanceof LoggerPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(LoggerPackage.eNS_URI) : LoggerPackage.eINSTANCE);
+
+ // Create package meta-data objects
+ thePredicatePackage.createPackageContents();
+ theCommonPackage.createPackageContents();
+ theExperimentPackage.createPackageContents();
+ theGraphPackage.createPackageContents();
+ theModelPackage.createPackageContents();
+ theModifierPackage.createPackageContents();
+ theScenarioPackage.createPackageContents();
+ theSequencerPackage.createPackageContents();
+ theTriggerPackage.createPackageContents();
+ theSolverPackage.createPackageContents();
+ theLoggerPackage.createPackageContents();
+
+ // Initialize created meta-data
+ thePredicatePackage.initializePackageContents();
+ theCommonPackage.initializePackageContents();
+ theExperimentPackage.initializePackageContents();
+ theGraphPackage.initializePackageContents();
+ theModelPackage.initializePackageContents();
+ theModifierPackage.initializePackageContents();
+ theScenarioPackage.initializePackageContents();
+ theSequencerPackage.initializePackageContents();
+ theTriggerPackage.initializePackageContents();
+ theSolverPackage.initializePackageContents();
+ theLoggerPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ thePredicatePackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(PredicatePackage.eNS_URI, thePredicatePackage);
+ return thePredicatePackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getAnd() {
+ return andEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getBooleanExpression() {
+ return booleanExpressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getBooleanOperator() {
+ return booleanOperatorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getFalse() {
+ return falseEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getNaryBooleanOperator() {
+ return naryBooleanOperatorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getNaryBooleanOperator_Operands() {
+ return (EReference)naryBooleanOperatorEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getNot() {
+ return notEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getOr() {
+ return orEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getPredicate() {
+ return predicateEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getPredicateReference() {
+ return predicateReferenceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getPredicateReference_Predicate() {
+ return (EReference)predicateReferenceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getTest() {
+ return testEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getTrue() {
+ return trueEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getUnaryBooleanOperator() {
+ return unaryBooleanOperatorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getUnaryBooleanOperator_Operand() {
+ return (EReference)unaryBooleanOperatorEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getPredicateExpression() {
+ return predicateExpressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getPredicateExpression_Predicate() {
+ return (EReference)predicateExpressionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getIdentifiablePredicate() {
+ return identifiablePredicateEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getIdentifiablePredicateExpression() {
+ return identifiablePredicateExpressionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getIdentifiableTest() {
+ return identifiableTestEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getTimeTest() {
+ return timeTestEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getElapsedTimeTest() {
+ return elapsedTimeTestEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getElapsedTimeTest_ReferenceTimeValid() {
+ return (EAttribute)elapsedTimeTestEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getElapsedTimeTest_ElapsedMilliseconds() {
+ return (EAttribute)elapsedTimeTestEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getElapsedTimeTest_NumberofDays() {
+ return (EAttribute)elapsedTimeTestEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getElapsedTimeTest_ReferenceTime() {
+ return (EReference)elapsedTimeTestEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PredicateFactory getPredicateFactory() {
+ return (PredicateFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ andEClass = createEClass(AND);
+
+ booleanExpressionEClass = createEClass(BOOLEAN_EXPRESSION);
+
+ booleanOperatorEClass = createEClass(BOOLEAN_OPERATOR);
+
+ falseEClass = createEClass(FALSE);
+
+ naryBooleanOperatorEClass = createEClass(NARY_BOOLEAN_OPERATOR);
+ createEReference(naryBooleanOperatorEClass, NARY_BOOLEAN_OPERATOR__OPERANDS);
+
+ notEClass = createEClass(NOT);
+
+ orEClass = createEClass(OR);
+
+ predicateEClass = createEClass(PREDICATE);
+
+ predicateReferenceEClass = createEClass(PREDICATE_REFERENCE);
+ createEReference(predicateReferenceEClass, PREDICATE_REFERENCE__PREDICATE);
+
+ testEClass = createEClass(TEST);
+
+ trueEClass = createEClass(TRUE);
+
+ unaryBooleanOperatorEClass = createEClass(UNARY_BOOLEAN_OPERATOR);
+ createEReference(unaryBooleanOperatorEClass, UNARY_BOOLEAN_OPERATOR__OPERAND);
+
+ predicateExpressionEClass = createEClass(PREDICATE_EXPRESSION);
+ createEReference(predicateExpressionEClass, PREDICATE_EXPRESSION__PREDICATE);
+
+ identifiablePredicateEClass = createEClass(IDENTIFIABLE_PREDICATE);
+
+ identifiablePredicateExpressionEClass = createEClass(IDENTIFIABLE_PREDICATE_EXPRESSION);
+
+ identifiableTestEClass = createEClass(IDENTIFIABLE_TEST);
+
+ timeTestEClass = createEClass(TIME_TEST);
+
+ elapsedTimeTestEClass = createEClass(ELAPSED_TIME_TEST);
+ createEAttribute(elapsedTimeTestEClass, ELAPSED_TIME_TEST__REFERENCE_TIME_VALID);
+ createEAttribute(elapsedTimeTestEClass, ELAPSED_TIME_TEST__ELAPSED_MILLISECONDS);
+ createEAttribute(elapsedTimeTestEClass, ELAPSED_TIME_TEST__NUMBEROF_DAYS);
+ createEReference(elapsedTimeTestEClass, ELAPSED_TIME_TEST__REFERENCE_TIME);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ ModelPackage theModelPackage = (ModelPackage)EPackage.Registry.INSTANCE.getEPackage(ModelPackage.eNS_URI);
+ GraphPackage theGraphPackage = (GraphPackage)EPackage.Registry.INSTANCE.getEPackage(GraphPackage.eNS_URI);
+ CommonPackage theCommonPackage = (CommonPackage)EPackage.Registry.INSTANCE.getEPackage(CommonPackage.eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ andEClass.getESuperTypes().add(this.getNaryBooleanOperator());
+ booleanExpressionEClass.getESuperTypes().add(this.getPredicate());
+ booleanOperatorEClass.getESuperTypes().add(this.getBooleanExpression());
+ falseEClass.getESuperTypes().add(this.getTest());
+ naryBooleanOperatorEClass.getESuperTypes().add(this.getBooleanOperator());
+ notEClass.getESuperTypes().add(this.getUnaryBooleanOperator());
+ orEClass.getESuperTypes().add(this.getNaryBooleanOperator());
+ predicateReferenceEClass.getESuperTypes().add(this.getPredicate());
+ testEClass.getESuperTypes().add(this.getPredicate());
+ trueEClass.getESuperTypes().add(this.getTest());
+ unaryBooleanOperatorEClass.getESuperTypes().add(this.getBooleanOperator());
+ predicateExpressionEClass.getESuperTypes().add(this.getBooleanExpression());
+ identifiablePredicateEClass.getESuperTypes().add(theCommonPackage.getIdentifiable());
+ identifiablePredicateEClass.getESuperTypes().add(this.getPredicate());
+ identifiablePredicateExpressionEClass.getESuperTypes().add(this.getIdentifiablePredicate());
+ identifiablePredicateExpressionEClass.getESuperTypes().add(this.getPredicateExpression());
+ identifiableTestEClass.getESuperTypes().add(this.getIdentifiablePredicate());
+ identifiableTestEClass.getESuperTypes().add(this.getTest());
+ timeTestEClass.getESuperTypes().add(this.getTest());
+ elapsedTimeTestEClass.getESuperTypes().add(this.getTimeTest());
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(andEClass, And.class, "And", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(booleanExpressionEClass, BooleanExpression.class, "BooleanExpression", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(booleanOperatorEClass, BooleanOperator.class, "BooleanOperator", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(falseEClass, False.class, "False", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(naryBooleanOperatorEClass, NaryBooleanOperator.class, "NaryBooleanOperator", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getNaryBooleanOperator_Operands(), this.getPredicate(), null, "operands", null, 0, -1, NaryBooleanOperator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(notEClass, Not.class, "Not", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(orEClass, Or.class, "Or", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(predicateEClass, Predicate.class, "Predicate", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ EOperation op = addEOperation(predicateEClass, ecorePackage.getEBoolean(), "evaluate", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, theModelPackage.getSTEMTime(), "time", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, ecorePackage.getELong(), "timerPeriod", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, theGraphPackage.getGraph(), "graph", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ addEOperation(predicateEClass, null, "reset", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(predicateReferenceEClass, PredicateReference.class, "PredicateReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getPredicateReference_Predicate(), this.getPredicate(), null, "predicate", null, 0, 1, PredicateReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(testEClass, Test.class, "Test", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(trueEClass, True.class, "True", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(unaryBooleanOperatorEClass, UnaryBooleanOperator.class, "UnaryBooleanOperator", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getUnaryBooleanOperator_Operand(), this.getPredicate(), null, "operand", null, 0, 1, UnaryBooleanOperator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(predicateExpressionEClass, PredicateExpression.class, "PredicateExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getPredicateExpression_Predicate(), this.getPredicate(), null, "predicate", null, 0, 1, PredicateExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(identifiablePredicateEClass, IdentifiablePredicate.class, "IdentifiablePredicate", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(identifiablePredicateExpressionEClass, IdentifiablePredicateExpression.class, "IdentifiablePredicateExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(identifiableTestEClass, IdentifiableTest.class, "IdentifiableTest", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(timeTestEClass, TimeTest.class, "TimeTest", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(elapsedTimeTestEClass, ElapsedTimeTest.class, "ElapsedTimeTest", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getElapsedTimeTest_ReferenceTimeValid(), ecorePackage.getEBoolean(), "referenceTimeValid", "false", 0, 1, ElapsedTimeTest.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+ initEAttribute(getElapsedTimeTest_ElapsedMilliseconds(), ecorePackage.getELong(), "elapsedMilliseconds", null, 0, 1, ElapsedTimeTest.class, IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getElapsedTimeTest_NumberofDays(), ecorePackage.getEInt(), "numberofDays", "0", 0, 1, ElapsedTimeTest.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+ initEReference(getElapsedTimeTest_ReferenceTime(), theModelPackage.getSTEMTime(), null, "referenceTime", null, 0, 1, ElapsedTimeTest.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} //PredicatePackageImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicateReferenceImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicateReferenceImpl.java
new file mode 100644
index 000000000..c7a641098
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/PredicateReferenceImpl.java
@@ -0,0 +1,175 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.predicate.Predicate;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+import org.eclipse.stem.core.predicate.PredicateReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Reference</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.predicate.impl.PredicateReferenceImpl#getPredicate <em>Predicate</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PredicateReferenceImpl extends PredicateImpl implements PredicateReference {
+ /**
+ * The cached value of the '{@link #getPredicate() <em>Predicate</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPredicate()
+ * @generated
+ * @ordered
+ */
+ protected Predicate predicate;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PredicateReferenceImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.PREDICATE_REFERENCE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Predicate getPredicate() {
+ if (predicate != null && predicate.eIsProxy()) {
+ InternalEObject oldPredicate = (InternalEObject)predicate;
+ predicate = (Predicate)eResolveProxy(oldPredicate);
+ if (predicate != oldPredicate) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, PredicatePackage.PREDICATE_REFERENCE__PREDICATE, oldPredicate, predicate));
+ }
+ }
+ return predicate;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Predicate basicGetPredicate() {
+ return predicate;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPredicate(Predicate newPredicate) {
+ Predicate oldPredicate = predicate;
+ predicate = newPredicate;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PredicatePackage.PREDICATE_REFERENCE__PREDICATE, oldPredicate, predicate));
+ }
+
+
+ /**
+ * @see org.eclipse.stem.core.predicate.impl.PredicateImpl#evaluate(org.eclipse.stem.core.model.STEMTime, long, org.eclipse.stem.core.model.Decorator)
+ */
+ @Override
+ public boolean evaluate(STEMTime time, long timerPeriod, Graph graph) {
+ return getPredicate().evaluate(time, timerPeriod, graph);
+ } // evaluate
+
+
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PredicatePackage.PREDICATE_REFERENCE__PREDICATE:
+ if (resolve) return getPredicate();
+ return basicGetPredicate();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PredicatePackage.PREDICATE_REFERENCE__PREDICATE:
+ setPredicate((Predicate)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PredicatePackage.PREDICATE_REFERENCE__PREDICATE:
+ setPredicate((Predicate)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PredicatePackage.PREDICATE_REFERENCE__PREDICATE:
+ return predicate != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //PredicateReferenceImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/TestImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/TestImpl.java
new file mode 100644
index 000000000..1376b6f49
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/TestImpl.java
@@ -0,0 +1,47 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+import org.eclipse.stem.core.predicate.Test;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Test</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class TestImpl extends PredicateImpl implements Test {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TestImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.TEST;
+ }
+
+} //TestImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/TimeTestImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/TimeTestImpl.java
new file mode 100644
index 000000000..67add7128
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/TimeTestImpl.java
@@ -0,0 +1,48 @@
+// TimeTestImpl.java
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+import org.eclipse.stem.core.predicate.TimeTest;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Time Test</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class TimeTestImpl extends TestImpl implements TimeTest {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TimeTestImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.TIME_TEST;
+ }
+
+} //TimeTestImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/TrueImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/TrueImpl.java
new file mode 100644
index 000000000..a77faea3a
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/TrueImpl.java
@@ -0,0 +1,57 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+import org.eclipse.stem.core.predicate.True;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>True</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class TrueImpl extends TestImpl implements True {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TrueImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.TRUE;
+ }
+
+ /**
+ * @see org.eclipse.stem.core.predicate.impl.PredicateImpl#evaluate(org.eclipse.stem.core.model.STEMTime, long, org.eclipse.stem.core.model.Decorator)
+ */
+ @Override
+ public boolean evaluate(STEMTime time, long timerPeriod, Graph graph) {
+ return true;
+ }
+
+} //TrueImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/UnaryBooleanOperatorImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/UnaryBooleanOperatorImpl.java
new file mode 100644
index 000000000..2a838f73a
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/impl/UnaryBooleanOperatorImpl.java
@@ -0,0 +1,181 @@
+package org.eclipse.stem.core.predicate.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.stem.core.predicate.Predicate;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+import org.eclipse.stem.core.predicate.UnaryBooleanOperator;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Unary Boolean Operator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.predicate.impl.UnaryBooleanOperatorImpl#getOperand <em>Operand</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class UnaryBooleanOperatorImpl extends BooleanOperatorImpl implements UnaryBooleanOperator {
+ /**
+ * The cached value of the '{@link #getOperand() <em>Operand</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOperand()
+ * @generated
+ * @ordered
+ */
+ protected Predicate operand;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected UnaryBooleanOperatorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Predicate getOperand() {
+ return operand;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetOperand(Predicate newOperand, NotificationChain msgs) {
+ Predicate oldOperand = operand;
+ operand = newOperand;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, PredicatePackage.UNARY_BOOLEAN_OPERATOR__OPERAND, oldOperand, newOperand);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setOperand(Predicate newOperand) {
+ if (newOperand != operand) {
+ NotificationChain msgs = null;
+ if (operand != null)
+ msgs = ((InternalEObject)operand).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - PredicatePackage.UNARY_BOOLEAN_OPERATOR__OPERAND, null, msgs);
+ if (newOperand != null)
+ msgs = ((InternalEObject)newOperand).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - PredicatePackage.UNARY_BOOLEAN_OPERATOR__OPERAND, null, msgs);
+ msgs = basicSetOperand(newOperand, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PredicatePackage.UNARY_BOOLEAN_OPERATOR__OPERAND, newOperand, newOperand));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case PredicatePackage.UNARY_BOOLEAN_OPERATOR__OPERAND:
+ return basicSetOperand(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PredicatePackage.UNARY_BOOLEAN_OPERATOR__OPERAND:
+ return getOperand();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PredicatePackage.UNARY_BOOLEAN_OPERATOR__OPERAND:
+ setOperand((Predicate)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PredicatePackage.UNARY_BOOLEAN_OPERATOR__OPERAND:
+ setOperand((Predicate)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PredicatePackage.UNARY_BOOLEAN_OPERATOR__OPERAND:
+ return operand != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //UnaryBooleanOperatorImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/AndItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/AndItemProvider.java
new file mode 100644
index 000000000..094a62695
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/AndItemProvider.java
@@ -0,0 +1,123 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.And} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AndItemProvider
+ extends NaryBooleanOperatorItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AndItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns And.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/customobj16/And.png")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ return "&";
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+// @Override
+ public String getTextGen(Object object) {
+ return getString("_UI_And_type"); //$NON-NLS-1$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/BooleanExpressionItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/BooleanExpressionItemProvider.java
new file mode 100644
index 000000000..7382b526d
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/BooleanExpressionItemProvider.java
@@ -0,0 +1,102 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.BooleanExpression} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BooleanExpressionItemProvider
+ extends PredicateItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BooleanExpressionItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_BooleanExpression_type"); //$NON-NLS-1$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/BooleanOperatorItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/BooleanOperatorItemProvider.java
new file mode 100644
index 000000000..93dd1eaf5
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/BooleanOperatorItemProvider.java
@@ -0,0 +1,102 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.BooleanOperator} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BooleanOperatorItemProvider
+ extends BooleanExpressionItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BooleanOperatorItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_BooleanOperator_type"); //$NON-NLS-1$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/ElapsedTimeTestItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/ElapsedTimeTestItemProvider.java
new file mode 100644
index 000000000..28681eadc
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/ElapsedTimeTestItemProvider.java
@@ -0,0 +1,159 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.predicate.ElapsedTimeTest;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.ElapsedTimeTest} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ElapsedTimeTestItemProvider
+ extends TimeTestItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ElapsedTimeTestItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addNumberofDaysPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Numberof Days feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addNumberofDaysPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_ElapsedTimeTest_numberofDays_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_ElapsedTimeTest_numberofDays_feature", "_UI_ElapsedTimeTest_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ PredicatePackage.Literals.ELAPSED_TIME_TEST__NUMBEROF_DAYS,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns ElapsedTimeTest.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/customobj16/ElapsedTimeTest.png")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ final ElapsedTimeTest ett = (ElapsedTimeTest)object;
+ return "After " + ett.getNumberofDays() + " days";
+ } // getText
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ //@Override
+ public String getTextGen(Object object) {
+ ElapsedTimeTest elapsedTimeTest = (ElapsedTimeTest)object;
+ return getString("_UI_ElapsedTimeTest_type") + " " + elapsedTimeTest.isReferenceTimeValid(); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(ElapsedTimeTest.class)) {
+ case PredicatePackage.ELAPSED_TIME_TEST__NUMBEROF_DAYS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+} // ElapsedTimeTestItemProvider
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/FalseItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/FalseItemProvider.java
new file mode 100644
index 000000000..00cd2b7af
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/FalseItemProvider.java
@@ -0,0 +1,124 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.False} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FalseItemProvider
+ extends TestItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FalseItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns False.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/False")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ return "False";
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ //@Override
+ public String getTextGen(Object object) {
+ return getString("_UI_False_type"); //$NON-NLS-1$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/IdentifiablePredicateExpressionItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/IdentifiablePredicateExpressionItemProvider.java
new file mode 100644
index 000000000..061090d74
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/IdentifiablePredicateExpressionItemProvider.java
@@ -0,0 +1,283 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.common.provider.IdentifiableItemProvider;
+import org.eclipse.stem.core.predicate.IdentifiablePredicateExpression;
+import org.eclipse.stem.core.predicate.PredicateFactory;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.IdentifiablePredicateExpression} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IdentifiablePredicateExpressionItemProvider
+ extends IdentifiablePredicateItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IdentifiablePredicateExpressionItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns Predicate.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/customobj16/Predicate"));
+ }
+
+ /**
+ * This returns IdentifiablePredicateExpression.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object getImageGen(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/IdentifiablePredicateExpression")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see IdentifiableItemProvider#getText(Object)
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ return super.getText(object);
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getTextGen(Object object) {
+ URI labelValue = ((IdentifiablePredicateExpression)object).getURI();
+ String label = labelValue == null ? null : labelValue.toString();
+ return label == null || label.length() == 0 ?
+ getString("_UI_IdentifiablePredicateExpression_type") : //$NON-NLS-1$
+ getString("_UI_IdentifiablePredicateExpression_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(IdentifiablePredicateExpression.class)) {
+ case PredicatePackage.IDENTIFIABLE_PREDICATE_EXPRESSION__PREDICATE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createAnd()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createFalse()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createNot()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createOr()));
+
+// newChildDescriptors.add
+// (createChildParameter
+// (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+// PredicateFactory.eINSTANCE.createPredicateReference()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createTrue()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createPredicateExpression()));
+
+// newChildDescriptors.add
+// (createChildParameter
+// (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+// PredicateFactory.eINSTANCE.createIdentifiablePredicateExpression()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createElapsedTimeTest()));
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ //@Override
+ protected void collectNewChildDescriptorsGen(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createAnd()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createFalse()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createNot()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createOr()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createPredicateReference()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createTrue()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createPredicateExpression()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createIdentifiablePredicateExpression()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createElapsedTimeTest()));
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/IdentifiablePredicateItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/IdentifiablePredicateItemProvider.java
new file mode 100644
index 000000000..6da0a2af2
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/IdentifiablePredicateItemProvider.java
@@ -0,0 +1,115 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.IChildCreationExtender;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.common.provider.IdentifiableItemProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.IdentifiablePredicate} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IdentifiablePredicateItemProvider
+ extends IdentifiableItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IdentifiablePredicateItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ return super.getText(object);
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return ((IChildCreationExtender)adapterFactory).getResourceLocator();
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/IdentifiableTestItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/IdentifiableTestItemProvider.java
new file mode 100644
index 000000000..bdd6ac16c
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/IdentifiableTestItemProvider.java
@@ -0,0 +1,107 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.predicate.IdentifiableTest;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.IdentifiableTest} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class IdentifiableTestItemProvider
+ extends IdentifiablePredicateItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IdentifiableTestItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ URI labelValue = ((IdentifiableTest)object).getURI();
+ String label = labelValue == null ? null : labelValue.toString();
+ return label == null || label.length() == 0 ?
+ getString("_UI_IdentifiableTest_type") : //$NON-NLS-1$
+ getString("_UI_IdentifiableTest_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/NaryBooleanOperatorItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/NaryBooleanOperatorItemProvider.java
new file mode 100644
index 000000000..b82d9b8c5
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/NaryBooleanOperatorItemProvider.java
@@ -0,0 +1,246 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.predicate.NaryBooleanOperator;
+import org.eclipse.stem.core.predicate.PredicateFactory;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.NaryBooleanOperator} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NaryBooleanOperatorItemProvider
+ extends BooleanOperatorItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NaryBooleanOperatorItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_NaryBooleanOperator_type"); //$NON-NLS-1$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(NaryBooleanOperator.class)) {
+ case PredicatePackage.NARY_BOOLEAN_OPERATOR__OPERANDS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+ PredicateFactory.eINSTANCE.createAnd()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+ PredicateFactory.eINSTANCE.createFalse()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+ PredicateFactory.eINSTANCE.createNot()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+ PredicateFactory.eINSTANCE.createOr()));
+
+// newChildDescriptors.add
+// (createChildParameter
+// (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+// PredicateFactory.eINSTANCE.createPredicateReference()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+ PredicateFactory.eINSTANCE.createTrue()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+ PredicateFactory.eINSTANCE.createPredicateExpression()));
+
+// newChildDescriptors.add
+// (createChildParameter
+// (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+// PredicateFactory.eINSTANCE.createIdentifiablePredicateExpression()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+ PredicateFactory.eINSTANCE.createElapsedTimeTest()));
+ } // collectNewChildDescriptors
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ //@Override
+ protected void collectNewChildDescriptorsGen(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+ PredicateFactory.eINSTANCE.createAnd()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+ PredicateFactory.eINSTANCE.createFalse()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+ PredicateFactory.eINSTANCE.createNot()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+ PredicateFactory.eINSTANCE.createOr()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+ PredicateFactory.eINSTANCE.createPredicateReference()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+ PredicateFactory.eINSTANCE.createTrue()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+ PredicateFactory.eINSTANCE.createPredicateExpression()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+ PredicateFactory.eINSTANCE.createIdentifiablePredicateExpression()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.NARY_BOOLEAN_OPERATOR__OPERANDS,
+ PredicateFactory.eINSTANCE.createElapsedTimeTest()));
+ }
+
+
+} // NaryBooleanOperatorItemProvider
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/NotItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/NotItemProvider.java
new file mode 100644
index 000000000..32b03f08d
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/NotItemProvider.java
@@ -0,0 +1,123 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.Not} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NotItemProvider
+ extends UnaryBooleanOperatorItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns Not.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/customobj16/Not.png")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ return "!";
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ //@Override
+ public String getTextGen(Object object) {
+ return getString("_UI_Not_type"); //$NON-NLS-1$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/OrItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/OrItemProvider.java
new file mode 100644
index 000000000..4063fa090
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/OrItemProvider.java
@@ -0,0 +1,124 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.Or} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class OrItemProvider
+ extends NaryBooleanOperatorItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public OrItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns Or.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/customobj16/Or.png")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_Or_type"); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ //@Override
+ public String getTextGen(Object object) {
+ return getString("_UI_Or_type"); //$NON-NLS-1$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/PredicateExpressionItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/PredicateExpressionItemProvider.java
new file mode 100644
index 000000000..024f8eadb
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/PredicateExpressionItemProvider.java
@@ -0,0 +1,279 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.predicate.PredicateExpression;
+import org.eclipse.stem.core.predicate.PredicateFactory;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.PredicateExpression} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PredicateExpressionItemProvider
+ extends BooleanExpressionItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PredicateExpressionItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns PredicateExpression.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/customobj16/Predicate"));
+ }
+
+ /**
+ * This returns PredicateExpression.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImageGen(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/PredicateExpression")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ return "()";
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ //@Override
+ public String getTextGen(Object object) {
+ return getString("_UI_PredicateExpression_type"); //$NON-NLS-1$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(PredicateExpression.class)) {
+ case PredicatePackage.PREDICATE_EXPRESSION__PREDICATE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createAnd()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createFalse()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createNot()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createOr()));
+
+// newChildDescriptors.add
+// (createChildParameter
+// (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+// PredicateFactory.eINSTANCE.createPredicateReference()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createTrue()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createPredicateExpression()));
+
+// newChildDescriptors.add
+// (createChildParameter
+// (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+// PredicateFactory.eINSTANCE.createIdentifiablePredicateExpression()));
+
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createElapsedTimeTest()));
+
+ } // collectNewChildDescriptors
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ //@Override
+ protected void collectNewChildDescriptorsGen(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createAnd()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createFalse()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createNot()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createOr()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createPredicateReference()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createTrue()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createPredicateExpression()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createIdentifiablePredicateExpression()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.PREDICATE_EXPRESSION__PREDICATE,
+ PredicateFactory.eINSTANCE.createElapsedTimeTest()));
+ }
+
+} // PredicateExpressionItemProvider
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/PredicateItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/PredicateItemProvider.java
new file mode 100644
index 000000000..9b0c03f9c
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/PredicateItemProvider.java
@@ -0,0 +1,145 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.IChildCreationExtender;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.Predicate} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PredicateItemProvider
+ extends ItemProviderAdapter
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PredicateItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns Predicate.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/customobj16/Predicate"));
+ }
+
+ /**
+ * This returns Predicate.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object getImageGen(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Predicate")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_Predicate_type"); //$NON-NLS-1$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return ((IChildCreationExtender)adapterFactory).getResourceLocator();
+ }
+
+ /**
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#isWrappingNeeded(java.lang.Object)
+ */
+ @Override
+ protected boolean isWrappingNeeded(Object object) {
+ return true;
+ }
+
+
+} //
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/PredicateItemProviderAdapterFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/PredicateItemProviderAdapterFactory.java
new file mode 100644
index 000000000..f56307345
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/PredicateItemProviderAdapterFactory.java
@@ -0,0 +1,441 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ChildCreationExtenderManager;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IChildCreationExtender;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.common.provider.CoreEditPlugin;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+import org.eclipse.stem.core.predicate.util.PredicateAdapterFactory;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PredicateItemProviderAdapterFactory extends PredicateAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable, IChildCreationExtender {
+ /**
+ * This keeps track of the root adapter factory that delegates to this adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ComposedAdapterFactory parentAdapterFactory;
+
+ /**
+ * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+ /**
+ * This helps manage the child creation extenders.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ChildCreationExtenderManager childCreationExtenderManager = new ChildCreationExtenderManager(CoreEditPlugin.INSTANCE, PredicatePackage.eNS_URI);
+
+ /**
+ * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+ /**
+ * This constructs an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PredicateItemProviderAdapterFactory() {
+ supportedTypes.add(IEditingDomainItemProvider.class);
+ supportedTypes.add(IStructuredItemContentProvider.class);
+ supportedTypes.add(ITreeItemContentProvider.class);
+ supportedTypes.add(IItemLabelProvider.class);
+ supportedTypes.add(IItemPropertySource.class);
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.predicate.And} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AndItemProvider andItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.predicate.And}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createAndAdapter() {
+ if (andItemProvider == null) {
+ andItemProvider = new AndItemProvider(this);
+ }
+
+ return andItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.predicate.False} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FalseItemProvider falseItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.predicate.False}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createFalseAdapter() {
+ if (falseItemProvider == null) {
+ falseItemProvider = new FalseItemProvider(this);
+ }
+
+ return falseItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.predicate.Not} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected NotItemProvider notItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.predicate.Not}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createNotAdapter() {
+ if (notItemProvider == null) {
+ notItemProvider = new NotItemProvider(this);
+ }
+
+ return notItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.predicate.Or} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected OrItemProvider orItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.predicate.Or}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createOrAdapter() {
+ if (orItemProvider == null) {
+ orItemProvider = new OrItemProvider(this);
+ }
+
+ return orItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.predicate.PredicateReference} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PredicateReferenceItemProvider predicateReferenceItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.predicate.PredicateReference}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createPredicateReferenceAdapter() {
+ if (predicateReferenceItemProvider == null) {
+ predicateReferenceItemProvider = new PredicateReferenceItemProvider(this);
+ }
+
+ return predicateReferenceItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.predicate.True} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TrueItemProvider trueItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.predicate.True}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createTrueAdapter() {
+ if (trueItemProvider == null) {
+ trueItemProvider = new TrueItemProvider(this);
+ }
+
+ return trueItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.predicate.PredicateExpression} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PredicateExpressionItemProvider predicateExpressionItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.predicate.PredicateExpression}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createPredicateExpressionAdapter() {
+ if (predicateExpressionItemProvider == null) {
+ predicateExpressionItemProvider = new PredicateExpressionItemProvider(this);
+ }
+
+ return predicateExpressionItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.predicate.IdentifiablePredicateExpression} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IdentifiablePredicateExpressionItemProvider identifiablePredicateExpressionItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.predicate.IdentifiablePredicateExpression}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createIdentifiablePredicateExpressionAdapter() {
+ if (identifiablePredicateExpressionItemProvider == null) {
+ identifiablePredicateExpressionItemProvider = new IdentifiablePredicateExpressionItemProvider(this);
+ }
+
+ return identifiablePredicateExpressionItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.predicate.ElapsedTimeTest} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ElapsedTimeTestItemProvider elapsedTimeTestItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.predicate.ElapsedTimeTest}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createElapsedTimeTestAdapter() {
+ if (elapsedTimeTestItemProvider == null) {
+ elapsedTimeTestItemProvider = new ElapsedTimeTestItemProvider(this);
+ }
+
+ return elapsedTimeTestItemProvider;
+ }
+
+ /**
+ * This returns the root adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ComposeableAdapterFactory getRootAdapterFactory() {
+ return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+ }
+
+ /**
+ * This sets the composed adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+ this.parentAdapterFactory = parentAdapterFactory;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object type) {
+ return supportedTypes.contains(type) || super.isFactoryForType(type);
+ }
+
+ /**
+ * This implementation substitutes the factory itself as the key for the adapter.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter adapt(Notifier notifier, Object type) {
+ return super.adapt(notifier, this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public Object adapt(Object object, Object type) {
+ if (isFactoryForType(type)) {
+ Object adapter = super.adapt(object, type);
+ if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+ return adapter;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public List<IChildCreationExtender> getChildCreationExtenders() {
+ return childCreationExtenderManager.getChildCreationExtenders();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Collection<?> getNewChildDescriptors(Object object, EditingDomain editingDomain) {
+ return childCreationExtenderManager.getNewChildDescriptors(object, editingDomain);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ResourceLocator getResourceLocator() {
+ return childCreationExtenderManager;
+ }
+
+ /**
+ * This adds a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void addListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.addListener(notifyChangedListener);
+ }
+
+ /**
+ * This removes a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void removeListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.removeListener(notifyChangedListener);
+ }
+
+ /**
+ * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void fireNotifyChanged(Notification notification) {
+ changeNotifier.fireNotifyChanged(notification);
+
+ if (parentAdapterFactory != null) {
+ parentAdapterFactory.fireNotifyChanged(notification);
+ }
+ }
+
+ /**
+ * This disposes all of the item providers created by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void dispose() {
+ if (andItemProvider != null) andItemProvider.dispose();
+ if (falseItemProvider != null) falseItemProvider.dispose();
+ if (notItemProvider != null) notItemProvider.dispose();
+ if (orItemProvider != null) orItemProvider.dispose();
+ if (predicateReferenceItemProvider != null) predicateReferenceItemProvider.dispose();
+ if (trueItemProvider != null) trueItemProvider.dispose();
+ if (predicateExpressionItemProvider != null) predicateExpressionItemProvider.dispose();
+ if (identifiablePredicateExpressionItemProvider != null) identifiablePredicateExpressionItemProvider.dispose();
+ if (elapsedTimeTestItemProvider != null) elapsedTimeTestItemProvider.dispose();
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/PredicateReferenceItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/PredicateReferenceItemProvider.java
new file mode 100644
index 000000000..0b85b58d6
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/PredicateReferenceItemProvider.java
@@ -0,0 +1,153 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+import org.eclipse.stem.core.predicate.PredicateReference;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.PredicateReference} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class PredicateReferenceItemProvider
+ extends PredicateItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PredicateReferenceItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(PredicatePackage.Literals.PREDICATE_REFERENCE__PREDICATE);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns PredicateReference.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/PredicateReference")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_PredicateReference_type"); //$NON-NLS-1$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(PredicateReference.class)) {
+ case PredicatePackage.PREDICATE_REFERENCE__PREDICATE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/TestItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/TestItemProvider.java
new file mode 100644
index 000000000..3e8d8a995
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/TestItemProvider.java
@@ -0,0 +1,113 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.Test} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TestItemProvider
+ extends PredicateItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TestItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns Test.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Test")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_Test_type"); //$NON-NLS-1$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/TimeTestItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/TimeTestItemProvider.java
new file mode 100644
index 000000000..c60fcd4e3
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/TimeTestItemProvider.java
@@ -0,0 +1,101 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.TimeTest} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TimeTestItemProvider
+ extends TestItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TimeTestItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_TimeTest_type"); //$NON-NLS-1$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/TrueItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/TrueItemProvider.java
new file mode 100644
index 000000000..825d7765d
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/TrueItemProvider.java
@@ -0,0 +1,124 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.True} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TrueItemProvider
+ extends TestItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TrueItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns True.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/True")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ return "True";
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ //@Override
+ public String getTextGen(Object object) {
+ return getString("_UI_True_type"); //$NON-NLS-1$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/UnaryBooleanOperatorItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/UnaryBooleanOperatorItemProvider.java
new file mode 100644
index 000000000..35f3088c0
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/provider/UnaryBooleanOperatorItemProvider.java
@@ -0,0 +1,245 @@
+package org.eclipse.stem.core.predicate.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.predicate.PredicateFactory;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+import org.eclipse.stem.core.predicate.UnaryBooleanOperator;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.predicate.UnaryBooleanOperator} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class UnaryBooleanOperatorItemProvider
+ extends BooleanOperatorItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public UnaryBooleanOperatorItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ return getString("_UI_UnaryBooleanOperator_type"); //$NON-NLS-1$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(UnaryBooleanOperator.class)) {
+ case PredicatePackage.UNARY_BOOLEAN_OPERATOR__OPERAND:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+ PredicateFactory.eINSTANCE.createAnd()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+ PredicateFactory.eINSTANCE.createFalse()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+ PredicateFactory.eINSTANCE.createNot()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+ PredicateFactory.eINSTANCE.createOr()));
+
+// newChildDescriptors.add
+// (createChildParameter
+// (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+// PredicateFactory.eINSTANCE.createPredicateReference()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+ PredicateFactory.eINSTANCE.createTrue()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+ PredicateFactory.eINSTANCE.createPredicateExpression()));
+
+// newChildDescriptors.add
+// (createChildParameter
+// (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+// PredicateFactory.eINSTANCE.createIdentifiablePredicateExpression()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+ PredicateFactory.eINSTANCE.createElapsedTimeTest()));
+ } // collectNewChildDescriptors
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ //@Override
+ protected void collectNewChildDescriptorsGen(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+ PredicateFactory.eINSTANCE.createAnd()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+ PredicateFactory.eINSTANCE.createFalse()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+ PredicateFactory.eINSTANCE.createNot()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+ PredicateFactory.eINSTANCE.createOr()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+ PredicateFactory.eINSTANCE.createPredicateReference()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+ PredicateFactory.eINSTANCE.createTrue()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+ PredicateFactory.eINSTANCE.createPredicateExpression()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+ PredicateFactory.eINSTANCE.createIdentifiablePredicateExpression()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (PredicatePackage.Literals.UNARY_BOOLEAN_OPERATOR__OPERAND,
+ PredicateFactory.eINSTANCE.createElapsedTimeTest()));
+ }
+
+} // UnaryBooleanOperatorItemProvider
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/util/PredicateAdapterFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/util/PredicateAdapterFactory.java
new file mode 100644
index 000000000..72391a294
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/util/PredicateAdapterFactory.java
@@ -0,0 +1,506 @@
+package org.eclipse.stem.core.predicate.util;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.SanityChecker;
+import org.eclipse.stem.core.predicate.And;
+import org.eclipse.stem.core.predicate.BooleanExpression;
+import org.eclipse.stem.core.predicate.BooleanOperator;
+import org.eclipse.stem.core.predicate.ElapsedTimeTest;
+import org.eclipse.stem.core.predicate.False;
+import org.eclipse.stem.core.predicate.IdentifiablePredicate;
+import org.eclipse.stem.core.predicate.IdentifiablePredicateExpression;
+import org.eclipse.stem.core.predicate.IdentifiableTest;
+import org.eclipse.stem.core.predicate.NaryBooleanOperator;
+import org.eclipse.stem.core.predicate.Not;
+import org.eclipse.stem.core.predicate.Or;
+import org.eclipse.stem.core.predicate.Predicate;
+import org.eclipse.stem.core.predicate.PredicateExpression;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+import org.eclipse.stem.core.predicate.PredicateReference;
+import org.eclipse.stem.core.predicate.Test;
+import org.eclipse.stem.core.predicate.TimeTest;
+import org.eclipse.stem.core.predicate.True;
+import org.eclipse.stem.core.predicate.UnaryBooleanOperator;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.PredicatePackage
+ * @generated
+ */
+public class PredicateAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static PredicatePackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PredicateAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = PredicatePackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PredicateSwitch<Adapter> modelSwitch =
+ new PredicateSwitch<Adapter>() {
+ @Override
+ public Adapter caseAnd(And object) {
+ return createAndAdapter();
+ }
+ @Override
+ public Adapter caseBooleanExpression(BooleanExpression object) {
+ return createBooleanExpressionAdapter();
+ }
+ @Override
+ public Adapter caseBooleanOperator(BooleanOperator object) {
+ return createBooleanOperatorAdapter();
+ }
+ @Override
+ public Adapter caseFalse(False object) {
+ return createFalseAdapter();
+ }
+ @Override
+ public Adapter caseNaryBooleanOperator(NaryBooleanOperator object) {
+ return createNaryBooleanOperatorAdapter();
+ }
+ @Override
+ public Adapter caseNot(Not object) {
+ return createNotAdapter();
+ }
+ @Override
+ public Adapter caseOr(Or object) {
+ return createOrAdapter();
+ }
+ @Override
+ public Adapter casePredicate(Predicate object) {
+ return createPredicateAdapter();
+ }
+ @Override
+ public Adapter casePredicateReference(PredicateReference object) {
+ return createPredicateReferenceAdapter();
+ }
+ @Override
+ public Adapter caseTest(Test object) {
+ return createTestAdapter();
+ }
+ @Override
+ public Adapter caseTrue(True object) {
+ return createTrueAdapter();
+ }
+ @Override
+ public Adapter caseUnaryBooleanOperator(UnaryBooleanOperator object) {
+ return createUnaryBooleanOperatorAdapter();
+ }
+ @Override
+ public Adapter casePredicateExpression(PredicateExpression object) {
+ return createPredicateExpressionAdapter();
+ }
+ @Override
+ public Adapter caseIdentifiablePredicate(IdentifiablePredicate object) {
+ return createIdentifiablePredicateAdapter();
+ }
+ @Override
+ public Adapter caseIdentifiablePredicateExpression(IdentifiablePredicateExpression object) {
+ return createIdentifiablePredicateExpressionAdapter();
+ }
+ @Override
+ public Adapter caseIdentifiableTest(IdentifiableTest object) {
+ return createIdentifiableTestAdapter();
+ }
+ @Override
+ public Adapter caseTimeTest(TimeTest object) {
+ return createTimeTestAdapter();
+ }
+ @Override
+ public Adapter caseElapsedTimeTest(ElapsedTimeTest object) {
+ return createElapsedTimeTestAdapter();
+ }
+ @Override
+ public <T> Adapter caseComparable(Comparable<T> object) {
+ return createComparableAdapter();
+ }
+ @Override
+ public Adapter caseSanityChecker(SanityChecker object) {
+ return createSanityCheckerAdapter();
+ }
+ @Override
+ public Adapter caseIdentifiable(Identifiable object) {
+ return createIdentifiableAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.And <em>And</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.And
+ * @generated
+ */
+ public Adapter createAndAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.BooleanExpression <em>Boolean Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.BooleanExpression
+ * @generated
+ */
+ public Adapter createBooleanExpressionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.BooleanOperator <em>Boolean Operator</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.BooleanOperator
+ * @generated
+ */
+ public Adapter createBooleanOperatorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.False <em>False</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.False
+ * @generated
+ */
+ public Adapter createFalseAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.NaryBooleanOperator <em>Nary Boolean Operator</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.NaryBooleanOperator
+ * @generated
+ */
+ public Adapter createNaryBooleanOperatorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.Not <em>Not</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.Not
+ * @generated
+ */
+ public Adapter createNotAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.Or <em>Or</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.Or
+ * @generated
+ */
+ public Adapter createOrAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.Predicate <em>Predicate</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.Predicate
+ * @generated
+ */
+ public Adapter createPredicateAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.PredicateReference <em>Reference</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.PredicateReference
+ * @generated
+ */
+ public Adapter createPredicateReferenceAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.Test <em>Test</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.Test
+ * @generated
+ */
+ public Adapter createTestAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.True <em>True</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.True
+ * @generated
+ */
+ public Adapter createTrueAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.UnaryBooleanOperator <em>Unary Boolean Operator</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.UnaryBooleanOperator
+ * @generated
+ */
+ public Adapter createUnaryBooleanOperatorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.PredicateExpression <em>Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.PredicateExpression
+ * @generated
+ */
+ public Adapter createPredicateExpressionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.IdentifiablePredicate <em>Identifiable Predicate</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.IdentifiablePredicate
+ * @generated
+ */
+ public Adapter createIdentifiablePredicateAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.IdentifiablePredicateExpression <em>Identifiable Predicate Expression</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.IdentifiablePredicateExpression
+ * @generated
+ */
+ public Adapter createIdentifiablePredicateExpressionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.IdentifiableTest <em>Identifiable Test</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.IdentifiableTest
+ * @generated
+ */
+ public Adapter createIdentifiableTestAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.TimeTest <em>Time Test</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.TimeTest
+ * @generated
+ */
+ public Adapter createTimeTestAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.predicate.ElapsedTimeTest <em>Elapsed Time Test</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.predicate.ElapsedTimeTest
+ * @generated
+ */
+ public Adapter createElapsedTimeTestAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link java.lang.Comparable <em>Comparable</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see java.lang.Comparable
+ * @generated
+ */
+ public Adapter createComparableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.SanityChecker <em>Sanity Checker</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.common.SanityChecker
+ * @generated
+ */
+ public Adapter createSanityCheckerAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.Identifiable <em>Identifiable</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.common.Identifiable
+ * @generated
+ */
+ public Adapter createIdentifiableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} //PredicateAdapterFactory
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/util/PredicateSwitch.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/util/PredicateSwitch.java
new file mode 100644
index 000000000..518a58be5
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/predicate/util/PredicateSwitch.java
@@ -0,0 +1,606 @@
+package org.eclipse.stem.core.predicate.util;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.SanityChecker;
+import org.eclipse.stem.core.predicate.And;
+import org.eclipse.stem.core.predicate.BooleanExpression;
+import org.eclipse.stem.core.predicate.BooleanOperator;
+import org.eclipse.stem.core.predicate.ElapsedTimeTest;
+import org.eclipse.stem.core.predicate.False;
+import org.eclipse.stem.core.predicate.IdentifiablePredicate;
+import org.eclipse.stem.core.predicate.IdentifiablePredicateExpression;
+import org.eclipse.stem.core.predicate.IdentifiableTest;
+import org.eclipse.stem.core.predicate.NaryBooleanOperator;
+import org.eclipse.stem.core.predicate.Not;
+import org.eclipse.stem.core.predicate.Or;
+import org.eclipse.stem.core.predicate.Predicate;
+import org.eclipse.stem.core.predicate.PredicateExpression;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+import org.eclipse.stem.core.predicate.PredicateReference;
+import org.eclipse.stem.core.predicate.Test;
+import org.eclipse.stem.core.predicate.TimeTest;
+import org.eclipse.stem.core.predicate.True;
+import org.eclipse.stem.core.predicate.UnaryBooleanOperator;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.predicate.PredicatePackage
+ * @generated
+ */
+public class PredicateSwitch<T1> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static PredicatePackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PredicateSwitch() {
+ if (modelPackage == null) {
+ modelPackage = PredicatePackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ public T1 doSwitch(EObject theEObject) {
+ return doSwitch(theEObject.eClass(), theEObject);
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T1 doSwitch(EClass theEClass, EObject theEObject) {
+ if (theEClass.eContainer() == modelPackage) {
+ return doSwitch(theEClass.getClassifierID(), theEObject);
+ }
+ else {
+ List<EClass> eSuperTypes = theEClass.getESuperTypes();
+ return
+ eSuperTypes.isEmpty() ?
+ defaultCase(theEObject) :
+ doSwitch(eSuperTypes.get(0), theEObject);
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T1 doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case PredicatePackage.AND: {
+ And and = (And)theEObject;
+ T1 result = caseAnd(and);
+ if (result == null) result = caseNaryBooleanOperator(and);
+ if (result == null) result = caseBooleanOperator(and);
+ if (result == null) result = caseBooleanExpression(and);
+ if (result == null) result = casePredicate(and);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PredicatePackage.BOOLEAN_EXPRESSION: {
+ BooleanExpression booleanExpression = (BooleanExpression)theEObject;
+ T1 result = caseBooleanExpression(booleanExpression);
+ if (result == null) result = casePredicate(booleanExpression);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PredicatePackage.BOOLEAN_OPERATOR: {
+ BooleanOperator booleanOperator = (BooleanOperator)theEObject;
+ T1 result = caseBooleanOperator(booleanOperator);
+ if (result == null) result = caseBooleanExpression(booleanOperator);
+ if (result == null) result = casePredicate(booleanOperator);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PredicatePackage.FALSE: {
+ False false_ = (False)theEObject;
+ T1 result = caseFalse(false_);
+ if (result == null) result = caseTest(false_);
+ if (result == null) result = casePredicate(false_);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PredicatePackage.NARY_BOOLEAN_OPERATOR: {
+ NaryBooleanOperator naryBooleanOperator = (NaryBooleanOperator)theEObject;
+ T1 result = caseNaryBooleanOperator(naryBooleanOperator);
+ if (result == null) result = caseBooleanOperator(naryBooleanOperator);
+ if (result == null) result = caseBooleanExpression(naryBooleanOperator);
+ if (result == null) result = casePredicate(naryBooleanOperator);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PredicatePackage.NOT: {
+ Not not = (Not)theEObject;
+ T1 result = caseNot(not);
+ if (result == null) result = caseUnaryBooleanOperator(not);
+ if (result == null) result = caseBooleanOperator(not);
+ if (result == null) result = caseBooleanExpression(not);
+ if (result == null) result = casePredicate(not);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PredicatePackage.OR: {
+ Or or = (Or)theEObject;
+ T1 result = caseOr(or);
+ if (result == null) result = caseNaryBooleanOperator(or);
+ if (result == null) result = caseBooleanOperator(or);
+ if (result == null) result = caseBooleanExpression(or);
+ if (result == null) result = casePredicate(or);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PredicatePackage.PREDICATE: {
+ Predicate predicate = (Predicate)theEObject;
+ T1 result = casePredicate(predicate);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PredicatePackage.PREDICATE_REFERENCE: {
+ PredicateReference predicateReference = (PredicateReference)theEObject;
+ T1 result = casePredicateReference(predicateReference);
+ if (result == null) result = casePredicate(predicateReference);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PredicatePackage.TEST: {
+ Test test = (Test)theEObject;
+ T1 result = caseTest(test);
+ if (result == null) result = casePredicate(test);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PredicatePackage.TRUE: {
+ True true_ = (True)theEObject;
+ T1 result = caseTrue(true_);
+ if (result == null) result = caseTest(true_);
+ if (result == null) result = casePredicate(true_);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PredicatePackage.UNARY_BOOLEAN_OPERATOR: {
+ UnaryBooleanOperator unaryBooleanOperator = (UnaryBooleanOperator)theEObject;
+ T1 result = caseUnaryBooleanOperator(unaryBooleanOperator);
+ if (result == null) result = caseBooleanOperator(unaryBooleanOperator);
+ if (result == null) result = caseBooleanExpression(unaryBooleanOperator);
+ if (result == null) result = casePredicate(unaryBooleanOperator);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PredicatePackage.PREDICATE_EXPRESSION: {
+ PredicateExpression predicateExpression = (PredicateExpression)theEObject;
+ T1 result = casePredicateExpression(predicateExpression);
+ if (result == null) result = caseBooleanExpression(predicateExpression);
+ if (result == null) result = casePredicate(predicateExpression);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PredicatePackage.IDENTIFIABLE_PREDICATE: {
+ IdentifiablePredicate identifiablePredicate = (IdentifiablePredicate)theEObject;
+ T1 result = caseIdentifiablePredicate(identifiablePredicate);
+ if (result == null) result = caseIdentifiable(identifiablePredicate);
+ if (result == null) result = casePredicate(identifiablePredicate);
+ if (result == null) result = caseComparable(identifiablePredicate);
+ if (result == null) result = caseSanityChecker(identifiablePredicate);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PredicatePackage.IDENTIFIABLE_PREDICATE_EXPRESSION: {
+ IdentifiablePredicateExpression identifiablePredicateExpression = (IdentifiablePredicateExpression)theEObject;
+ T1 result = caseIdentifiablePredicateExpression(identifiablePredicateExpression);
+ if (result == null) result = caseIdentifiablePredicate(identifiablePredicateExpression);
+ if (result == null) result = casePredicateExpression(identifiablePredicateExpression);
+ if (result == null) result = caseIdentifiable(identifiablePredicateExpression);
+ if (result == null) result = caseBooleanExpression(identifiablePredicateExpression);
+ if (result == null) result = caseComparable(identifiablePredicateExpression);
+ if (result == null) result = caseSanityChecker(identifiablePredicateExpression);
+ if (result == null) result = casePredicate(identifiablePredicateExpression);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PredicatePackage.IDENTIFIABLE_TEST: {
+ IdentifiableTest identifiableTest = (IdentifiableTest)theEObject;
+ T1 result = caseIdentifiableTest(identifiableTest);
+ if (result == null) result = caseIdentifiablePredicate(identifiableTest);
+ if (result == null) result = caseTest(identifiableTest);
+ if (result == null) result = caseIdentifiable(identifiableTest);
+ if (result == null) result = casePredicate(identifiableTest);
+ if (result == null) result = caseComparable(identifiableTest);
+ if (result == null) result = caseSanityChecker(identifiableTest);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PredicatePackage.TIME_TEST: {
+ TimeTest timeTest = (TimeTest)theEObject;
+ T1 result = caseTimeTest(timeTest);
+ if (result == null) result = caseTest(timeTest);
+ if (result == null) result = casePredicate(timeTest);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case PredicatePackage.ELAPSED_TIME_TEST: {
+ ElapsedTimeTest elapsedTimeTest = (ElapsedTimeTest)theEObject;
+ T1 result = caseElapsedTimeTest(elapsedTimeTest);
+ if (result == null) result = caseTimeTest(elapsedTimeTest);
+ if (result == null) result = caseTest(elapsedTimeTest);
+ if (result == null) result = casePredicate(elapsedTimeTest);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>And</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>And</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseAnd(And object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Boolean Expression</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Boolean Expression</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseBooleanExpression(BooleanExpression object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Boolean Operator</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Boolean Operator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseBooleanOperator(BooleanOperator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>False</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>False</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseFalse(False object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Nary Boolean Operator</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Nary Boolean Operator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseNaryBooleanOperator(NaryBooleanOperator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Not</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Not</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseNot(Not object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Or</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Or</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseOr(Or object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Predicate</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Predicate</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 casePredicate(Predicate object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Reference</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Reference</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 casePredicateReference(PredicateReference object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Test</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Test</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseTest(Test object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>True</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>True</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseTrue(True object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Unary Boolean Operator</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Unary Boolean Operator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseUnaryBooleanOperator(UnaryBooleanOperator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Expression</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Expression</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 casePredicateExpression(PredicateExpression object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Identifiable Predicate</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Identifiable Predicate</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseIdentifiablePredicate(IdentifiablePredicate object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Identifiable Predicate Expression</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Identifiable Predicate Expression</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseIdentifiablePredicateExpression(IdentifiablePredicateExpression object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Identifiable Test</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Identifiable Test</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseIdentifiableTest(IdentifiableTest object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Time Test</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Time Test</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseTimeTest(TimeTest object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Elapsed Time Test</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Elapsed Time Test</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseElapsedTimeTest(ElapsedTimeTest object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Comparable</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Comparable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public <T> T1 caseComparable(Comparable<T> object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Sanity Checker</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Sanity Checker</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseSanityChecker(SanityChecker object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Identifiable</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Identifiable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseIdentifiable(Identifiable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ public T1 defaultCase(EObject object) {
+ return null;
+ }
+
+} //PredicateSwitch
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/Scenario.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/Scenario.java
new file mode 100644
index 000000000..ffd955773
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/Scenario.java
@@ -0,0 +1,264 @@
+// Scenario.java
+package org.eclipse.stem.core.scenario;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.logger.Logger;
+import org.eclipse.stem.core.model.Decorator;
+import org.eclipse.stem.core.model.Model;
+import org.eclipse.stem.core.sequencer.Sequencer;
+import org.eclipse.stem.core.solver.Solver;
+
+/**
+ * A <code>Scenario</code> combines all of the components required to create
+ * and execute a simulation. These are a {@link Model}, a {@link Sequencer},
+ * and a set of <code>Scenario</code> specific {@link Decorator}'s.
+ * <p>
+ * The {@link Model} contains the details of how to construct the
+ * <em>canonical graph</em> (see {@link Graph}. This graph is what the
+ * <code>Scenario</code> uses to represent the state of a simulation.
+ * <p>
+ * The {@link Sequencer} is used by the <code>Scenario</code> to determine the
+ * sequence of points in time through which the <code>Scenario</code> will
+ * {@link #step()} as it computes successive simulation states.
+ * <p>
+ * The "scenario decorators" implement that part of the simulation computation
+ * that is specific to the <code>Scenario</code>.
+ * <p>
+ * A <code>Scenario</code> implements all of the logic necessary to sequence
+ * through each step of a simulation and can be executed outside of the Eclipse
+ * workbench.
+ * </p>
+ * <p>
+ * This interface definition is also an "Annotated Java Interface" that defines
+ * one class in a <a href="http://www.uml.org/">UML</a> "model". The UML class
+ * diagram for the model is in the <code>documentation</code> folder of the
+ * project. This file and the other interfaces in this Java package are
+ * processed by the Eclipse Modeling Framework (aka EMF <a
+ * href="http://org.eclipse/emf">http://org.eclipse/emf</a>). to automatically
+ * generate an implementation of the model. EMF is documented in the book <a
+ * href="http://www.awprofessional.com/bookstore/product.asp?isbn=0131425420&rl=1">Eclipse
+ * Modeling Framework </a> by Budinsky, et al.
+ * </p>
+ *
+ * @see Model
+ * @see Graph
+ *
+ * @model
+ */
+public interface Scenario extends Identifiable {
+
+ /**
+ * This is the segment of the type URI that prefixes all other segments in a
+ * scenario URI.
+ */
+ String URI_TYPE_SCENARIO_SEGMENT = "scenario";
+
+ /**
+ * The {@link Model} contains all of the details required to construct the
+ * canonical graph that the scenario will use to represent the state of a
+ * simulation.
+ *
+ * @return the Scenario's {@link Model}.
+ * @model containment="false"
+ */
+ Model getModel();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.scenario.Scenario#getModel <em>Model</em>}' reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @param value the new value of the '<em>Model</em>' reference.
+ * @see #getModel()
+ * @generated
+ */
+ void setModel(Model value);
+
+ /**
+ * The {@link Sequencer} is the component that determines the time of the
+ * simulation. It generates {@link org.eclipse.stem.core.model.STEMTime}
+ * values that are then used by the {@link Decorator}'s to update the
+ * {@link org.eclipse.stem.core.graph.Label}'s in the canonical graph.
+ *
+ * @model containment="false"
+ */
+ Sequencer getSequencer();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.scenario.Scenario#getSequencer <em>Sequencer</em>}' reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @param value the new value of the '<em>Sequencer</em>' reference.
+ * @see #getSequencer()
+ * @generated
+ */
+ void setSequencer(Sequencer value);
+
+ /**
+ * The "scenario decorators" are the {@link Decorator}'s that can
+ * "decorate" (i.e., modify) the canonical {@link Graph} after it has been
+ * generated by the {@link Model}. Typically, these decorators are used to
+ * provide scenario specific initialization of a simulation independent of
+ * the more general initialization provided by the decorators in the
+ * {@link Model}.
+ * <p>
+ * For instance, in the case of a disease simulation, the model decorators
+ * would include one that implements a disease model. That decorator would
+ * have added labels to appropriate nodes to represent the state of the
+ * disease at specific geographic locations (likely most of the
+ * {@link Nodes} in the {@link Graph}). However, none of the disease states
+ * would (likely) include infected population members. The job of
+ * introducing the infected population members would be left up to a
+ * decorator contained in the scenario. Thus, one could reuse the same
+ * underlying {@link Model} in different {@link Scenario}'s. Each
+ * {@link Scenario}, in turn, would contain a {@link Decorator} configured
+ * for a different infection starting point.
+ * <p>
+ *
+ * @see #initialize()
+ * @see #getCanonicalGraph()
+ *
+ * @return the Scenario Decorators
+ * @model type="org.eclipse.stem.core.model.Decorator"
+ * containment="false"
+ */
+ EList<Decorator> getScenarioDecorators();
+
+ /**
+ * The canonical {@link Graph} is created by the scenario's {@link Model}
+ * when the method {@link #initialize()} is invoked. This occurs either by a
+ * direct call or more typically in the {@link #step()} method.
+ *
+ * @return the canonical graph, or null if the Scenario hasn't been
+ * initialized.
+ *
+ * @model resolveProxies="false" changeable="false"
+ */
+ Graph getCanonicalGraph();
+
+ /**
+ * Returns the value of the '<em><b>Progress</b></em>' attribute.
+ * The default value is <code>"0.0"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Progress</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Progress</em>' attribute.
+ * @see #setProgress(double)
+ * @see org.eclipse.stem.core.scenario.ScenarioPackage#getScenario_Progress()
+ * @model default="0.0" transient="true"
+ * @generated
+ */
+ double getProgress();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.scenario.Scenario#getProgress <em>Progress</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Progress</em>' attribute.
+ * @see #getProgress()
+ * @generated
+ */
+ void setProgress(double value);
+
+ /**
+ * Returns the value of the '<em><b>Solver</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Solver</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Solver</em>' containment reference.
+ * @see #setSolver(Solver)
+ * @see org.eclipse.stem.core.scenario.ScenarioPackage#getScenario_Solver()
+ * @model containment="true"
+ * @generated
+ */
+ Solver getSolver();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.scenario.Scenario#getSolver <em>Solver</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Solver</em>' containment reference.
+ * @see #getSolver()
+ * @generated
+ */
+ void setSolver(Solver value);
+
+ /**
+ * Returns the value of the '<em><b>Loggers</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.stem.core.logger.Logger}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Loggers</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Loggers</em>' reference list.
+ * @see org.eclipse.stem.core.scenario.ScenarioPackage#getScenario_Loggers()
+ * @model
+ * @generated
+ */
+ EList<Logger> getLoggers();
+
+ /**
+ * Sequence the model by one simulation step. This performs any
+ * initialization required to create the canonical {@link Graph}, if
+ * necessary.
+ *
+ * @param l Listener that needs to be notified of progress of decorators
+ * @see #initialize()
+ * @return <code>true</code> if the sequence can continue,
+ * <code>false</code> if the sequence has completed.
+ *
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ boolean step();
+
+ /**
+ * Reset the state of the canonical {@link Graph} to its initial state. This
+ * does not delete and recreate the canonical graph.
+ *
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ void reset();
+
+ /**
+ * Create the canonical {@link Graph} and perform initialization steps
+ * required to sequence the scenario. This method is called by
+ * {@link #step()} when it needs to create the canonical {@link Graph}. It
+ * can be called before a call to {@link #step()} to create the
+ * {@link Graph}.
+ *
+ * @see #getCanonicalGraph()
+ *
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ void initialize();
+
+ /**
+ * @return the title of the scenario as specified by its
+ * {@link org.eclipse.stem.core.common.DublinCore}, or, if no
+ * title is defined, return the empty string.
+ *
+ * @see Identifiable#getDublinCore()
+ *
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ String produceTitle();
+
+} // Scenario
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/ScenarioFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/ScenarioFactory.java
new file mode 100644
index 000000000..68875aadc
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/ScenarioFactory.java
@@ -0,0 +1,51 @@
+package org.eclipse.stem.core.scenario;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.scenario.ScenarioPackage
+ * @generated
+ */
+public interface ScenarioFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ ScenarioFactory eINSTANCE = org.eclipse.stem.core.scenario.impl.ScenarioFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Scenario</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Scenario</em>'.
+ * @generated
+ */
+ Scenario createScenario();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ ScenarioPackage getScenarioPackage();
+
+} //ScenarioFactory
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/ScenarioPackage.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/ScenarioPackage.java
new file mode 100644
index 000000000..59b942537
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/ScenarioPackage.java
@@ -0,0 +1,355 @@
+package org.eclipse.stem.core.scenario;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+//import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.stem.core.common.CommonPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.scenario.ScenarioFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface ScenarioPackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "scenario";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http:///org/eclipse/stem/core/scenario.ecore";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "org.eclipse.stem.core.scenario";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ ScenarioPackage eINSTANCE = org.eclipse.stem.core.scenario.impl.ScenarioPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.scenario.impl.ScenarioImpl <em>Scenario</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.scenario.impl.ScenarioImpl
+ * @see org.eclipse.stem.core.scenario.impl.ScenarioPackageImpl#getScenario()
+ * @generated
+ */
+ int SCENARIO = 0;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SCENARIO__URI = CommonPackage.IDENTIFIABLE__URI;
+
+ /**
+ * The feature id for the '<em><b>Type URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SCENARIO__TYPE_URI = CommonPackage.IDENTIFIABLE__TYPE_URI;
+
+ /**
+ * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SCENARIO__DUBLIN_CORE = CommonPackage.IDENTIFIABLE__DUBLIN_CORE;
+
+ /**
+ * The feature id for the '<em><b>Model</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SCENARIO__MODEL = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Sequencer</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SCENARIO__SEQUENCER = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Scenario Decorators</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SCENARIO__SCENARIO_DECORATORS = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Canonical Graph</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SCENARIO__CANONICAL_GRAPH = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Progress</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SCENARIO__PROGRESS = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Solver</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SCENARIO__SOLVER = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Loggers</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SCENARIO__LOGGERS = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 6;
+
+ /**
+ * The number of structural features of the '<em>Scenario</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SCENARIO_FEATURE_COUNT = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 7;
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.scenario.Scenario <em>Scenario</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Scenario</em>'.
+ * @see org.eclipse.stem.core.scenario.Scenario
+ * @generated
+ */
+ EClass getScenario();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.core.scenario.Scenario#getModel <em>Model</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Model</em>'.
+ * @see org.eclipse.stem.core.scenario.Scenario#getModel()
+ * @see #getScenario()
+ * @generated
+ */
+ EReference getScenario_Model();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.core.scenario.Scenario#getSequencer <em>Sequencer</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Sequencer</em>'.
+ * @see org.eclipse.stem.core.scenario.Scenario#getSequencer()
+ * @see #getScenario()
+ * @generated
+ */
+ EReference getScenario_Sequencer();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.stem.core.scenario.Scenario#getScenarioDecorators <em>Scenario Decorators</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Scenario Decorators</em>'.
+ * @see org.eclipse.stem.core.scenario.Scenario#getScenarioDecorators()
+ * @see #getScenario()
+ * @generated
+ */
+ EReference getScenario_ScenarioDecorators();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.core.scenario.Scenario#getCanonicalGraph <em>Canonical Graph</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Canonical Graph</em>'.
+ * @see org.eclipse.stem.core.scenario.Scenario#getCanonicalGraph()
+ * @see #getScenario()
+ * @generated
+ */
+ EReference getScenario_CanonicalGraph();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.scenario.Scenario#getProgress <em>Progress</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Progress</em>'.
+ * @see org.eclipse.stem.core.scenario.Scenario#getProgress()
+ * @see #getScenario()
+ * @generated
+ */
+ EAttribute getScenario_Progress();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.stem.core.scenario.Scenario#getSolver <em>Solver</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Solver</em>'.
+ * @see org.eclipse.stem.core.scenario.Scenario#getSolver()
+ * @see #getScenario()
+ * @generated
+ */
+ EReference getScenario_Solver();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.stem.core.scenario.Scenario#getLoggers <em>Loggers</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Loggers</em>'.
+ * @see org.eclipse.stem.core.scenario.Scenario#getLoggers()
+ * @see #getScenario()
+ * @generated
+ */
+ EReference getScenario_Loggers();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ ScenarioFactory getScenarioFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.scenario.impl.ScenarioImpl <em>Scenario</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.scenario.impl.ScenarioImpl
+ * @see org.eclipse.stem.core.scenario.impl.ScenarioPackageImpl#getScenario()
+ * @generated
+ */
+ EClass SCENARIO = eINSTANCE.getScenario();
+
+ /**
+ * The meta object literal for the '<em><b>Model</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SCENARIO__MODEL = eINSTANCE.getScenario_Model();
+
+ /**
+ * The meta object literal for the '<em><b>Sequencer</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SCENARIO__SEQUENCER = eINSTANCE.getScenario_Sequencer();
+
+ /**
+ * The meta object literal for the '<em><b>Scenario Decorators</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SCENARIO__SCENARIO_DECORATORS = eINSTANCE.getScenario_ScenarioDecorators();
+
+ /**
+ * The meta object literal for the '<em><b>Canonical Graph</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SCENARIO__CANONICAL_GRAPH = eINSTANCE.getScenario_CanonicalGraph();
+
+ /**
+ * The meta object literal for the '<em><b>Progress</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute SCENARIO__PROGRESS = eINSTANCE.getScenario_Progress();
+
+ /**
+ * The meta object literal for the '<em><b>Solver</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SCENARIO__SOLVER = eINSTANCE.getScenario_Solver();
+
+ /**
+ * The meta object literal for the '<em><b>Loggers</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SCENARIO__LOGGERS = eINSTANCE.getScenario_Loggers();
+
+}
+
+} //ScenarioPackage
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/impl/ScenarioFactoryImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/impl/ScenarioFactoryImpl.java
new file mode 100644
index 000000000..4ef976990
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/impl/ScenarioFactoryImpl.java
@@ -0,0 +1,103 @@
+package org.eclipse.stem.core.scenario.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.stem.core.scenario.Scenario;
+import org.eclipse.stem.core.scenario.ScenarioFactory;
+import org.eclipse.stem.core.scenario.ScenarioPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ScenarioFactoryImpl extends EFactoryImpl implements ScenarioFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static ScenarioFactory init() {
+ try {
+ ScenarioFactory theScenarioFactory = (ScenarioFactory)EPackage.Registry.INSTANCE.getEFactory("http:///org/eclipse/stem/core/scenario.ecore"); //$NON-NLS-1$
+ if (theScenarioFactory != null) {
+ return theScenarioFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new ScenarioFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ScenarioFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case ScenarioPackage.SCENARIO: return createScenario();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Scenario createScenario() {
+ ScenarioImpl scenario = new ScenarioImpl();
+ return scenario;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ScenarioPackage getScenarioPackage() {
+ return (ScenarioPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static ScenarioPackage getPackage() {
+ return ScenarioPackage.eINSTANCE;
+ }
+
+} //ScenarioFactoryImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/impl/ScenarioImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/impl/ScenarioImpl.java
new file mode 100644
index 000000000..d7369f76b
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/impl/ScenarioImpl.java
@@ -0,0 +1,790 @@
+package org.eclipse.stem.core.scenario.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2006, 2008 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
+ *******************************************************************************/
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.stem.core.CorePlugin;
+import org.eclipse.stem.core.STEMURI;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.impl.IdentifiableFilterImpl;
+import org.eclipse.stem.core.common.impl.IdentifiableImpl;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.graph.UnresolvedIdentifiable;
+import org.eclipse.stem.core.logger.Logger;
+import org.eclipse.stem.core.model.Decorator;
+import org.eclipse.stem.core.model.IntegrationDecorator;
+import org.eclipse.stem.core.model.Model;
+import org.eclipse.stem.core.model.ModelPackage;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.scenario.Scenario;
+import org.eclipse.stem.core.scenario.ScenarioPackage;
+import org.eclipse.stem.core.sequencer.Sequencer;
+import org.eclipse.stem.core.solver.Solver;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Scenario</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.scenario.impl.ScenarioImpl#getModel <em>Model</em>}</li>
+ * <li>{@link org.eclipse.stem.core.scenario.impl.ScenarioImpl#getSequencer <em>Sequencer</em>}</li>
+ * <li>{@link org.eclipse.stem.core.scenario.impl.ScenarioImpl#getScenarioDecorators <em>Scenario Decorators</em>}</li>
+ * <li>{@link org.eclipse.stem.core.scenario.impl.ScenarioImpl#getCanonicalGraph <em>Canonical Graph</em>}</li>
+ * <li>{@link org.eclipse.stem.core.scenario.impl.ScenarioImpl#getProgress <em>Progress</em>}</li>
+ * <li>{@link org.eclipse.stem.core.scenario.impl.ScenarioImpl#getSolver <em>Solver</em>}</li>
+ * <li>{@link org.eclipse.stem.core.scenario.impl.ScenarioImpl#getLoggers <em>Loggers</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ScenarioImpl extends IdentifiableImpl implements Scenario {
+
+
+ /**
+ * This is the {@link URI} used to identify the canonical {@link Graph} used during the
+ * simulation
+ *
+ * TODO is this the right URI to use for canonical graphs?
+ */
+ protected static final URI CANONICAL_GRAPH_URI = URI
+ .createURI("stem:canonicalgraph");
+
+ /**
+ * This flag controls the reporting of each and every unresolved
+ * {@link Identifiable} reference encountered when creating the
+ * canonical {@link Graph}. Default: <code>false</code>
+ */
+ public static boolean reportEachUnresolvedIdentifiable = true;
+
+ /**
+ * This flag controls the reporting of dangling air transport edges
+ */
+ public static boolean reportDanglingAirTransportEdges = false;
+
+ /**
+ * This flag controls the reporting of a single summary message of the
+ * number of unresolved {@link Identifiable} references encountered
+ * when creating the canonical {@link Graph}. Default: <code>false</code>
+ */
+ public static boolean reportNumberofUnresolvedIdentifiables = false;
+
+ /**
+ * The cached value of the '{@link #getModel() <em>Model</em>}' reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getModel()
+ * @generated
+ * @ordered
+ */
+ protected Model model;
+
+ /**
+ * The cached value of the '{@link #getSequencer() <em>Sequencer</em>}' reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getSequencer()
+ * @generated
+ * @ordered
+ */
+ protected Sequencer sequencer;
+
+ /**
+ * The cached value of the '{@link #getScenarioDecorators() <em>Scenario Decorators</em>}' reference list.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getScenarioDecorators()
+ * @generated
+ * @ordered
+ */
+ protected EList<Decorator> scenarioDecorators;
+
+ /**
+ * The cached value of the '{@link #getCanonicalGraph() <em>Canonical Graph</em>}' reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getCanonicalGraph()
+ * @generated
+ * @ordered
+ */
+ protected Graph canonicalGraph;
+
+ /**
+ * The default value of the '{@link #getProgress() <em>Progress</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getProgress()
+ * @generated
+ * @ordered
+ */
+ protected static final double PROGRESS_EDEFAULT = 0.0;
+
+ /**
+ * The cached value of the '{@link #getProgress() <em>Progress</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getProgress()
+ * @generated
+ * @ordered
+ */
+ protected double progress = PROGRESS_EDEFAULT;
+
+
+ /**
+ * The cached value of the '{@link #getSolver() <em>Solver</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSolver()
+ * @generated
+ * @ordered
+ */
+ protected Solver solver;
+
+
+ /**
+ * The cached value of the '{@link #getLoggers() <em>Loggers</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLoggers()
+ * @generated
+ * @ordered
+ */
+ protected EList<Logger> loggers;
+
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ protected ScenarioImpl() {
+ super();
+ setURI(STEMURI.createURI(URI_TYPE_SCENARIO_SEGMENT + "/"
+ + STEMURI.generateUniquePart()));
+ setTypeURI(STEMURI.SCENARIO_TYPE_URI);
+ } // ScenarioImpl
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ScenarioPackage.Literals.SCENARIO;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public Model getModel() {
+ if (model != null && model.eIsProxy()) {
+ InternalEObject oldModel = (InternalEObject)model;
+ model = (Model)eResolveProxy(oldModel);
+ if (model != oldModel) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, ScenarioPackage.SCENARIO__MODEL, oldModel, model));
+ }
+ }
+ return model;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Model basicGetModel() {
+ return model;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setModel(Model newModel) {
+ Model oldModel = model;
+ model = newModel;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ScenarioPackage.SCENARIO__MODEL, oldModel, model));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public Sequencer getSequencer() {
+ if (sequencer != null && sequencer.eIsProxy()) {
+ InternalEObject oldSequencer = (InternalEObject)sequencer;
+ sequencer = (Sequencer)eResolveProxy(oldSequencer);
+ if (sequencer != oldSequencer) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, ScenarioPackage.SCENARIO__SEQUENCER, oldSequencer, sequencer));
+ }
+ }
+ return sequencer;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Sequencer basicGetSequencer() {
+ return sequencer;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSequencer(Sequencer newSequencer) {
+ Sequencer oldSequencer = sequencer;
+ sequencer = newSequencer;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ScenarioPackage.SCENARIO__SEQUENCER, oldSequencer, sequencer));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ *
+ * The value is set in {@link #initialize()} <!-- end-user-doc -->
+ * @generated
+ */
+ public Graph getCanonicalGraph() {
+ return canonicalGraph;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public double getProgress() {
+ return progress;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setProgress(double newProgress) {
+ double oldProgress = progress;
+ progress = newProgress;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ScenarioPackage.SCENARIO__PROGRESS, oldProgress, progress));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Solver getSolver() {
+ return solver;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetSolver(Solver newSolver, NotificationChain msgs) {
+ Solver oldSolver = solver;
+ solver = newSolver;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ScenarioPackage.SCENARIO__SOLVER, oldSolver, newSolver);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSolver(Solver newSolver) {
+ if (newSolver != solver) {
+ NotificationChain msgs = null;
+ if (solver != null)
+ msgs = ((InternalEObject)solver).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ScenarioPackage.SCENARIO__SOLVER, null, msgs);
+ if (newSolver != null)
+ msgs = ((InternalEObject)newSolver).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ScenarioPackage.SCENARIO__SOLVER, null, msgs);
+ msgs = basicSetSolver(newSolver, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ScenarioPackage.SCENARIO__SOLVER, newSolver, newSolver));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Logger> getLoggers() {
+ if (loggers == null) {
+ loggers = new EObjectResolvingEList<Logger>(Logger.class, this, ScenarioPackage.SCENARIO__LOGGERS);
+ }
+ return loggers;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ *
+ * @return <code>true</code> if it's ok to call step again.
+ *
+ * <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public boolean step() {
+ boolean success = true;
+ // Is the sequencer finished?
+
+ if (!getSequencer().isTimeToStop()) {
+ // No
+ // Is there a canonical graph?
+ if (getCanonicalGraph() == null) {
+ // No
+ // Create one then...
+ initialize();
+ } // if no canonical graph
+
+ // Everything should be sane
+ assert sane();
+
+ final STEMTime currentTime = getSequencer().getNextTime();
+ final long timeDelta = getSequencer().getTimeDelta();
+
+ // First reset the progress of each decorator to 0. Necessary for the iteration progress
+ // bar
+ for (final Iterator<Decorator> decoratorIter = getCanonicalGraph()
+ .getDecorators().iterator(); decoratorIter.hasNext();) {
+ final Decorator decorator = decoratorIter.next();
+ decorator.setProgress(0.0);
+ }
+
+
+ // Do the one step using the current solver
+ success = getSolver().step(currentTime, timeDelta, getSequencer().getCycle());
+
+ // Everything should still be sane
+ assert sane();
+
+ // Once everyone is done, we tell the graph to switch all the
+ // dynamic labels to their next value and then we're ready to do
+ // it all over again.
+ getCanonicalGraph().switchToNextValue(currentTime);
+ } // if sequencer finished
+ if(success) success = !getSequencer().isTimeToStop();
+ return success;
+ } // step
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public void reset() {
+ // Set the sequencer back to its original state. The sequencer determines
+ // the "current" time of the simulation. This is a value used to compute
+ // the values of dynamic labels for each step of the simulation.
+ getSequencer().reset();
+
+ // Now give each decorator a chance to reset its dynamic
+ // labels in the canonical graph
+
+ // SED fix. We need to reset the disease models first since the infectors
+ // inoculators depend up those being reset beforehand.
+
+ ArrayList<Decorator>intDecorators = new ArrayList<Decorator>();
+ ArrayList<Decorator>otherDecorators = new ArrayList<Decorator>();
+
+ for (final Iterator<Decorator> graphDecoratorIter = getCanonicalGraph().getDecorators()
+ .iterator(); graphDecoratorIter.hasNext();) {
+ final Decorator decorator = graphDecoratorIter
+ .next();
+ if(decorator instanceof IntegrationDecorator)intDecorators.add(decorator);
+ else otherDecorators.add(decorator);
+ }
+ for(Decorator decorator:intDecorators){
+ // Is the Decorator enabled?
+ if (decorator.isEnabled()) {
+ // Yes
+ decorator.resetLabels();
+ } // if
+
+ // Reset the solver
+ } // for each decorator
+ for(Decorator decorator:otherDecorators){
+ // Is the Decorator enabled?
+ if (decorator.isEnabled()) {
+ // Yes
+ decorator.resetLabels();
+ } // if
+
+ // Reset the solver
+ } // for each decorator
+
+ getSolver().reset();
+ }// reset
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public void initialize() {
+ // Set the sequencer back to its original state. The sequencer determines
+ // the "current" time of the simulation. This is a value used to compute
+ // the values of dynamic labels for each step of the simulation.
+ getSequencer().reset();
+
+ // Prepare the model and perform any pre-processing steps necessary
+ // before we begin
+ STEMTime start = getSequencer().getStartTime();
+ getModel().prepare(start);
+
+ // Get the canonical graph that we'll use for the simulation. It
+ // maintains all state information during the simulation.
+ canonicalGraph = getModel().getCanonicalGraph(CANONICAL_GRAPH_URI, new IdentifiableFilterImpl(getModel().getDublinCore().getCoverage()), start);
+
+ getCanonicalGraph().setTime((STEMTime) EcoreUtil.copy(getSequencer()
+ .getCurrentTime()));
+
+ //
+ // Confirm, re-validate the set of unresolved identifiables.
+ // Because we add graphs to graphs and models to models some of the
+ // unresolved identifiables do not resolve until the very end
+ // this method does that check on the FINAL canonicalGraph.
+ //
+ Iterator<UnresolvedIdentifiable> unresolved = getCanonicalGraph().getUnresolvedIdentifiables().iterator();
+ while (unresolved.hasNext()) {
+ UnresolvedIdentifiable temp = unresolved.next();
+
+ if (getCanonicalGraph().getNodes().get(temp.getUnresolvedURI()) != null
+ || getCanonicalGraph().getEdges().get(temp.getUnresolvedURI()) != null) {
+ unresolved.remove();
+ }
+ }
+ // Just checking...
+ assert getCanonicalGraph().sane();
+
+ // Add the adaptors to keep track of the progress for each graph decorator
+ final double numDecorators = this.getCanonicalGraph().getDecorators().size();
+ final Scenario self = this;
+ for (final Iterator<Decorator> scenarioDecorators = this.getCanonicalGraph().getDecorators()
+ .iterator(); scenarioDecorators.hasNext();) {
+ final Decorator decorator = scenarioDecorators.next();
+ decorator.eAdapters().add(
+ new AdapterImpl() {
+ /**
+ * @override
+ */
+ public void notifyChanged(Notification msg)
+ {
+ Decorator decorator = (Decorator)msg.getNotifier();
+ switch(msg.getFeatureID(Decorator.class)) {
+ case ModelPackage.DECORATOR__PROGRESS:
+ double delta = (msg.getNewDoubleValue() - msg.getOldDoubleValue());
+ delta /= numDecorators;
+ self.setProgress(self.getProgress()+delta);
+ }
+ }
+ }
+ );
+ }
+
+ // The scenario decorators are regular decorators that are allowed to
+ // modified the state of the canonical graph to customize it for a
+ // particular scenario. At this point the model decorators have done
+ // their job. They were invoked above in the call to
+ // getCanonicalGraph(). Now it is the turn of the scenario decorators to
+ // add their final touch to the graph. The scenario decorators need to
+ // be copied however so that any state information they may generate and
+ // retain does not become part of the scenario itself.
+
+ ArrayList<Decorator>intDecorators = new ArrayList<Decorator>();
+ ArrayList<Decorator>otherDecorators = new ArrayList<Decorator>();
+ // Let the scenario decorators decorate the graph
+ for (final Iterator<Decorator> scenarioDecorators = this.getScenarioDecorators()
+ .iterator(); scenarioDecorators.hasNext();) {
+ final Decorator decorator = (Decorator) EcoreUtil.copy(scenarioDecorators.next());
+ if(decorator instanceof IntegrationDecorator)intDecorators.add(decorator);
+ else otherDecorators.add(decorator);
+ }
+ for(Decorator decorator:intDecorators) {
+ getCanonicalGraph().getDecorators().add(decorator);
+ decorator.decorateGraph(start);
+ decorator.setGraphDecorated(true);
+ }
+ for(Decorator decorator:otherDecorators) {
+ getCanonicalGraph().getDecorators().add(decorator);
+ decorator.decorateGraph(start);
+ decorator.setGraphDecorated(true);
+ }
+
+
+ // Are there any unresolved identifiables in the canonical graph and
+ // should we report them?
+ if ( reportEachUnresolvedIdentifiable && getCanonicalGraph().getUnresolvedIdentifiables().size() > 0) {
+ // Yes
+ logUnresolvedIdentifiables();
+ }
+
+ // Are there any unresolved identifiables in the canonical graph and
+ // should we report their number?
+ if ( reportNumberofUnresolvedIdentifiables && getCanonicalGraph().getUnresolvedIdentifiables().size() > 0) {
+ // Yes
+ logNumberOfUnresolvedIdentifiables();
+ }
+ } // initialize
+
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public String produceTitle() {
+ String retValue = this.getURI().lastSegment();
+ if(retValue.contains("."))
+ return retValue.substring(0, retValue.indexOf("."));
+ else return retValue;
+ } // produceTitle
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case ScenarioPackage.SCENARIO__SOLVER:
+ return basicSetSolver(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Decorator> getScenarioDecorators() {
+ if (scenarioDecorators == null) {
+ scenarioDecorators = new EObjectResolvingEList<Decorator>(Decorator.class, this, ScenarioPackage.SCENARIO__SCENARIO_DECORATORS);
+ }
+ return scenarioDecorators;
+ }
+
+ /**
+ * Report the unresolved Identifiables in the canonical graph
+ */
+ private void logUnresolvedIdentifiables() {
+ for (Iterator<UnresolvedIdentifiable> unresolvedIter = getCanonicalGraph()
+ .getUnresolvedIdentifiables().iterator(); unresolvedIter
+ .hasNext();) {
+ final UnresolvedIdentifiable unresolvedID = unresolvedIter
+ .next();
+
+ CorePlugin.logInformation("In scenario "
+ + produceTitle()
+ + "\", model \""
+ + unresolvedID.getModel().getDublinCore()
+ .getTitle()
+ + "\", the URI \""
+ + unresolvedID.getUnresolvedURI()
+ + "\" was unresolved."
+
+ , null);
+ } // for each unresolved identifiable
+ } // reportUnresolvedIdentifiables
+
+ /**
+ * Report the number of unresolved Identifiables in the canonical graph.
+ */
+ private void logNumberOfUnresolvedIdentifiables() {
+ CorePlugin.logInformation("In scenario \""
+ + produceTitle()
+ + "\", there were "
+ + getCanonicalGraph().getUnresolvedIdentifiables().size()
+ + " unresolved references."
+ , null);
+
+ } // logNumberOfUnresolvedIdentifiables
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ScenarioPackage.SCENARIO__MODEL:
+ if (resolve) return getModel();
+ return basicGetModel();
+ case ScenarioPackage.SCENARIO__SEQUENCER:
+ if (resolve) return getSequencer();
+ return basicGetSequencer();
+ case ScenarioPackage.SCENARIO__SCENARIO_DECORATORS:
+ return getScenarioDecorators();
+ case ScenarioPackage.SCENARIO__CANONICAL_GRAPH:
+ return getCanonicalGraph();
+ case ScenarioPackage.SCENARIO__PROGRESS:
+ return getProgress();
+ case ScenarioPackage.SCENARIO__SOLVER:
+ return getSolver();
+ case ScenarioPackage.SCENARIO__LOGGERS:
+ return getLoggers();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ScenarioPackage.SCENARIO__MODEL:
+ setModel((Model)newValue);
+ return;
+ case ScenarioPackage.SCENARIO__SEQUENCER:
+ setSequencer((Sequencer)newValue);
+ return;
+ case ScenarioPackage.SCENARIO__SCENARIO_DECORATORS:
+ getScenarioDecorators().clear();
+ getScenarioDecorators().addAll((Collection<? extends Decorator>)newValue);
+ return;
+ case ScenarioPackage.SCENARIO__PROGRESS:
+ setProgress((Double)newValue);
+ return;
+ case ScenarioPackage.SCENARIO__SOLVER:
+ setSolver((Solver)newValue);
+ return;
+ case ScenarioPackage.SCENARIO__LOGGERS:
+ getLoggers().clear();
+ getLoggers().addAll((Collection<? extends Logger>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ScenarioPackage.SCENARIO__MODEL:
+ setModel((Model)null);
+ return;
+ case ScenarioPackage.SCENARIO__SEQUENCER:
+ setSequencer((Sequencer)null);
+ return;
+ case ScenarioPackage.SCENARIO__SCENARIO_DECORATORS:
+ getScenarioDecorators().clear();
+ return;
+ case ScenarioPackage.SCENARIO__PROGRESS:
+ setProgress(PROGRESS_EDEFAULT);
+ return;
+ case ScenarioPackage.SCENARIO__SOLVER:
+ setSolver((Solver)null);
+ return;
+ case ScenarioPackage.SCENARIO__LOGGERS:
+ getLoggers().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ScenarioPackage.SCENARIO__MODEL:
+ return model != null;
+ case ScenarioPackage.SCENARIO__SEQUENCER:
+ return sequencer != null;
+ case ScenarioPackage.SCENARIO__SCENARIO_DECORATORS:
+ return scenarioDecorators != null && !scenarioDecorators.isEmpty();
+ case ScenarioPackage.SCENARIO__CANONICAL_GRAPH:
+ return canonicalGraph != null;
+ case ScenarioPackage.SCENARIO__PROGRESS:
+ return progress != PROGRESS_EDEFAULT;
+ case ScenarioPackage.SCENARIO__SOLVER:
+ return solver != null;
+ case ScenarioPackage.SCENARIO__LOGGERS:
+ return loggers != null && !loggers.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * @see org.eclipse.stem.common.impl.IdentifiableImpl#toString()
+ * @generated NOT
+ */
+ @Override
+ public String toString() {
+ // If there is a title then we use that otherwise we let the super class
+ // handle it
+ final String title = getDublinCore().getTitle();
+ return (title != null ? title : super.toString());
+ } // toString
+
+ /**
+ * @see org.eclipse.stem.common.impl.IdentifiableImpl#sane()
+ * @generated NOT
+ */
+ @Override
+ public boolean sane() {
+ boolean retValue = super.sane();
+
+ if (retValue && getModel() != null) {
+ retValue = retValue && getModel().sane();
+ assert retValue;
+ }
+
+ if (retValue && getCanonicalGraph() != null) {
+ retValue = retValue && getCanonicalGraph().sane();
+ assert retValue;
+ }
+
+ if (retValue && getSequencer() != null) {
+ retValue = retValue && getSequencer().sane();
+ assert retValue;
+ }
+
+ return retValue;
+ } // sane
+
+} // ScenarioImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/impl/ScenarioPackageImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/impl/ScenarioPackageImpl.java
new file mode 100644
index 000000000..150e05565
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/impl/ScenarioPackageImpl.java
@@ -0,0 +1,328 @@
+package org.eclipse.stem.core.scenario.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2006, 2008 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
+ *******************************************************************************/
+
+//import org.eclipse.emf.ecore.EAttribute;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.stem.core.common.CommonPackage;
+import org.eclipse.stem.core.common.impl.CommonPackageImpl;
+import org.eclipse.stem.core.experiment.ExperimentPackage;
+import org.eclipse.stem.core.experiment.impl.ExperimentPackageImpl;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.impl.GraphPackageImpl;
+import org.eclipse.stem.core.logger.LoggerPackage;
+import org.eclipse.stem.core.logger.impl.LoggerPackageImpl;
+import org.eclipse.stem.core.model.ModelPackage;
+import org.eclipse.stem.core.model.impl.ModelPackageImpl;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+import org.eclipse.stem.core.modifier.impl.ModifierPackageImpl;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+import org.eclipse.stem.core.predicate.impl.PredicatePackageImpl;
+import org.eclipse.stem.core.scenario.Scenario;
+import org.eclipse.stem.core.scenario.ScenarioFactory;
+import org.eclipse.stem.core.scenario.ScenarioPackage;
+import org.eclipse.stem.core.sequencer.SequencerPackage;
+import org.eclipse.stem.core.sequencer.impl.SequencerPackageImpl;
+import org.eclipse.stem.core.solver.SolverPackage;
+import org.eclipse.stem.core.solver.impl.SolverPackageImpl;
+import org.eclipse.stem.core.trigger.TriggerPackage;
+import org.eclipse.stem.core.trigger.impl.TriggerPackageImpl;
+
+//import org.eclipse.stem.core.sequencer.Sequencer;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ScenarioPackageImpl extends EPackageImpl implements ScenarioPackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass scenarioEClass = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.eclipse.stem.core.scenario.ScenarioPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private ScenarioPackageImpl() {
+ super(eNS_URI, ScenarioFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link ScenarioPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static ScenarioPackage init() {
+ if (isInited) return (ScenarioPackage)EPackage.Registry.INSTANCE.getEPackage(ScenarioPackage.eNS_URI);
+
+ // Obtain or create and register package
+ ScenarioPackageImpl theScenarioPackage = (ScenarioPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof ScenarioPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new ScenarioPackageImpl());
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ EcorePackage.eINSTANCE.eClass();
+
+ // Obtain or create and register interdependencies
+ CommonPackageImpl theCommonPackage = (CommonPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(CommonPackage.eNS_URI) instanceof CommonPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(CommonPackage.eNS_URI) : CommonPackage.eINSTANCE);
+ ExperimentPackageImpl theExperimentPackage = (ExperimentPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ExperimentPackage.eNS_URI) instanceof ExperimentPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ExperimentPackage.eNS_URI) : ExperimentPackage.eINSTANCE);
+ GraphPackageImpl theGraphPackage = (GraphPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(GraphPackage.eNS_URI) instanceof GraphPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(GraphPackage.eNS_URI) : GraphPackage.eINSTANCE);
+ ModelPackageImpl theModelPackage = (ModelPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ModelPackage.eNS_URI) instanceof ModelPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ModelPackage.eNS_URI) : ModelPackage.eINSTANCE);
+ ModifierPackageImpl theModifierPackage = (ModifierPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ModifierPackage.eNS_URI) instanceof ModifierPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ModifierPackage.eNS_URI) : ModifierPackage.eINSTANCE);
+ PredicatePackageImpl thePredicatePackage = (PredicatePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(PredicatePackage.eNS_URI) instanceof PredicatePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(PredicatePackage.eNS_URI) : PredicatePackage.eINSTANCE);
+ SequencerPackageImpl theSequencerPackage = (SequencerPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SequencerPackage.eNS_URI) instanceof SequencerPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SequencerPackage.eNS_URI) : SequencerPackage.eINSTANCE);
+ TriggerPackageImpl theTriggerPackage = (TriggerPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(TriggerPackage.eNS_URI) instanceof TriggerPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(TriggerPackage.eNS_URI) : TriggerPackage.eINSTANCE);
+ SolverPackageImpl theSolverPackage = (SolverPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SolverPackage.eNS_URI) instanceof SolverPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SolverPackage.eNS_URI) : SolverPackage.eINSTANCE);
+ LoggerPackageImpl theLoggerPackage = (LoggerPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(LoggerPackage.eNS_URI) instanceof LoggerPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(LoggerPackage.eNS_URI) : LoggerPackage.eINSTANCE);
+
+ // Create package meta-data objects
+ theScenarioPackage.createPackageContents();
+ theCommonPackage.createPackageContents();
+ theExperimentPackage.createPackageContents();
+ theGraphPackage.createPackageContents();
+ theModelPackage.createPackageContents();
+ theModifierPackage.createPackageContents();
+ thePredicatePackage.createPackageContents();
+ theSequencerPackage.createPackageContents();
+ theTriggerPackage.createPackageContents();
+ theSolverPackage.createPackageContents();
+ theLoggerPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theScenarioPackage.initializePackageContents();
+ theCommonPackage.initializePackageContents();
+ theExperimentPackage.initializePackageContents();
+ theGraphPackage.initializePackageContents();
+ theModelPackage.initializePackageContents();
+ theModifierPackage.initializePackageContents();
+ thePredicatePackage.initializePackageContents();
+ theSequencerPackage.initializePackageContents();
+ theTriggerPackage.initializePackageContents();
+ theSolverPackage.initializePackageContents();
+ theLoggerPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theScenarioPackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(ScenarioPackage.eNS_URI, theScenarioPackage);
+ return theScenarioPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getScenario() {
+ return scenarioEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getScenario_Model() {
+ return (EReference)scenarioEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getScenario_Sequencer() {
+ return (EReference)scenarioEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getScenario_ScenarioDecorators() {
+ return (EReference)scenarioEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getScenario_CanonicalGraph() {
+ return (EReference)scenarioEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getScenario_Progress() {
+ return (EAttribute)scenarioEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getScenario_Solver() {
+ return (EReference)scenarioEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getScenario_Loggers() {
+ return (EReference)scenarioEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ScenarioFactory getScenarioFactory() {
+ return (ScenarioFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ scenarioEClass = createEClass(SCENARIO);
+ createEReference(scenarioEClass, SCENARIO__MODEL);
+ createEReference(scenarioEClass, SCENARIO__SEQUENCER);
+ createEReference(scenarioEClass, SCENARIO__SCENARIO_DECORATORS);
+ createEReference(scenarioEClass, SCENARIO__CANONICAL_GRAPH);
+ createEAttribute(scenarioEClass, SCENARIO__PROGRESS);
+ createEReference(scenarioEClass, SCENARIO__SOLVER);
+ createEReference(scenarioEClass, SCENARIO__LOGGERS);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ CommonPackage theCommonPackage = (CommonPackage)EPackage.Registry.INSTANCE.getEPackage(CommonPackage.eNS_URI);
+ ModelPackage theModelPackage = (ModelPackage)EPackage.Registry.INSTANCE.getEPackage(ModelPackage.eNS_URI);
+ SequencerPackage theSequencerPackage = (SequencerPackage)EPackage.Registry.INSTANCE.getEPackage(SequencerPackage.eNS_URI);
+ GraphPackage theGraphPackage = (GraphPackage)EPackage.Registry.INSTANCE.getEPackage(GraphPackage.eNS_URI);
+ SolverPackage theSolverPackage = (SolverPackage)EPackage.Registry.INSTANCE.getEPackage(SolverPackage.eNS_URI);
+ LoggerPackage theLoggerPackage = (LoggerPackage)EPackage.Registry.INSTANCE.getEPackage(LoggerPackage.eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ scenarioEClass.getESuperTypes().add(theCommonPackage.getIdentifiable());
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(scenarioEClass, Scenario.class, "Scenario", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getScenario_Model(), theModelPackage.getModel(), null, "model", null, 0, 1, Scenario.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getScenario_Sequencer(), theSequencerPackage.getSequencer(), null, "sequencer", null, 0, 1, Scenario.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getScenario_ScenarioDecorators(), theModelPackage.getDecorator(), null, "scenarioDecorators", null, 0, -1, Scenario.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getScenario_CanonicalGraph(), theGraphPackage.getGraph(), null, "canonicalGraph", null, 0, 1, Scenario.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getScenario_Progress(), ecorePackage.getEDouble(), "progress", "0.0", 0, 1, Scenario.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+ initEReference(getScenario_Solver(), theSolverPackage.getSolver(), null, "solver", null, 0, 1, Scenario.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getScenario_Loggers(), theLoggerPackage.getLogger(), null, "loggers", null, 0, -1, Scenario.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ addEOperation(scenarioEClass, ecorePackage.getEBoolean(), "step", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ addEOperation(scenarioEClass, null, "reset", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ addEOperation(scenarioEClass, null, "initialize", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ addEOperation(scenarioEClass, ecorePackage.getEString(), "produceTitle", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} //ScenarioPackageImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/provider/ScenarioEditPlugin.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/provider/ScenarioEditPlugin.java
new file mode 100644
index 000000000..e52ee008b
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/provider/ScenarioEditPlugin.java
@@ -0,0 +1,104 @@
+package org.eclipse.stem.core.scenario.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.ui.EclipseUIPlugin;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.stem.core.common.provider.CommonEditPlugin;
+import org.eclipse.stem.core.graph.provider.GraphEditPlugin;
+import org.eclipse.stem.core.model.provider.ModelEditPlugin;
+
+/**
+ * This is the central singleton for the Scenario editor plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class ScenarioEditPlugin extends EMFPlugin {
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final ScenarioEditPlugin INSTANCE = new ScenarioEditPlugin();
+
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static Implementation plugin;
+
+ /**
+ * Create the instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ScenarioEditPlugin() {
+ super
+ (new ResourceLocator [] {
+ ModelEditPlugin.INSTANCE,
+ CommonEditPlugin.INSTANCE,
+ GraphEditPlugin.INSTANCE,
+ });
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the singleton instance.
+ * @generated
+ */
+ @Override
+ public ResourceLocator getPluginResourceLocator() {
+ return plugin;
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the singleton instance.
+ * @generated
+ */
+ public static Implementation getPlugin() {
+ return plugin;
+ }
+
+ /**
+ * The actual implementation of the Eclipse <b>Plugin</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static class Implementation extends EclipseUIPlugin {
+ /**
+ * Creates an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Implementation() {
+ super();
+
+ // Remember the static instance.
+ //
+ plugin = this;
+ }
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/provider/ScenarioItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/provider/ScenarioItemProvider.java
new file mode 100644
index 000000000..8dd1fc78b
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/provider/ScenarioItemProvider.java
@@ -0,0 +1,402 @@
+package org.eclipse.stem.core.scenario.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2006, 2008 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
+ *******************************************************************************/
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CompoundCommand;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.edit.command.AddCommand;
+import org.eclipse.emf.edit.command.CreateChildCommand;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.Utility;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.provider.CoreEditPlugin;
+import org.eclipse.stem.core.common.provider.IdentifiableItemProvider;
+import org.eclipse.stem.core.model.Decorator;
+import org.eclipse.stem.core.model.Model;
+import org.eclipse.stem.core.model.ModelFactory;
+import org.eclipse.stem.core.scenario.Scenario;
+import org.eclipse.stem.core.scenario.ScenarioPackage;
+import org.eclipse.stem.core.sequencer.Sequencer;
+import org.eclipse.stem.core.sequencer.SequencerFactory;
+import org.eclipse.stem.core.solver.SolverFactory;
+import org.eclipse.swt.dnd.DND;
+
+/**
+ * This is the item provider adapter for a
+ * {@link org.eclipse.stem.core.scenario.Scenario} object. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ScenarioItemProvider extends IdentifiableItemProvider implements
+ IEditingDomainItemProvider, IStructuredItemContentProvider,
+ ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public ScenarioItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(
+ Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(ScenarioPackage.Literals.SCENARIO__MODEL);
+ childrenFeatures.add(ScenarioPackage.Literals.SCENARIO__SEQUENCER);
+ childrenFeatures.add(ScenarioPackage.Literals.SCENARIO__SCENARIO_DECORATORS);
+ childrenFeatures.add(ScenarioPackage.Literals.SCENARIO__SOLVER);
+ childrenFeatures.add(ScenarioPackage.Literals.SCENARIO__LOGGERS);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns Scenario.gif. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage(
+ "full/customobj16/Scenario"));
+ }
+
+ /**
+ * This returns the label text for the adapted class. <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ return super.getText(object);
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getTextGen(Object object) {
+ URI labelValue = ((Scenario)object).getURI();
+ String label = labelValue == null ? null : labelValue.toString();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Scenario_type") : //$NON-NLS-1$
+ getString("_UI_Scenario_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(Scenario.class)) {
+ case ScenarioPackage.SCENARIO__PROGRESS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ case ScenarioPackage.SCENARIO__MODEL:
+ case ScenarioPackage.SCENARIO__SEQUENCER:
+ case ScenarioPackage.SCENARIO__SCENARIO_DECORATORS:
+ case ScenarioPackage.SCENARIO__SOLVER:
+ case ScenarioPackage.SCENARIO__LOGGERS:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s
+ * describing the children that can be created under this object. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(
+ Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+
+ newChildDescriptors.add
+ (createChildParameter
+ (ScenarioPackage.Literals.SCENARIO__MODEL,
+ ModelFactory.eINSTANCE.createModel()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (ScenarioPackage.Literals.SCENARIO__SEQUENCER,
+ SequencerFactory.eINSTANCE.createSequentialSequencer()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (ScenarioPackage.Literals.SCENARIO__SEQUENCER,
+ SequencerFactory.eINSTANCE.createRealTimeSequencer()));
+
+ newChildDescriptors.add
+ (createChildParameter
+ (ScenarioPackage.Literals.SCENARIO__SOLVER,
+ SolverFactory.eINSTANCE.createSolver()));
+ }
+
+ /**
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createAddCommand(org.eclipse.emf.edit.domain.EditingDomain,
+ * org.eclipse.emf.ecore.EObject,
+ * org.eclipse.emf.ecore.EStructuralFeature, java.util.Collection, int)
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ protected Command createAddCommand(EditingDomain domain, EObject owner,
+ EStructuralFeature feature, Collection<?> collection, int index) {
+ final Collection identifiableCollection = new ArrayList();
+ for (Object value : collection) {
+
+ Object temp = value;
+ if (value instanceof IFile) {
+ // Yes
+ final IFile iFile = (IFile) value;
+ final URI uri = URI.createFileURI(iFile.getLocation()
+ .toString());
+ final Identifiable identifable = Utility.getIdentifiable(uri);
+ identifiableCollection.add(identifable);
+ temp = identifable;
+ } // if IFile
+
+ else if (value instanceof String) {
+ // Yes
+ final String uriString = (String) value;
+ try {
+ final URI uri = URI.createURI(uriString);
+ final Identifiable identifable = Utility
+ .getIdentifiable(uri);
+ temp = identifable;
+ } catch (Exception e) {
+ // Ignore it
+ }
+ } // if String
+
+ if (temp instanceof Identifiable) {
+ identifiableCollection.add(temp);
+ }
+ } // for each Object
+
+ return super.createAddCommand(domain, owner, feature,
+ identifiableCollection, index);
+ } // createAddCommand
+
+ /**
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createSetCommand(org.eclipse.emf.edit.domain.EditingDomain,
+ * org.eclipse.emf.ecore.EObject,
+ * org.eclipse.emf.ecore.EStructuralFeature, java.lang.Object, int)
+ */
+ @Override
+ protected Command createSetCommand(EditingDomain domain, EObject owner,
+ EStructuralFeature feature, Object value, int index) {
+ // Are we setting the model during a drag and drop?
+ Object temp = value;
+
+ if (value instanceof IFile) {
+ // Yes
+ final IFile iFile = (IFile) value;
+ final URI uri = URI.createFileURI(iFile.getLocation().toString());
+ final Identifiable identifable = Utility.getIdentifiable(uri);
+ temp = identifable;
+ } // if IFile
+
+ else if (value instanceof String) {
+ // Yes
+ // These come from IdentifablePluginView
+ final String uriString = (String) value;
+ try {
+ final URI uri = URI.createURI(uriString);
+ final Identifiable identifable = Utility.getIdentifiable(uri);
+ temp = identifable;
+ } catch (Exception e) {
+ // Ignore it
+ }
+ } // if String
+
+ if (temp instanceof Model) {
+ return super.createSetCommand(domain, owner,
+ ScenarioPackage.eINSTANCE.getScenario_Model(), temp, index);
+ } else if (temp instanceof Sequencer) {
+ return super.createSetCommand(domain, owner,
+ ScenarioPackage.eINSTANCE.getScenario_Sequencer(), temp,
+ index);
+ } // if
+ else if (temp instanceof Decorator) {
+ return super
+ .createAddCommand(
+ domain,
+ owner,
+ ScenarioPackage.eINSTANCE
+ .getScenario()
+ .getEStructuralFeature(
+ ScenarioPackage.SCENARIO__SCENARIO_DECORATORS),
+ Arrays.asList((new Object[] { temp })), index);
+ } // if
+ else {
+
+ return super.createSetCommand(domain, owner, feature, value, index);
+ }
+ } // createSetCommand
+
+ /**
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createDragAndDropCommand(org.eclipse.emf.edit.domain.EditingDomain,
+ * java.lang.Object, float, int, int, java.util.Collection)
+ */
+ @Override
+ protected Command createDragAndDropCommand(EditingDomain domain,
+ Object owner, float location, int operations, int operation,
+ Collection<?> collection) {
+ // We add DND.DROP_LINK as an allowed operation because all drops will
+ // be links and some sources don't allow links, we convert to links
+ // anyway
+ return super.createDragAndDropCommand(domain, owner, location,
+ operations | DND.DROP_LINK, operation, collection);
+ } // createDragAndDropCommand
+
+ @Override
+ protected Command createCreateChildCommand(EditingDomain domain,
+ EObject owner, EStructuralFeature feature, Object value, int index,
+ Collection<?> collection) {
+
+ return new CreateChildCommand(domain, owner, feature, value,
+ collection, this) {
+ /**
+ * @see org.eclipse.emf.edit.command.CreateChildCommand#createCommand()
+ */
+ @Override
+ protected Command createCommand() {
+
+ Command retValue = null;
+
+ final Command createChildCommand = super.createCommand();
+
+ // Are we creating a Model?
+ if (child instanceof Model) {
+ // Yes
+ final Model model = (Model) child;
+ // Does the model have a resource already?
+ if (model.eResource() == null) {
+ // No
+ final Resource parentResource = owner.eResource();
+ final Command addCommand = new AddCommand(domain,
+ parentResource.getContents(), model);
+
+ final CompoundCommand compoundCommand = new CompoundCommand(
+ 0, createChildCommand.getLabel(),
+ createChildCommand.getDescription());
+ compoundCommand.append(createChildCommand);
+ compoundCommand.append(addCommand);
+ retValue = compoundCommand;
+ } // if Model does not have a resource
+ } // if Model
+ else {
+ retValue = createChildCommand;
+ }
+
+ return retValue;
+ }
+ }; // CreateChildCommand
+
+ }// createCreateChildCommand
+
+ /**
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#isWrappingNeeded(java.lang.Object)
+ */
+ @Override
+ protected boolean isWrappingNeeded(Object object) {
+ // return super.isWrappingNeeded(object);
+ // We return true so that non-containment references are wrapped. This
+ // enables the delete command in the editor's context menu.
+ return true;
+ } // isWrappingNeeded
+
+ /**
+ * Return the resource locator for this item provider's resources. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return CoreEditPlugin.INSTANCE;
+ }
+
+} // ScenarioItemProvider
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/provider/ScenarioItemProviderAdapterFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/provider/ScenarioItemProviderAdapterFactory.java
new file mode 100644
index 000000000..1b2e2174c
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/provider/ScenarioItemProviderAdapterFactory.java
@@ -0,0 +1,207 @@
+package org.eclipse.stem.core.scenario.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.scenario.util.ScenarioAdapterFactory;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ScenarioItemProviderAdapterFactory extends ScenarioAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+ /**
+ * This keeps track of the root adapter factory that delegates to this adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ComposedAdapterFactory parentAdapterFactory;
+
+ /**
+ * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+ /**
+ * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+ /**
+ * This constructs an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ScenarioItemProviderAdapterFactory() {
+ supportedTypes.add(IEditingDomainItemProvider.class);
+ supportedTypes.add(IStructuredItemContentProvider.class);
+ supportedTypes.add(ITreeItemContentProvider.class);
+ supportedTypes.add(IItemLabelProvider.class);
+ supportedTypes.add(IItemPropertySource.class);
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.scenario.Scenario} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ScenarioItemProvider scenarioItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.scenario.Scenario}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createScenarioAdapter() {
+ if (scenarioItemProvider == null) {
+ scenarioItemProvider = new ScenarioItemProvider(this);
+ }
+
+ return scenarioItemProvider;
+ }
+
+ /**
+ * This returns the root adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ComposeableAdapterFactory getRootAdapterFactory() {
+ return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+ }
+
+ /**
+ * This sets the composed adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+ this.parentAdapterFactory = parentAdapterFactory;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object type) {
+ return supportedTypes.contains(type) || super.isFactoryForType(type);
+ }
+
+ /**
+ * This implementation substitutes the factory itself as the key for the adapter.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter adapt(Notifier notifier, Object type) {
+ return super.adapt(notifier, this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public Object adapt(Object object, Object type) {
+ if (isFactoryForType(type)) {
+ Object adapter = super.adapt(object, type);
+ if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+ return adapter;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * This adds a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void addListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.addListener(notifyChangedListener);
+ }
+
+ /**
+ * This removes a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void removeListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.removeListener(notifyChangedListener);
+ }
+
+ /**
+ * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void fireNotifyChanged(Notification notification) {
+ changeNotifier.fireNotifyChanged(notification);
+
+ if (parentAdapterFactory != null) {
+ parentAdapterFactory.fireNotifyChanged(notification);
+ }
+ }
+
+ /**
+ * This disposes all of the item providers created by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void dispose() {
+ if (scenarioItemProvider != null) scenarioItemProvider.dispose();
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/util/ScenarioAdapterFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/util/ScenarioAdapterFactory.java
new file mode 100644
index 000000000..52e9f5df2
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/util/ScenarioAdapterFactory.java
@@ -0,0 +1,178 @@
+package org.eclipse.stem.core.scenario.util;
+
+/*******************************************************************************
+ * Copyright (c) 2006 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.SanityChecker;
+import org.eclipse.stem.core.scenario.Scenario;
+import org.eclipse.stem.core.scenario.ScenarioPackage;
+
+/**
+ * <!-- begin-user-doc --> The <b>Adapter Factory</b> for the model. It
+ * provides an adapter <code>createXXX</code> method for each class of the
+ * model. <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.scenario.ScenarioPackage
+ * @generated
+ */
+public class ScenarioAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ protected static ScenarioPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ * @generated
+ */
+ public ScenarioAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = ScenarioPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc --> This implementation returns <code>true</code>
+ * if the object is either the model's package or is an instance object of
+ * the model. <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch the delegates to the <code>createXXX</code> methods. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected ScenarioSwitch<Adapter> modelSwitch =
+ new ScenarioSwitch<Adapter>() {
+ @Override
+ public Adapter caseScenario(Scenario object) {
+ return createScenarioAdapter();
+ }
+ @Override
+ public <T> Adapter caseComparable(Comparable<T> object) {
+ return createComparableAdapter();
+ }
+ @Override
+ public Adapter caseSanityChecker(SanityChecker object) {
+ return createSanityCheckerAdapter();
+ }
+ @Override
+ public Adapter caseIdentifiable(Identifiable object) {
+ return createIdentifiableAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.scenario.Scenario <em>Scenario</em>}'.
+ * <!-- begin-user-doc --> This default implementation returns null so that
+ * we can easily ignore cases; it's useful to ignore a case when inheritance
+ * will catch all the cases anyway. <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.scenario.Scenario
+ * @generated
+ */
+ public Adapter createScenarioAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link java.lang.Comparable <em>Comparable</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see java.lang.Comparable
+ * @generated
+ */
+ public Adapter createComparableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.SanityChecker <em>Sanity Checker</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.common.SanityChecker
+ * @generated
+ */
+ public Adapter createSanityCheckerAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.Identifiable <em>Identifiable</em>}'.
+ * <!-- begin-user-doc --> This default implementation returns null so that
+ * we can easily ignore cases; it's useful to ignore a case when inheritance
+ * will catch all the cases anyway. <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.common.Identifiable
+ * @generated
+ */
+ public Adapter createIdentifiableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc --> This
+ * default implementation returns null. <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} // ScenarioAdapterFactory
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/util/ScenarioSwitch.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/util/ScenarioSwitch.java
new file mode 100644
index 000000000..d722dba82
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/scenario/util/ScenarioSwitch.java
@@ -0,0 +1,176 @@
+package org.eclipse.stem.core.scenario.util;
+
+/*******************************************************************************
+ * Copyright (c) 2006, 2008 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
+ *******************************************************************************/
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.SanityChecker;
+import org.eclipse.stem.core.scenario.Scenario;
+import org.eclipse.stem.core.scenario.ScenarioPackage;
+
+/**
+ * <!-- begin-user-doc --> The <b>Switch</b> for the model's inheritance
+ * hierarchy. It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object and proceeding up the
+ * inheritance hierarchy until a non-null result is returned, which is the
+ * result of the switch. <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.scenario.ScenarioPackage
+ * @generated
+ */
+public class ScenarioSwitch<T1> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ protected static ScenarioPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc --> <!--
+ * end-user-doc -->
+ * @generated
+ */
+ public ScenarioSwitch() {
+ if (modelPackage == null) {
+ modelPackage = ScenarioPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ public T1 doSwitch(EObject theEObject) {
+ return doSwitch(theEObject.eClass(), theEObject);
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T1 doSwitch(EClass theEClass, EObject theEObject) {
+ if (theEClass.eContainer() == modelPackage) {
+ return doSwitch(theEClass.getClassifierID(), theEObject);
+ }
+ else {
+ List<EClass> eSuperTypes = theEClass.getESuperTypes();
+ return
+ eSuperTypes.isEmpty() ?
+ defaultCase(theEObject) :
+ doSwitch(eSuperTypes.get(0), theEObject);
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T1 doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case ScenarioPackage.SCENARIO: {
+ Scenario scenario = (Scenario)theEObject;
+ T1 result = caseScenario(scenario);
+ if (result == null) result = caseIdentifiable(scenario);
+ if (result == null) result = caseComparable(scenario);
+ if (result == null) result = caseSanityChecker(scenario);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Scenario</em>'.
+ * <!-- begin-user-doc --> This implementation returns null; returning a
+ * non-null result will terminate the switch. <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Scenario</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseScenario(Scenario object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Comparable</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Comparable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public <T> T1 caseComparable(Comparable<T> object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Sanity Checker</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Sanity Checker</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseSanityChecker(SanityChecker object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Identifiable</em>'.
+ * <!-- begin-user-doc --> This implementation returns null; returning a
+ * non-null result will terminate the switch. <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Identifiable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseIdentifiable(Identifiable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc --> This implementation returns null; returning a
+ * non-null result will terminate the switch, but this is the last case
+ * anyway. <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ public T1 defaultCase(EObject object) {
+ return null;
+ }
+
+} // ScenarioSwitch
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/RealTimeSequencer.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/RealTimeSequencer.java
new file mode 100644
index 000000000..d59129d8a
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/RealTimeSequencer.java
@@ -0,0 +1,24 @@
+// RealTimeSequencer.java
+package org.eclipse.stem.core.sequencer;
+
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+
+/**
+ * A <code>RealTimeSequencer</code> is a <code>SequentialSequencer</code>
+ * that always as a starting time equal to the current time. It also sleeps for
+ * the time increment of the sequence.
+ *
+ * @model
+ */
+public interface RealTimeSequencer extends SequentialSequencer {
+
+} // RealTimeSequencer
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/Sequencer.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/Sequencer.java
new file mode 100644
index 000000000..82a90878a
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/Sequencer.java
@@ -0,0 +1,207 @@
+// Sequencer.java
+package org.eclipse.stem.core.sequencer;
+
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.scenario.Scenario;
+
+/**
+ * A <code>Sequencer</code> is the computational unit that determines the
+ * sequence of time points at which the state of the canonical {@link Graph} is
+ * determined. It also is used to determine if and when the sequence terminates.
+ * <p>
+ * This interface definition is also an "Annotated Java Interface" that defines
+ * one class in a <a href="http://www.uml.org/">UML</a> "model". The UML class
+ * diagram for the model is in the <code>documentation</code> folder of the
+ * project. This file and the other interfaces in this Java package are
+ * processed by the Eclipse Modeling Framework (aka EMF <a
+ * href="http://org.eclipse/emf">http://org.eclipse/emf</a>). to automatically
+ * generate an implementation of the model. EMF is documented in the book <a
+ * href="http://www.awprofessional.com/bookstore/product.asp?isbn=0131425420&rl=1">Eclipse
+ * Modeling Framework </a> by Budinsky, et al.
+ * </p>
+ * @see Scenario#step()
+ * @see STEMTime
+ *
+ * @model abstract="true"
+ */
+public interface Sequencer extends Identifiable {
+
+ /**
+ * This constant is returned by {@link #getEndTime()} when a
+ * <code>Sequencer</code> has no specified end time.
+ *
+ * @see #getDuration()
+ */
+ long UNKNOWN_DURATION = -1;
+
+ /**
+ * @return the start time of the sequence.
+ *
+ * @model resolveProxies="false" containment="true"
+ */
+ STEMTime getStartTime();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.sequencer.Sequencer#getStartTime <em>Start Time</em>}' containment reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @param value the new value of the '<em>Start Time</em>' containment reference.
+ * @see #getStartTime()
+ * @generated
+ */
+ void setStartTime(STEMTime value);
+
+ /**
+ * @return the ending time of the sequence, or {@link #UNKNOWN_DURATION} if
+ * there is no end time.
+ *
+ * @model resolveProxies="false" containment="true"
+ */
+ STEMTime getEndTime();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.sequencer.Sequencer#getEndTime <em>End Time</em>}' containment reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @param value the new value of the '<em>End Time</em>' containment reference.
+ * @see #getEndTime()
+ * @generated
+ */
+ void setEndTime(STEMTime value);
+
+ /**
+ * @return the <code>Sequencer</code>'s current time.
+ * @model resolveProxies="false" containment="true"
+ */
+ STEMTime getCurrentTime();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.sequencer.Sequencer#getCurrentTime <em>Current Time</em>}' containment reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @param value the new value of the '<em>Current Time</em>' containment reference.
+ * @see #getCurrentTime()
+ * @generated
+ */
+ void setCurrentTime(STEMTime value);
+
+ /**
+ * @return the next time point in the sequence. As a side effect the
+ * <code>sequencer</code>'s current time is set to the returned
+ * value.
+ *
+ * @model volatile="true" transient="true" changeable="false"
+ * resolveProxies="false"
+ */
+ STEMTime getNextTime();
+
+ /**
+ * @return the time difference in milliseconds between the value returned by
+ * {@link #getCurrentTime()} and that returned by
+ * {@link #getNextTime()}. This value is only valid after a call to
+ * {@link #getNextTime()}.
+ *
+ * @see #getCurrentTime()
+ * @see #getNextTime()
+ *
+ * @model changeable="false" transient="true"
+ */
+ long getTimeDelta();
+
+ /**
+ * @return the total amount of time in milliseconds in the sequence. If
+ * there is no ending time specified for the sequence, the constant
+ * {@link #UNKNOWN_DURATION} is returned.
+ * @see #UNKNOWN_DURATION
+ * @model default="-1"
+ */
+ long getDuration();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.sequencer.Sequencer#getDuration <em>Duration</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @param value the new value of the '<em>Duration</em>' attribute.
+ * @see #getDuration()
+ * @generated
+ */
+ void setDuration(long value);
+
+ /**
+ * @return true if the sequence has ended.
+ *
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ boolean isTimeToStop();
+
+ /**
+ * Set the current time to the start time and prepare the
+ * <code>Sequencer</code> to begin computing the next time from that
+ * point. Also reset the amount of work complete
+ *
+ * @see #getNextTime()
+ * @see #getWorkComplete()
+ *
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ void reset();
+
+ /**
+ * @return an value (0-100) representing the percentage of the sequence
+ * that has been completed so far. If no end time has been
+ * specified, then return 0.
+ *
+ * @model
+ */
+ double getWorkComplete();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.sequencer.Sequencer#getWorkComplete <em>Work Complete</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Work Complete</em>' attribute.
+ * @see #getWorkComplete()
+ * @generated
+ */
+ void setWorkComplete(double value);
+
+ /**
+ * @return an integer (0-100) representing the percentage of the sequence
+ * that was completed by the time delta between the previous two
+ * calls to {@link #getNextTime()}
+ *
+ * @model volatile="true" transient="true" changeable="false"
+ */
+ int getWorkIncrement();
+
+ /**
+ * obtain the number of processing cycles that have
+ * been completed.
+ * It will return 0 if no cycles have been completed
+ * or if the simulation was reset or is just starting.
+ *
+ * @return number of completed cycles.
+ * @model default="0"
+ */
+ int getCycle();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.sequencer.Sequencer#getCycle <em>Cycle</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Cycle</em>' attribute.
+ * @see #getCycle()
+ * @generated
+ */
+ void setCycle(int value);
+
+} // Sequencer
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/SequencerFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/SequencerFactory.java
new file mode 100644
index 000000000..faa6ff7ff
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/SequencerFactory.java
@@ -0,0 +1,60 @@
+package org.eclipse.stem.core.sequencer;
+
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.sequencer.SequencerPackage
+ * @generated
+ */
+public interface SequencerFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ SequencerFactory eINSTANCE = org.eclipse.stem.core.sequencer.impl.SequencerFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Real Time Sequencer</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Real Time Sequencer</em>'.
+ * @generated
+ */
+ RealTimeSequencer createRealTimeSequencer();
+
+ /**
+ * Returns a new object of class '<em>Sequential Sequencer</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Sequential Sequencer</em>'.
+ * @generated
+ */
+ SequentialSequencer createSequentialSequencer();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ SequencerPackage getSequencerPackage();
+
+} //SequencerFactory
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/SequencerPackage.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/SequencerPackage.java
new file mode 100644
index 000000000..32e765a49
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/SequencerPackage.java
@@ -0,0 +1,788 @@
+package org.eclipse.stem.core.sequencer;
+
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.stem.core.common.CommonPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.sequencer.SequencerFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface SequencerPackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "sequencer"; //$NON-NLS-1$
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http:///org/eclipse/stem/core/sequencer.ecore"; //$NON-NLS-1$
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "org.eclipse.stem.core.sequencer"; //$NON-NLS-1$
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ SequencerPackage eINSTANCE = org.eclipse.stem.core.sequencer.impl.SequencerPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.sequencer.impl.SequencerImpl <em>Sequencer</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.sequencer.impl.SequencerImpl
+ * @see org.eclipse.stem.core.sequencer.impl.SequencerPackageImpl#getSequencer()
+ * @generated
+ */
+ int SEQUENCER = 1;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENCER__URI = CommonPackage.IDENTIFIABLE__URI;
+
+ /**
+ * The feature id for the '<em><b>Type URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENCER__TYPE_URI = CommonPackage.IDENTIFIABLE__TYPE_URI;
+
+ /**
+ * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENCER__DUBLIN_CORE = CommonPackage.IDENTIFIABLE__DUBLIN_CORE;
+
+ /**
+ * The feature id for the '<em><b>Start Time</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENCER__START_TIME = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>End Time</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENCER__END_TIME = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Current Time</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENCER__CURRENT_TIME = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Next Time</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENCER__NEXT_TIME = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Time Delta</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENCER__TIME_DELTA = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Duration</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENCER__DURATION = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Time To Stop</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENCER__TIME_TO_STOP = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 6;
+
+ /**
+ * The feature id for the '<em><b>Work Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENCER__WORK_COMPLETE = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 7;
+
+ /**
+ * The feature id for the '<em><b>Work Increment</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENCER__WORK_INCREMENT = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 8;
+
+ /**
+ * The feature id for the '<em><b>Cycle</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENCER__CYCLE = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 9;
+
+ /**
+ * The number of structural features of the '<em>Sequencer</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENCER_FEATURE_COUNT = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 10;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.sequencer.impl.SequentialSequencerImpl <em>Sequential Sequencer</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.sequencer.impl.SequentialSequencerImpl
+ * @see org.eclipse.stem.core.sequencer.impl.SequencerPackageImpl#getSequentialSequencer()
+ * @generated
+ */
+ int SEQUENTIAL_SEQUENCER = 2;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENTIAL_SEQUENCER__URI = SEQUENCER__URI;
+
+ /**
+ * The feature id for the '<em><b>Type URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENTIAL_SEQUENCER__TYPE_URI = SEQUENCER__TYPE_URI;
+
+ /**
+ * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENTIAL_SEQUENCER__DUBLIN_CORE = SEQUENCER__DUBLIN_CORE;
+
+ /**
+ * The feature id for the '<em><b>Start Time</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENTIAL_SEQUENCER__START_TIME = SEQUENCER__START_TIME;
+
+ /**
+ * The feature id for the '<em><b>End Time</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENTIAL_SEQUENCER__END_TIME = SEQUENCER__END_TIME;
+
+ /**
+ * The feature id for the '<em><b>Current Time</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENTIAL_SEQUENCER__CURRENT_TIME = SEQUENCER__CURRENT_TIME;
+
+ /**
+ * The feature id for the '<em><b>Next Time</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENTIAL_SEQUENCER__NEXT_TIME = SEQUENCER__NEXT_TIME;
+
+ /**
+ * The feature id for the '<em><b>Time Delta</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENTIAL_SEQUENCER__TIME_DELTA = SEQUENCER__TIME_DELTA;
+
+ /**
+ * The feature id for the '<em><b>Duration</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENTIAL_SEQUENCER__DURATION = SEQUENCER__DURATION;
+
+ /**
+ * The feature id for the '<em><b>Time To Stop</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENTIAL_SEQUENCER__TIME_TO_STOP = SEQUENCER__TIME_TO_STOP;
+
+ /**
+ * The feature id for the '<em><b>Work Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENTIAL_SEQUENCER__WORK_COMPLETE = SEQUENCER__WORK_COMPLETE;
+
+ /**
+ * The feature id for the '<em><b>Work Increment</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENTIAL_SEQUENCER__WORK_INCREMENT = SEQUENCER__WORK_INCREMENT;
+
+ /**
+ * The feature id for the '<em><b>Cycle</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENTIAL_SEQUENCER__CYCLE = SEQUENCER__CYCLE;
+
+ /**
+ * The feature id for the '<em><b>Time Increment</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENTIAL_SEQUENCER__TIME_INCREMENT = SEQUENCER_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Sequential Sequencer</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SEQUENTIAL_SEQUENCER_FEATURE_COUNT = SEQUENCER_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.sequencer.impl.RealTimeSequencerImpl <em>Real Time Sequencer</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.sequencer.impl.RealTimeSequencerImpl
+ * @see org.eclipse.stem.core.sequencer.impl.SequencerPackageImpl#getRealTimeSequencer()
+ * @generated
+ */
+ int REAL_TIME_SEQUENCER = 0;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REAL_TIME_SEQUENCER__URI = SEQUENTIAL_SEQUENCER__URI;
+
+ /**
+ * The feature id for the '<em><b>Type URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REAL_TIME_SEQUENCER__TYPE_URI = SEQUENTIAL_SEQUENCER__TYPE_URI;
+
+ /**
+ * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REAL_TIME_SEQUENCER__DUBLIN_CORE = SEQUENTIAL_SEQUENCER__DUBLIN_CORE;
+
+ /**
+ * The feature id for the '<em><b>Start Time</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REAL_TIME_SEQUENCER__START_TIME = SEQUENTIAL_SEQUENCER__START_TIME;
+
+ /**
+ * The feature id for the '<em><b>End Time</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REAL_TIME_SEQUENCER__END_TIME = SEQUENTIAL_SEQUENCER__END_TIME;
+
+ /**
+ * The feature id for the '<em><b>Current Time</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REAL_TIME_SEQUENCER__CURRENT_TIME = SEQUENTIAL_SEQUENCER__CURRENT_TIME;
+
+ /**
+ * The feature id for the '<em><b>Next Time</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REAL_TIME_SEQUENCER__NEXT_TIME = SEQUENTIAL_SEQUENCER__NEXT_TIME;
+
+ /**
+ * The feature id for the '<em><b>Time Delta</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REAL_TIME_SEQUENCER__TIME_DELTA = SEQUENTIAL_SEQUENCER__TIME_DELTA;
+
+ /**
+ * The feature id for the '<em><b>Duration</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REAL_TIME_SEQUENCER__DURATION = SEQUENTIAL_SEQUENCER__DURATION;
+
+ /**
+ * The feature id for the '<em><b>Time To Stop</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REAL_TIME_SEQUENCER__TIME_TO_STOP = SEQUENTIAL_SEQUENCER__TIME_TO_STOP;
+
+ /**
+ * The feature id for the '<em><b>Work Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REAL_TIME_SEQUENCER__WORK_COMPLETE = SEQUENTIAL_SEQUENCER__WORK_COMPLETE;
+
+ /**
+ * The feature id for the '<em><b>Work Increment</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REAL_TIME_SEQUENCER__WORK_INCREMENT = SEQUENTIAL_SEQUENCER__WORK_INCREMENT;
+
+ /**
+ * The feature id for the '<em><b>Cycle</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REAL_TIME_SEQUENCER__CYCLE = SEQUENTIAL_SEQUENCER__CYCLE;
+
+ /**
+ * The feature id for the '<em><b>Time Increment</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REAL_TIME_SEQUENCER__TIME_INCREMENT = SEQUENTIAL_SEQUENCER__TIME_INCREMENT;
+
+ /**
+ * The number of structural features of the '<em>Real Time Sequencer</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int REAL_TIME_SEQUENCER_FEATURE_COUNT = SEQUENTIAL_SEQUENCER_FEATURE_COUNT + 0;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.sequencer.RealTimeSequencer <em>Real Time Sequencer</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Real Time Sequencer</em>'.
+ * @see org.eclipse.stem.core.sequencer.RealTimeSequencer
+ * @generated
+ */
+ EClass getRealTimeSequencer();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.sequencer.Sequencer <em>Sequencer</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Sequencer</em>'.
+ * @see org.eclipse.stem.core.sequencer.Sequencer
+ * @generated
+ */
+ EClass getSequencer();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.stem.core.sequencer.Sequencer#getStartTime <em>Start Time</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Start Time</em>'.
+ * @see org.eclipse.stem.core.sequencer.Sequencer#getStartTime()
+ * @see #getSequencer()
+ * @generated
+ */
+ EReference getSequencer_StartTime();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.stem.core.sequencer.Sequencer#getEndTime <em>End Time</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>End Time</em>'.
+ * @see org.eclipse.stem.core.sequencer.Sequencer#getEndTime()
+ * @see #getSequencer()
+ * @generated
+ */
+ EReference getSequencer_EndTime();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.stem.core.sequencer.Sequencer#getCurrentTime <em>Current Time</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Current Time</em>'.
+ * @see org.eclipse.stem.core.sequencer.Sequencer#getCurrentTime()
+ * @see #getSequencer()
+ * @generated
+ */
+ EReference getSequencer_CurrentTime();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.core.sequencer.Sequencer#getNextTime <em>Next Time</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Next Time</em>'.
+ * @see org.eclipse.stem.core.sequencer.Sequencer#getNextTime()
+ * @see #getSequencer()
+ * @generated
+ */
+ EReference getSequencer_NextTime();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.sequencer.Sequencer#getTimeDelta <em>Time Delta</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Time Delta</em>'.
+ * @see org.eclipse.stem.core.sequencer.Sequencer#getTimeDelta()
+ * @see #getSequencer()
+ * @generated
+ */
+ EAttribute getSequencer_TimeDelta();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.sequencer.Sequencer#getDuration <em>Duration</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Duration</em>'.
+ * @see org.eclipse.stem.core.sequencer.Sequencer#getDuration()
+ * @see #getSequencer()
+ * @generated
+ */
+ EAttribute getSequencer_Duration();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.sequencer.Sequencer#isTimeToStop <em>Time To Stop</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Time To Stop</em>'.
+ * @see org.eclipse.stem.core.sequencer.Sequencer#isTimeToStop()
+ * @see #getSequencer()
+ * @generated
+ */
+ EAttribute getSequencer_TimeToStop();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.sequencer.Sequencer#getWorkComplete <em>Work Complete</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Work Complete</em>'.
+ * @see org.eclipse.stem.core.sequencer.Sequencer#getWorkComplete()
+ * @see #getSequencer()
+ * @generated
+ */
+ EAttribute getSequencer_WorkComplete();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.sequencer.Sequencer#getWorkIncrement <em>Work Increment</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Work Increment</em>'.
+ * @see org.eclipse.stem.core.sequencer.Sequencer#getWorkIncrement()
+ * @see #getSequencer()
+ * @generated
+ */
+ EAttribute getSequencer_WorkIncrement();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.sequencer.Sequencer#getCycle <em>Cycle</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Cycle</em>'.
+ * @see org.eclipse.stem.core.sequencer.Sequencer#getCycle()
+ * @see #getSequencer()
+ * @generated
+ */
+ EAttribute getSequencer_Cycle();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.sequencer.SequentialSequencer <em>Sequential Sequencer</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Sequential Sequencer</em>'.
+ * @see org.eclipse.stem.core.sequencer.SequentialSequencer
+ * @generated
+ */
+ EClass getSequentialSequencer();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.sequencer.SequentialSequencer#getTimeIncrement <em>Time Increment</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Time Increment</em>'.
+ * @see org.eclipse.stem.core.sequencer.SequentialSequencer#getTimeIncrement()
+ * @see #getSequentialSequencer()
+ * @generated
+ */
+ EAttribute getSequentialSequencer_TimeIncrement();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ SequencerFactory getSequencerFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.sequencer.impl.RealTimeSequencerImpl <em>Real Time Sequencer</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.sequencer.impl.RealTimeSequencerImpl
+ * @see org.eclipse.stem.core.sequencer.impl.SequencerPackageImpl#getRealTimeSequencer()
+ * @generated
+ */
+ EClass REAL_TIME_SEQUENCER = eINSTANCE.getRealTimeSequencer();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.sequencer.impl.SequencerImpl <em>Sequencer</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.sequencer.impl.SequencerImpl
+ * @see org.eclipse.stem.core.sequencer.impl.SequencerPackageImpl#getSequencer()
+ * @generated
+ */
+ EClass SEQUENCER = eINSTANCE.getSequencer();
+
+ /**
+ * The meta object literal for the '<em><b>Start Time</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SEQUENCER__START_TIME = eINSTANCE.getSequencer_StartTime();
+
+ /**
+ * The meta object literal for the '<em><b>End Time</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SEQUENCER__END_TIME = eINSTANCE.getSequencer_EndTime();
+
+ /**
+ * The meta object literal for the '<em><b>Current Time</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SEQUENCER__CURRENT_TIME = eINSTANCE.getSequencer_CurrentTime();
+
+ /**
+ * The meta object literal for the '<em><b>Next Time</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SEQUENCER__NEXT_TIME = eINSTANCE.getSequencer_NextTime();
+
+ /**
+ * The meta object literal for the '<em><b>Time Delta</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute SEQUENCER__TIME_DELTA = eINSTANCE.getSequencer_TimeDelta();
+
+ /**
+ * The meta object literal for the '<em><b>Duration</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute SEQUENCER__DURATION = eINSTANCE.getSequencer_Duration();
+
+ /**
+ * The meta object literal for the '<em><b>Time To Stop</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute SEQUENCER__TIME_TO_STOP = eINSTANCE.getSequencer_TimeToStop();
+
+ /**
+ * The meta object literal for the '<em><b>Work Complete</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute SEQUENCER__WORK_COMPLETE = eINSTANCE.getSequencer_WorkComplete();
+
+ /**
+ * The meta object literal for the '<em><b>Work Increment</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute SEQUENCER__WORK_INCREMENT = eINSTANCE.getSequencer_WorkIncrement();
+
+ /**
+ * The meta object literal for the '<em><b>Cycle</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute SEQUENCER__CYCLE = eINSTANCE.getSequencer_Cycle();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.sequencer.impl.SequentialSequencerImpl <em>Sequential Sequencer</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.sequencer.impl.SequentialSequencerImpl
+ * @see org.eclipse.stem.core.sequencer.impl.SequencerPackageImpl#getSequentialSequencer()
+ * @generated
+ */
+ EClass SEQUENTIAL_SEQUENCER = eINSTANCE.getSequentialSequencer();
+
+ /**
+ * The meta object literal for the '<em><b>Time Increment</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute SEQUENTIAL_SEQUENCER__TIME_INCREMENT = eINSTANCE.getSequentialSequencer_TimeIncrement();
+
+ }
+
+} //SequencerPackage
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/SequentialSequencer.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/SequentialSequencer.java
new file mode 100644
index 000000000..a0c399a49
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/SequentialSequencer.java
@@ -0,0 +1,41 @@
+// SequentialSequencer.java
+package org.eclipse.stem.core.sequencer;
+
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+
+/**
+* A <code>SequentialSequencer</code> is a {@link Sequencer} that generates
+* sequential time points that are uniformly spaced at a constant interval of
+* time.
+*
+* @model
+*/
+public interface SequentialSequencer extends Sequencer {
+
+ /**
+ * @return the number of milliseconds between the time points returned by
+ * successive calls to {@link Sequencer#getNextTime()}.
+ *
+ * @model
+ */
+ long getTimeIncrement();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.sequencer.SequentialSequencer#getTimeIncrement <em>Time Increment</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @param value the new value of the '<em>Time Increment</em>' attribute.
+ * @see #getTimeIncrement()
+ * @generated
+ */
+ void setTimeIncrement(long value);
+
+} // SequentialSequencer
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/impl/RealTimeSequencerImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/impl/RealTimeSequencerImpl.java
new file mode 100644
index 000000000..38009cc31
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/impl/RealTimeSequencerImpl.java
@@ -0,0 +1,151 @@
+package org.eclipse.stem.core.sequencer.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.stem.core.CorePlugin;
+import org.eclipse.stem.core.model.ModelFactory;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.sequencer.RealTimeSequencer;
+import org.eclipse.stem.core.sequencer.SequencerPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Real Time Sequencer</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class RealTimeSequencerImpl extends SequentialSequencerImpl implements
+ RealTimeSequencer {
+ /**
+ * If <code>true</code> then the method {@link #getNextCalled()} has been
+ * called once. This is checked below in {@link #getStartTime()}.
+ */
+ private boolean getNextCalled = false;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ protected RealTimeSequencerImpl() {
+ super();
+ }
+
+ /**
+ * The start time for a real-time sequencer is the current time until there
+ * is a call to getNextTime(), at which point the start time is fixed.
+ *
+ * @see #getNextCalled
+ * @see #getNextTime()
+ */
+ @Override
+ public STEMTime getStartTime() {
+ // Has getNextTime been called yet.
+ if (!getNextCalled) {
+ // No
+ return getCurrentSystemTime();
+ } // if
+ else {
+ return super.getStartTime();
+ }
+ } // getStartTime
+
+ /**
+ * @see org.eclipse.stem.core.sequencer.impl.SequentialSequencerImpl#getNextTime()
+ */
+ @Override
+ public STEMTime getNextTime() {
+ super.getNextTime();
+
+ // Is this our first call?
+ if (!getNextCalled) {
+ // Yes
+ getNextCalled = true;
+ // The start time is right now
+ setStartTime(getCurrentSystemTime());
+ } // if
+
+ final STEMTime currentTime = getCurrentTime();
+
+ final STEMTime timeToWakeUp = super.getNextTime();
+
+ // Now we sleep until it is the next time
+ sleepUntil(timeToWakeUp, currentTime);
+
+ // We may or may not have woken up when we expected. Set the current
+ // time to be whatever the time is now.
+ setCurrentTime(getCurrentSystemTime());
+ return getCurrentTime();
+ } // getNextTime
+
+ /**
+ * @param currentTime TODO
+ * @param retValue
+ */
+ private void sleepUntil(STEMTime futureTime, STEMTime currentTime) {
+ final long millisecondsToSleep = futureTime.getTime().getTime()
+ - currentTime.getTime().getTime();
+ try {
+ Thread.sleep(millisecondsToSleep);
+ } catch (InterruptedException e) {
+ CorePlugin.logInformation(
+ "RealTimeSequencer's sleep was interrupted", e);
+ }
+ } // sleepUntil
+
+ /**
+ * @see org.eclipse.stem.core.sequencer.impl.SequencerImpl#setEndTime(org.eclipse.stem.core.model.STEMTime)
+ * @throws IllegalArgumentException
+ * if the new end time is before the current (wall clock) time.
+ */
+ @Override
+ public void setEndTime(STEMTime newEndTime) {
+ // The end time should be later than the current time
+ final STEMTime currentTime = getCurrentSystemTime();
+ if (isEndTimeBefore(currentTime)) {
+ super.setEndTime(newEndTime);
+ } // if
+ else {
+ throw new IllegalArgumentException("The new end time \""
+ + newEndTime.toString()
+ + "\" is not after the current time of \""
+ + currentTime.toString() + "\"");
+ } // else
+ } // setEndTime
+
+ /**
+ * @see org.eclipse.stem.core.sequencer.impl.SequentialSequencerImpl#reset()
+ */
+ @Override
+ public void reset() {
+ super.reset();
+ getNextCalled = false;
+ } // reset
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return SequencerPackage.Literals.REAL_TIME_SEQUENCER;
+ }
+
+ /**
+ * @return the current real wall clock time as returned by the system.
+ */
+ protected static STEMTime getCurrentSystemTime() {
+ return ModelFactory.eINSTANCE.createSTEMTime();
+ } // getCurrentSystemTime
+} // RealTimeSequencerImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/impl/SequencerFactoryImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/impl/SequencerFactoryImpl.java
new file mode 100644
index 000000000..3f8547ad5
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/impl/SequencerFactoryImpl.java
@@ -0,0 +1,115 @@
+package org.eclipse.stem.core.sequencer.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.stem.core.sequencer.RealTimeSequencer;
+import org.eclipse.stem.core.sequencer.SequencerFactory;
+import org.eclipse.stem.core.sequencer.SequencerPackage;
+import org.eclipse.stem.core.sequencer.SequentialSequencer;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SequencerFactoryImpl extends EFactoryImpl implements SequencerFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static SequencerFactory init() {
+ try {
+ SequencerFactory theSequencerFactory = (SequencerFactory)EPackage.Registry.INSTANCE.getEFactory("http:///org/eclipse/stem/core/sequencer.ecore"); //$NON-NLS-1$
+ if (theSequencerFactory != null) {
+ return theSequencerFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new SequencerFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SequencerFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case SequencerPackage.REAL_TIME_SEQUENCER: return createRealTimeSequencer();
+ case SequencerPackage.SEQUENTIAL_SEQUENCER: return createSequentialSequencer();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public RealTimeSequencer createRealTimeSequencer() {
+ RealTimeSequencerImpl realTimeSequencer = new RealTimeSequencerImpl();
+ return realTimeSequencer;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SequentialSequencer createSequentialSequencer() {
+ SequentialSequencerImpl sequentialSequencer = new SequentialSequencerImpl();
+ return sequentialSequencer;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SequencerPackage getSequencerPackage() {
+ return (SequencerPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static SequencerPackage getPackage() {
+ return SequencerPackage.eINSTANCE;
+ }
+
+} //SequencerFactoryImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/impl/SequencerImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/impl/SequencerImpl.java
new file mode 100644
index 000000000..9014c2645
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/impl/SequencerImpl.java
@@ -0,0 +1,607 @@
+package org.eclipse.stem.core.sequencer.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2007, 2008 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
+ *******************************************************************************/
+
+import java.text.SimpleDateFormat;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.stem.core.common.impl.IdentifiableImpl;
+import org.eclipse.stem.core.model.ModelFactory;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.sequencer.Sequencer;
+import org.eclipse.stem.core.sequencer.SequencerPackage;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Sequencer</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.sequencer.impl.SequencerImpl#getStartTime <em>Start Time</em>}</li>
+ * <li>{@link org.eclipse.stem.core.sequencer.impl.SequencerImpl#getEndTime <em>End Time</em>}</li>
+ * <li>{@link org.eclipse.stem.core.sequencer.impl.SequencerImpl#getCurrentTime <em>Current Time</em>}</li>
+ * <li>{@link org.eclipse.stem.core.sequencer.impl.SequencerImpl#getNextTime <em>Next Time</em>}</li>
+ * <li>{@link org.eclipse.stem.core.sequencer.impl.SequencerImpl#getTimeDelta <em>Time Delta</em>}</li>
+ * <li>{@link org.eclipse.stem.core.sequencer.impl.SequencerImpl#getDuration <em>Duration</em>}</li>
+ * <li>{@link org.eclipse.stem.core.sequencer.impl.SequencerImpl#isTimeToStop <em>Time To Stop</em>}</li>
+ * <li>{@link org.eclipse.stem.core.sequencer.impl.SequencerImpl#getWorkComplete <em>Work Complete</em>}</li>
+ * <li>{@link org.eclipse.stem.core.sequencer.impl.SequencerImpl#getWorkIncrement <em>Work Increment</em>}</li>
+ * <li>{@link org.eclipse.stem.core.sequencer.impl.SequencerImpl#getCycle <em>Cycle</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class SequencerImpl extends IdentifiableImpl implements
+ Sequencer {
+
+ /**
+ * The cached value of the '{@link #getStartTime() <em>Start Time</em>}'
+ * containment reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getStartTime()
+ * @generated NOT
+ * @ordered
+ */
+ protected STEMTime startTime = ModelFactory.eINSTANCE.createSTEMTime();
+
+ /**
+ * The cached value of the '{@link #getEndTime() <em>End Time</em>}' containment reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getEndTime()
+ * @generated
+ * @ordered
+ */
+ protected STEMTime endTime;
+
+ /**
+ * The cached value of the '{@link #getCurrentTime() <em>Current Time</em>}' containment reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getCurrentTime()
+ * @generated
+ * @ordered
+ */
+ protected STEMTime currentTime;
+
+ /**
+ * The default value of the '{@link #getTimeDelta() <em>Time Delta</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getTimeDelta()
+ * @generated
+ * @ordered
+ */
+ protected static final long TIME_DELTA_EDEFAULT = 0L;
+
+ /**
+ * The cached value of the '{@link #getTimeDelta() <em>Time Delta</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getTimeDelta()
+ * @generated
+ * @ordered
+ */
+ protected long timeDelta = TIME_DELTA_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDuration() <em>Duration</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getDuration()
+ * @generated
+ * @ordered
+ */
+ protected static final long DURATION_EDEFAULT = -1L;
+
+ /**
+ * The cached value of the '{@link #getDuration() <em>Duration</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getDuration()
+ * @generated
+ * @ordered
+ */
+ protected long duration = DURATION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #isTimeToStop() <em>Time To Stop</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #isTimeToStop()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean TIME_TO_STOP_EDEFAULT = false;
+
+ /**
+ * The default value of the '{@link #getWorkComplete() <em>Work Complete</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getWorkComplete()
+ * @generated
+ * @ordered
+ */
+ protected static final double WORK_COMPLETE_EDEFAULT = 0.0;
+
+ /**
+ * The cached value of the '{@link #getWorkComplete() <em>Work Complete</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getWorkComplete()
+ * @generated
+ * @ordered
+ */
+ protected double workComplete = WORK_COMPLETE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getWorkIncrement() <em>Work Increment</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getWorkIncrement()
+ * @generated
+ * @ordered
+ */
+ protected static final int WORK_INCREMENT_EDEFAULT = 0;
+
+ /**
+ * The default value of the '{@link #getCycle() <em>Cycle</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getCycle()
+ * @generated
+ * @ordered
+ */
+ protected static final int CYCLE_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getCycle() <em>Cycle</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getCycle()
+ * @generated
+ * @ordered
+ */
+ protected int cycle = CYCLE_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ protected SequencerImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return SequencerPackage.Literals.SEQUENCER;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public STEMTime getStartTime() {
+ return (STEMTime) EcoreUtil.copy(startTime);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetStartTime(STEMTime newStartTime,
+ NotificationChain msgs) {
+ STEMTime oldStartTime = startTime;
+ startTime = newStartTime;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, SequencerPackage.SEQUENCER__START_TIME, oldStartTime, newStartTime);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setStartTime(STEMTime newStartTime) {
+ if (newStartTime != startTime) {
+ NotificationChain msgs = null;
+ if (startTime != null)
+ msgs = ((InternalEObject)startTime).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - SequencerPackage.SEQUENCER__START_TIME, null, msgs);
+ if (newStartTime != null)
+ msgs = ((InternalEObject)newStartTime).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - SequencerPackage.SEQUENCER__START_TIME, null, msgs);
+ msgs = basicSetStartTime(newStartTime, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SequencerPackage.SEQUENCER__START_TIME, newStartTime, newStartTime));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public STEMTime getEndTime() {
+ return endTime;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetEndTime(STEMTime newEndTime,
+ NotificationChain msgs) {
+ STEMTime oldEndTime = endTime;
+ endTime = newEndTime;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, SequencerPackage.SEQUENCER__END_TIME, oldEndTime, newEndTime);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setEndTime(STEMTime newEndTime) {
+ if (newEndTime != endTime) {
+ NotificationChain msgs = null;
+ if (endTime != null)
+ msgs = ((InternalEObject)endTime).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - SequencerPackage.SEQUENCER__END_TIME, null, msgs);
+ if (newEndTime != null)
+ msgs = ((InternalEObject)newEndTime).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - SequencerPackage.SEQUENCER__END_TIME, null, msgs);
+ msgs = basicSetEndTime(newEndTime, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SequencerPackage.SEQUENCER__END_TIME, newEndTime, newEndTime));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public STEMTime getCurrentTime() {
+ // Is the current time set yet?
+ if (currentTime == null) {
+ // No
+ // Then the current time is the start time.
+ setCurrentTime((STEMTime) EcoreUtil.copy(getStartTime()));
+ }
+ return (STEMTime) EcoreUtil.copy(currentTime);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetCurrentTime(STEMTime newCurrentTime,
+ NotificationChain msgs) {
+ STEMTime oldCurrentTime = currentTime;
+ currentTime = newCurrentTime;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, SequencerPackage.SEQUENCER__CURRENT_TIME, oldCurrentTime, newCurrentTime);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setCurrentTime(STEMTime newCurrentTime) {
+ if (newCurrentTime != currentTime) {
+ NotificationChain msgs = null;
+ if (currentTime != null)
+ msgs = ((InternalEObject)currentTime).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - SequencerPackage.SEQUENCER__CURRENT_TIME, null, msgs);
+ if (newCurrentTime != null)
+ msgs = ((InternalEObject)newCurrentTime).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - SequencerPackage.SEQUENCER__CURRENT_TIME, null, msgs);
+ msgs = basicSetCurrentTime(newCurrentTime, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SequencerPackage.SEQUENCER__CURRENT_TIME, newCurrentTime, newCurrentTime));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public STEMTime getNextTime() {
+ setCycle(getCycle() + 1); // count this as a completed cycle
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public long getTimeDelta() {
+ return timeDelta;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public long getDuration() {
+ // Can we compute a duration?
+ if (duration == UNKNOWN_DURATION && getStartTime() != null
+ && getEndTime() != null) {
+ // Yes
+ setDuration(getEndTime().getTime().getTime() - getStartTime().getTime().getTime());
+ }
+ return duration;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDuration(long newDuration) {
+ long oldDuration = duration;
+ duration = newDuration;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SequencerPackage.SEQUENCER__DURATION, oldDuration, duration));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isTimeToStop() {
+ // TODO: implement this method to return the 'Time To Stop' attribute
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public double getWorkComplete() {
+ return workComplete;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setWorkComplete(double newWorkComplete) {
+ double oldWorkComplete = workComplete;
+ workComplete = newWorkComplete;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SequencerPackage.SEQUENCER__WORK_COMPLETE, oldWorkComplete, workComplete));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public int getWorkIncrement() {
+ // TODO: implement this method to return the 'Work Increment' attribute
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public int getCycle() {
+ return cycle;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public void setCycle(int newCycle) {
+ int oldCycle = cycle;
+ cycle = newCycle;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SequencerPackage.SEQUENCER__CYCLE, oldCycle, cycle));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public void reset() {
+ setCurrentTime((STEMTime) EcoreUtil.copy(getStartTime()));
+ setWorkComplete(0);
+ setCycle(CYCLE_EDEFAULT);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd,
+ int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case SequencerPackage.SEQUENCER__START_TIME:
+ return basicSetStartTime(null, msgs);
+ case SequencerPackage.SEQUENCER__END_TIME:
+ return basicSetEndTime(null, msgs);
+ case SequencerPackage.SEQUENCER__CURRENT_TIME:
+ return basicSetCurrentTime(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case SequencerPackage.SEQUENCER__START_TIME:
+ return getStartTime();
+ case SequencerPackage.SEQUENCER__END_TIME:
+ return getEndTime();
+ case SequencerPackage.SEQUENCER__CURRENT_TIME:
+ return getCurrentTime();
+ case SequencerPackage.SEQUENCER__NEXT_TIME:
+ return getNextTime();
+ case SequencerPackage.SEQUENCER__TIME_DELTA:
+ return getTimeDelta();
+ case SequencerPackage.SEQUENCER__DURATION:
+ return getDuration();
+ case SequencerPackage.SEQUENCER__TIME_TO_STOP:
+ return isTimeToStop();
+ case SequencerPackage.SEQUENCER__WORK_COMPLETE:
+ return getWorkComplete();
+ case SequencerPackage.SEQUENCER__WORK_INCREMENT:
+ return getWorkIncrement();
+ case SequencerPackage.SEQUENCER__CYCLE:
+ return getCycle();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case SequencerPackage.SEQUENCER__START_TIME:
+ setStartTime((STEMTime)newValue);
+ return;
+ case SequencerPackage.SEQUENCER__END_TIME:
+ setEndTime((STEMTime)newValue);
+ return;
+ case SequencerPackage.SEQUENCER__CURRENT_TIME:
+ setCurrentTime((STEMTime)newValue);
+ return;
+ case SequencerPackage.SEQUENCER__DURATION:
+ setDuration((Long)newValue);
+ return;
+ case SequencerPackage.SEQUENCER__WORK_COMPLETE:
+ setWorkComplete((Double)newValue);
+ return;
+ case SequencerPackage.SEQUENCER__CYCLE:
+ setCycle((Integer)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case SequencerPackage.SEQUENCER__START_TIME:
+ setStartTime((STEMTime)null);
+ return;
+ case SequencerPackage.SEQUENCER__END_TIME:
+ setEndTime((STEMTime)null);
+ return;
+ case SequencerPackage.SEQUENCER__CURRENT_TIME:
+ setCurrentTime((STEMTime)null);
+ return;
+ case SequencerPackage.SEQUENCER__DURATION:
+ setDuration(DURATION_EDEFAULT);
+ return;
+ case SequencerPackage.SEQUENCER__WORK_COMPLETE:
+ setWorkComplete(WORK_COMPLETE_EDEFAULT);
+ return;
+ case SequencerPackage.SEQUENCER__CYCLE:
+ setCycle(CYCLE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case SequencerPackage.SEQUENCER__START_TIME:
+ return startTime != null;
+ case SequencerPackage.SEQUENCER__END_TIME:
+ return endTime != null;
+ case SequencerPackage.SEQUENCER__CURRENT_TIME:
+ return currentTime != null;
+ case SequencerPackage.SEQUENCER__NEXT_TIME:
+ return getNextTime() != null;
+ case SequencerPackage.SEQUENCER__TIME_DELTA:
+ return timeDelta != TIME_DELTA_EDEFAULT;
+ case SequencerPackage.SEQUENCER__DURATION:
+ return duration != DURATION_EDEFAULT;
+ case SequencerPackage.SEQUENCER__TIME_TO_STOP:
+ return isTimeToStop() != TIME_TO_STOP_EDEFAULT;
+ case SequencerPackage.SEQUENCER__WORK_COMPLETE:
+ return workComplete != WORK_COMPLETE_EDEFAULT;
+ case SequencerPackage.SEQUENCER__WORK_INCREMENT:
+ return getWorkIncrement() != WORK_INCREMENT_EDEFAULT;
+ case SequencerPackage.SEQUENCER__CYCLE:
+ return cycle != CYCLE_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+
+ final SimpleDateFormat dateFormat = new SimpleDateFormat("MMM d, yyyy");
+
+ final StringBuffer result = new StringBuffer();
+ result.append(dateFormat.format(startTime.getTime()));
+
+ if (getEndTime() != null) {
+ result.append(" to ");
+ result.append(dateFormat.format(getEndTime().getTime()));
+ }
+
+ if (getCurrentTime() != null) {
+ result.append(", current=");
+ result.append(dateFormat.format(getCurrentTime().getTime()));
+ }
+
+ result.append(" (timeDelta: "); //$NON-NLS-1$
+ result.append(getTimeDelta());
+ result.append(" (");
+ final long days = getTimeDelta() / STEMTime.Units.DAY.getMilliseconds();
+ result.append(days);
+ result.append(days == 1 ? " day)" : " days)");
+ result.append(", duration: "); //$NON-NLS-1$
+ result.append(getDuration());
+ result.append(", workComplete: "); //$NON-NLS-1$
+ result.append(getWorkComplete());
+ result.append(')');
+ return result.toString();
+ }
+
+} // SequencerImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/impl/SequencerPackageImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/impl/SequencerPackageImpl.java
new file mode 100644
index 000000000..4f70af15e
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/impl/SequencerPackageImpl.java
@@ -0,0 +1,402 @@
+package org.eclipse.stem.core.sequencer.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2007, 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.stem.core.common.CommonPackage;
+import org.eclipse.stem.core.common.impl.CommonPackageImpl;
+import org.eclipse.stem.core.experiment.ExperimentPackage;
+import org.eclipse.stem.core.experiment.impl.ExperimentPackageImpl;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.impl.GraphPackageImpl;
+import org.eclipse.stem.core.logger.LoggerPackage;
+import org.eclipse.stem.core.logger.impl.LoggerPackageImpl;
+import org.eclipse.stem.core.model.ModelPackage;
+import org.eclipse.stem.core.model.impl.ModelPackageImpl;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+import org.eclipse.stem.core.modifier.impl.ModifierPackageImpl;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+import org.eclipse.stem.core.predicate.impl.PredicatePackageImpl;
+import org.eclipse.stem.core.scenario.ScenarioPackage;
+import org.eclipse.stem.core.scenario.impl.ScenarioPackageImpl;
+import org.eclipse.stem.core.sequencer.RealTimeSequencer;
+import org.eclipse.stem.core.sequencer.Sequencer;
+import org.eclipse.stem.core.sequencer.SequencerFactory;
+import org.eclipse.stem.core.sequencer.SequencerPackage;
+import org.eclipse.stem.core.sequencer.SequentialSequencer;
+import org.eclipse.stem.core.solver.SolverPackage;
+import org.eclipse.stem.core.solver.impl.SolverPackageImpl;
+import org.eclipse.stem.core.trigger.TriggerPackage;
+import org.eclipse.stem.core.trigger.impl.TriggerPackageImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SequencerPackageImpl extends EPackageImpl implements SequencerPackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass realTimeSequencerEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass sequencerEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass sequentialSequencerEClass = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.eclipse.stem.core.sequencer.SequencerPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private SequencerPackageImpl() {
+ super(eNS_URI, SequencerFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link SequencerPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static SequencerPackage init() {
+ if (isInited) return (SequencerPackage)EPackage.Registry.INSTANCE.getEPackage(SequencerPackage.eNS_URI);
+
+ // Obtain or create and register package
+ SequencerPackageImpl theSequencerPackage = (SequencerPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof SequencerPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new SequencerPackageImpl());
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ EcorePackage.eINSTANCE.eClass();
+
+ // Obtain or create and register interdependencies
+ CommonPackageImpl theCommonPackage = (CommonPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(CommonPackage.eNS_URI) instanceof CommonPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(CommonPackage.eNS_URI) : CommonPackage.eINSTANCE);
+ ExperimentPackageImpl theExperimentPackage = (ExperimentPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ExperimentPackage.eNS_URI) instanceof ExperimentPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ExperimentPackage.eNS_URI) : ExperimentPackage.eINSTANCE);
+ GraphPackageImpl theGraphPackage = (GraphPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(GraphPackage.eNS_URI) instanceof GraphPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(GraphPackage.eNS_URI) : GraphPackage.eINSTANCE);
+ ModelPackageImpl theModelPackage = (ModelPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ModelPackage.eNS_URI) instanceof ModelPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ModelPackage.eNS_URI) : ModelPackage.eINSTANCE);
+ ModifierPackageImpl theModifierPackage = (ModifierPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ModifierPackage.eNS_URI) instanceof ModifierPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ModifierPackage.eNS_URI) : ModifierPackage.eINSTANCE);
+ PredicatePackageImpl thePredicatePackage = (PredicatePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(PredicatePackage.eNS_URI) instanceof PredicatePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(PredicatePackage.eNS_URI) : PredicatePackage.eINSTANCE);
+ ScenarioPackageImpl theScenarioPackage = (ScenarioPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ScenarioPackage.eNS_URI) instanceof ScenarioPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ScenarioPackage.eNS_URI) : ScenarioPackage.eINSTANCE);
+ TriggerPackageImpl theTriggerPackage = (TriggerPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(TriggerPackage.eNS_URI) instanceof TriggerPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(TriggerPackage.eNS_URI) : TriggerPackage.eINSTANCE);
+ SolverPackageImpl theSolverPackage = (SolverPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SolverPackage.eNS_URI) instanceof SolverPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SolverPackage.eNS_URI) : SolverPackage.eINSTANCE);
+ LoggerPackageImpl theLoggerPackage = (LoggerPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(LoggerPackage.eNS_URI) instanceof LoggerPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(LoggerPackage.eNS_URI) : LoggerPackage.eINSTANCE);
+
+ // Create package meta-data objects
+ theSequencerPackage.createPackageContents();
+ theCommonPackage.createPackageContents();
+ theExperimentPackage.createPackageContents();
+ theGraphPackage.createPackageContents();
+ theModelPackage.createPackageContents();
+ theModifierPackage.createPackageContents();
+ thePredicatePackage.createPackageContents();
+ theScenarioPackage.createPackageContents();
+ theTriggerPackage.createPackageContents();
+ theSolverPackage.createPackageContents();
+ theLoggerPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theSequencerPackage.initializePackageContents();
+ theCommonPackage.initializePackageContents();
+ theExperimentPackage.initializePackageContents();
+ theGraphPackage.initializePackageContents();
+ theModelPackage.initializePackageContents();
+ theModifierPackage.initializePackageContents();
+ thePredicatePackage.initializePackageContents();
+ theScenarioPackage.initializePackageContents();
+ theTriggerPackage.initializePackageContents();
+ theSolverPackage.initializePackageContents();
+ theLoggerPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theSequencerPackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(SequencerPackage.eNS_URI, theSequencerPackage);
+ return theSequencerPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getRealTimeSequencer() {
+ return realTimeSequencerEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSequencer() {
+ return sequencerEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSequencer_StartTime() {
+ return (EReference)sequencerEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSequencer_EndTime() {
+ return (EReference)sequencerEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSequencer_CurrentTime() {
+ return (EReference)sequencerEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSequencer_NextTime() {
+ return (EReference)sequencerEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getSequencer_TimeDelta() {
+ return (EAttribute)sequencerEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getSequencer_Duration() {
+ return (EAttribute)sequencerEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getSequencer_TimeToStop() {
+ return (EAttribute)sequencerEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getSequencer_WorkComplete() {
+ return (EAttribute)sequencerEClass.getEStructuralFeatures().get(7);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getSequencer_WorkIncrement() {
+ return (EAttribute)sequencerEClass.getEStructuralFeatures().get(8);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getSequencer_Cycle() {
+ return (EAttribute)sequencerEClass.getEStructuralFeatures().get(9);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSequentialSequencer() {
+ return sequentialSequencerEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getSequentialSequencer_TimeIncrement() {
+ return (EAttribute)sequentialSequencerEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SequencerFactory getSequencerFactory() {
+ return (SequencerFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ realTimeSequencerEClass = createEClass(REAL_TIME_SEQUENCER);
+
+ sequencerEClass = createEClass(SEQUENCER);
+ createEReference(sequencerEClass, SEQUENCER__START_TIME);
+ createEReference(sequencerEClass, SEQUENCER__END_TIME);
+ createEReference(sequencerEClass, SEQUENCER__CURRENT_TIME);
+ createEReference(sequencerEClass, SEQUENCER__NEXT_TIME);
+ createEAttribute(sequencerEClass, SEQUENCER__TIME_DELTA);
+ createEAttribute(sequencerEClass, SEQUENCER__DURATION);
+ createEAttribute(sequencerEClass, SEQUENCER__TIME_TO_STOP);
+ createEAttribute(sequencerEClass, SEQUENCER__WORK_COMPLETE);
+ createEAttribute(sequencerEClass, SEQUENCER__WORK_INCREMENT);
+ createEAttribute(sequencerEClass, SEQUENCER__CYCLE);
+
+ sequentialSequencerEClass = createEClass(SEQUENTIAL_SEQUENCER);
+ createEAttribute(sequentialSequencerEClass, SEQUENTIAL_SEQUENCER__TIME_INCREMENT);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ CommonPackage theCommonPackage = (CommonPackage)EPackage.Registry.INSTANCE.getEPackage(CommonPackage.eNS_URI);
+ ModelPackage theModelPackage = (ModelPackage)EPackage.Registry.INSTANCE.getEPackage(ModelPackage.eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ realTimeSequencerEClass.getESuperTypes().add(this.getSequentialSequencer());
+ sequencerEClass.getESuperTypes().add(theCommonPackage.getIdentifiable());
+ sequentialSequencerEClass.getESuperTypes().add(this.getSequencer());
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(realTimeSequencerEClass, RealTimeSequencer.class, "RealTimeSequencer", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+ initEClass(sequencerEClass, Sequencer.class, "Sequencer", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getSequencer_StartTime(), theModelPackage.getSTEMTime(), null, "startTime", null, 0, 1, Sequencer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getSequencer_EndTime(), theModelPackage.getSTEMTime(), null, "endTime", null, 0, 1, Sequencer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getSequencer_CurrentTime(), theModelPackage.getSTEMTime(), null, "currentTime", null, 0, 1, Sequencer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getSequencer_NextTime(), theModelPackage.getSTEMTime(), null, "nextTime", null, 0, 1, Sequencer.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getSequencer_TimeDelta(), ecorePackage.getELong(), "timeDelta", null, 0, 1, Sequencer.class, IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getSequencer_Duration(), ecorePackage.getELong(), "duration", "-1", 0, 1, Sequencer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+ initEAttribute(getSequencer_TimeToStop(), ecorePackage.getEBoolean(), "timeToStop", null, 0, 1, Sequencer.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getSequencer_WorkComplete(), ecorePackage.getEDouble(), "workComplete", null, 0, 1, Sequencer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getSequencer_WorkIncrement(), ecorePackage.getEInt(), "workIncrement", null, 0, 1, Sequencer.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getSequencer_Cycle(), ecorePackage.getEInt(), "cycle", "0", 0, 1, Sequencer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+
+ addEOperation(sequencerEClass, null, "reset", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(sequentialSequencerEClass, SequentialSequencer.class, "SequentialSequencer", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEAttribute(getSequentialSequencer_TimeIncrement(), ecorePackage.getELong(), "timeIncrement", null, 0, 1, SequentialSequencer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} //SequencerPackageImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/impl/SequentialSequencerImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/impl/SequentialSequencerImpl.java
new file mode 100644
index 000000000..bce16439e
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/impl/SequentialSequencerImpl.java
@@ -0,0 +1,295 @@
+package org.eclipse.stem.core.sequencer.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.sequencer.SequencerPackage;
+import org.eclipse.stem.core.sequencer.SequentialSequencer;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>Sequential Sequencer</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.sequencer.impl.SequentialSequencerImpl#getTimeIncrement <em>Time Increment</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class SequentialSequencerImpl extends SequencerImpl implements
+ SequentialSequencer {
+ /**
+ * The default value of the '{@link #getTimeIncrement() <em>Time Increment</em>}'
+ * attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getTimeIncrement()
+ * @generated NOT
+ * @ordered
+ */
+ protected static final long TIME_INCREMENT_EDEFAULT = STEMTime.Units.DAY.getMilliseconds();
+
+ /**
+ * The cached value of the '{@link #getTimeIncrement() <em>Time Increment</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #getTimeIncrement()
+ * @generated
+ * @ordered
+ */
+ protected long timeIncrement = TIME_INCREMENT_EDEFAULT;
+
+ /**
+ * This is an accumulator of the work increment that keeps account of the
+ * fraction of the work increments until they exceed 1.0
+ */
+ private double workIncrementRunningTotal = 0.0;
+
+ /**
+ * If <code>true</code> then the last value has been returned by
+ * {@link #getNextTime()}
+ */
+ private boolean endOfSequenceReached = false;
+
+ /**
+ * If <code>true</code> then the method {@link #getNextTime()} has not
+ * been called yet so when it is it should return the value returned by
+ * {@link #getStartTime()}
+ */
+ private boolean getNextTimeNotCalled = true;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ protected SequentialSequencerImpl() {
+ super();
+ // The time delta is always the same with a sequential sequencer
+ timeDelta = getTimeIncrement();
+ } // SequentialSequencerImpl
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return SequencerPackage.Literals.SEQUENTIAL_SEQUENCER;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ public long getTimeIncrement() {
+ return timeIncrement;
+ }
+
+ /**
+ * @see org.eclipse.stem.scenario.impl.SequencerImpl#isTimeToStop()
+ */
+ @Override
+ public boolean isTimeToStop() {
+ return endOfSequenceReached || isEndTimeBefore(getCurrentTime());
+ } // isTimeToStop
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public void setTimeIncrement(long newTimeIncrement) {
+ long oldTimeIncrement = getTimeIncrement();
+ timeIncrement = newTimeIncrement;
+ timeDelta = getTimeIncrement();
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ SequencerPackage.SEQUENTIAL_SEQUENCER__TIME_INCREMENT,
+ oldTimeIncrement, getTimeIncrement()));
+ }
+
+ /**
+ * @see org.eclipse.stem.scenario.impl.SequencerImpl#getNextTime()
+ *
+ * Among other things that this does, it increments the
+ * count of the number of completed cycles.
+ *
+ */
+ @Override
+ public STEMTime getNextTime() {
+ super.getNextTime();
+
+ STEMTime nextTime = null;
+ // Is this our first call?
+ if (getNextTimeNotCalled) {
+ // Yes
+ // then the start time is the first value to return, we don't
+ // test for it relationship to the end time here. This makes
+ // it possible that the value returned would be after the end time.
+ nextTime = getStartTime();
+ getNextTimeNotCalled = false;
+ } // if first call
+ else {
+ final STEMTime potentialNextTime = getCurrentTime().addIncrement(
+ getTimeIncrement());
+
+ // Was an end time specified and is it before the potential next
+ // time?
+ if (isEndTimeBefore(potentialNextTime)) {
+ // Yes
+ // Then the end time is the next value to return
+ nextTime = (STEMTime) EcoreUtil.copy(getEndTime());
+ } // if end time specified
+ else {
+ nextTime = potentialNextTime;
+ } // else
+
+ // Are we returning a value equal to the specified end time?
+ if (nextTime.valueEquals(getEndTime())) {
+ // Yes
+ // ok, then this is the last value of the sequence. The next
+ // call
+ // to isTimeToStop() should fail
+ endOfSequenceReached = true;
+ } // if
+ } // else not first call
+ setCurrentTime(nextTime);
+ setWorkComplete(Math.min(getWorkComplete() + getWorkIncrement(), 100));
+
+ return getCurrentTime();
+ } // getNextTime
+
+ /**
+ * @param time
+ * @return <code>true</code> if the end time is specified and it is before
+ * the current time, <code>false</code>, otherwise.
+ */
+ protected boolean isEndTimeBefore(STEMTime time) {
+ return getEndTime() != null
+ && (getEndTime().getTime().before(time.getTime()));
+ } // isEndTimeBefore
+
+ /**
+ * @see org.eclipse.stem.scenario.impl.SequencerImpl#getWorkIncrement()
+ */
+ @SuppressWarnings("cast")
+ @Override
+ public int getWorkIncrement() {
+ int retValue = 0;
+ // Is there a work increment?
+ if (getDuration() != UNKNOWN_DURATION) {
+ // Yes
+ // The work increment could be fractional (<1.0). If so then it will
+ // not accumulate in the progress monitor. So, we keep a running sum
+ // of the work increment and when it exceeds 1.0 we return the value
+ // less the fractional part and keep that for the future.
+ workIncrementRunningTotal += 100.0 * (double) getTimeIncrement()
+ / (double) (getDuration()+getTimeIncrement());
+
+ // Do we have more than 1.0?
+ if (workIncrementRunningTotal >= 1.0) {
+ // Yes
+ retValue = (int) workIncrementRunningTotal;
+ workIncrementRunningTotal -= retValue;
+ }
+ }
+
+ return retValue;
+
+ } // getWorkIncrement
+
+ /**
+ * handle what needs to be done when a simulation is reset.
+ */
+ @Override
+ public void reset() {
+ super.reset();
+ workIncrementRunningTotal = 0.0;
+ getNextTimeNotCalled = true;
+ endOfSequenceReached = false;
+ } // reset
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case SequencerPackage.SEQUENTIAL_SEQUENCER__TIME_INCREMENT:
+ return getTimeIncrement();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case SequencerPackage.SEQUENTIAL_SEQUENCER__TIME_INCREMENT:
+ setTimeIncrement((Long)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case SequencerPackage.SEQUENTIAL_SEQUENCER__TIME_INCREMENT:
+ setTimeIncrement(TIME_INCREMENT_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case SequencerPackage.SEQUENTIAL_SEQUENCER__TIME_INCREMENT:
+ return timeIncrement != TIME_INCREMENT_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (timeIncrement: "); //$NON-NLS-1$
+ result.append(timeIncrement);
+ result.append(')');
+ return result.toString();
+ }
+
+} // SequentialSequencerImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/provider/RealTimeSequencerItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/provider/RealTimeSequencerItemProvider.java
new file mode 100644
index 000000000..ec4b9584c
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/provider/RealTimeSequencerItemProvider.java
@@ -0,0 +1,129 @@
+package org.eclipse.stem.core.sequencer.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.sequencer.RealTimeSequencer;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.sequencer.RealTimeSequencer} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class RealTimeSequencerItemProvider
+ extends SequentialSequencerItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public RealTimeSequencerItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This returns RealTimeSequencer.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/customobj16/RealTimeSequencer"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ return super.getText(object);
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getTextGen(Object object) {
+ URI labelValue = ((RealTimeSequencer)object).getURI();
+ String label = labelValue == null ? null : labelValue.toString();
+ return label == null || label.length() == 0 ?
+ getString("_UI_RealTimeSequencer_type") : //$NON-NLS-1$
+ getString("_UI_RealTimeSequencer_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/provider/SequencerItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/provider/SequencerItemProvider.java
new file mode 100644
index 000000000..f9a5f9fa1
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/provider/SequencerItemProvider.java
@@ -0,0 +1,392 @@
+package org.eclipse.stem.core.sequencer.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2006, 2008 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
+ *******************************************************************************/
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.common.provider.CoreEditPlugin;
+import org.eclipse.stem.core.common.provider.IdentifiableItemProvider;
+import org.eclipse.stem.core.sequencer.Sequencer;
+import org.eclipse.stem.core.sequencer.SequencerPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.sequencer.Sequencer} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SequencerItemProvider
+ extends IdentifiableItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SequencerItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addStartTimePropertyDescriptor(object);
+ addEndTimePropertyDescriptor(object);
+ addCurrentTimePropertyDescriptor(object);
+ addNextTimePropertyDescriptor(object);
+ addTimeDeltaPropertyDescriptor(object);
+ addDurationPropertyDescriptor(object);
+ addTimeToStopPropertyDescriptor(object);
+ addWorkCompletePropertyDescriptor(object);
+ addWorkIncrementPropertyDescriptor(object);
+ addCyclePropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Start Time feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addStartTimePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Sequencer_startTime_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Sequencer_startTime_feature", "_UI_Sequencer_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ SequencerPackage.Literals.SEQUENCER__START_TIME,
+ true,
+ false,
+ false,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the End Time feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addEndTimePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Sequencer_endTime_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Sequencer_endTime_feature", "_UI_Sequencer_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ SequencerPackage.Literals.SEQUENCER__END_TIME,
+ true,
+ false,
+ false,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Current Time feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addCurrentTimePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Sequencer_currentTime_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Sequencer_currentTime_feature", "_UI_Sequencer_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ SequencerPackage.Literals.SEQUENCER__CURRENT_TIME,
+ false,
+ false,
+ false,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Next Time feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addNextTimePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Sequencer_nextTime_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Sequencer_nextTime_feature", "_UI_Sequencer_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ SequencerPackage.Literals.SEQUENCER__NEXT_TIME,
+ false,
+ false,
+ false,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Time Delta feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addTimeDeltaPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Sequencer_timeDelta_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Sequencer_timeDelta_feature", "_UI_Sequencer_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ SequencerPackage.Literals.SEQUENCER__TIME_DELTA,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Duration feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addDurationPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Sequencer_duration_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Sequencer_duration_feature", "_UI_Sequencer_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ SequencerPackage.Literals.SEQUENCER__DURATION,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Time To Stop feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addTimeToStopPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Sequencer_timeToStop_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Sequencer_timeToStop_feature", "_UI_Sequencer_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ SequencerPackage.Literals.SEQUENCER__TIME_TO_STOP,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Work Complete feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addWorkCompletePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Sequencer_workComplete_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Sequencer_workComplete_feature", "_UI_Sequencer_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ SequencerPackage.Literals.SEQUENCER__WORK_COMPLETE,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Work Increment feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addWorkIncrementPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Sequencer_workIncrement_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Sequencer_workIncrement_feature", "_UI_Sequencer_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ SequencerPackage.Literals.SEQUENCER__WORK_INCREMENT,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Cycle feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addCyclePropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Sequencer_cycle_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Sequencer_cycle_feature", "_UI_Sequencer_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ SequencerPackage.Literals.SEQUENCER__CYCLE,
+ false,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ return super.getText(object);
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getTextGen(Object object) {
+ URI labelValue = ((Sequencer)object).getURI();
+ String label = labelValue == null ? null : labelValue.toString();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Sequencer_type") : //$NON-NLS-1$
+ getString("_UI_Sequencer_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This returns Sequencer.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/customobj16/Sequencer"));
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(Sequencer.class)) {
+ case SequencerPackage.SEQUENCER__START_TIME:
+ case SequencerPackage.SEQUENCER__END_TIME:
+ case SequencerPackage.SEQUENCER__CURRENT_TIME:
+ case SequencerPackage.SEQUENCER__TIME_DELTA:
+ case SequencerPackage.SEQUENCER__DURATION:
+ case SequencerPackage.SEQUENCER__TIME_TO_STOP:
+ case SequencerPackage.SEQUENCER__WORK_COMPLETE:
+ case SequencerPackage.SEQUENCER__WORK_INCREMENT:
+ case SequencerPackage.SEQUENCER__CYCLE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return CoreEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/provider/SequencerItemProviderAdapterFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/provider/SequencerItemProviderAdapterFactory.java
new file mode 100644
index 000000000..30bd01868
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/provider/SequencerItemProviderAdapterFactory.java
@@ -0,0 +1,231 @@
+package org.eclipse.stem.core.sequencer.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.sequencer.util.SequencerAdapterFactory;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SequencerItemProviderAdapterFactory extends SequencerAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+ /**
+ * This keeps track of the root adapter factory that delegates to this adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ComposedAdapterFactory parentAdapterFactory;
+
+ /**
+ * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+ /**
+ * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+ /**
+ * This constructs an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SequencerItemProviderAdapterFactory() {
+ supportedTypes.add(IEditingDomainItemProvider.class);
+ supportedTypes.add(IStructuredItemContentProvider.class);
+ supportedTypes.add(ITreeItemContentProvider.class);
+ supportedTypes.add(IItemLabelProvider.class);
+ supportedTypes.add(IItemPropertySource.class);
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.sequencer.RealTimeSequencer} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected RealTimeSequencerItemProvider realTimeSequencerItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.sequencer.RealTimeSequencer}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createRealTimeSequencerAdapter() {
+ if (realTimeSequencerItemProvider == null) {
+ realTimeSequencerItemProvider = new RealTimeSequencerItemProvider(this);
+ }
+
+ return realTimeSequencerItemProvider;
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.sequencer.SequentialSequencer} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SequentialSequencerItemProvider sequentialSequencerItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.sequencer.SequentialSequencer}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createSequentialSequencerAdapter() {
+ if (sequentialSequencerItemProvider == null) {
+ sequentialSequencerItemProvider = new SequentialSequencerItemProvider(this);
+ }
+
+ return sequentialSequencerItemProvider;
+ }
+
+ /**
+ * This returns the root adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ComposeableAdapterFactory getRootAdapterFactory() {
+ return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+ }
+
+ /**
+ * This sets the composed adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+ this.parentAdapterFactory = parentAdapterFactory;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object type) {
+ return supportedTypes.contains(type) || super.isFactoryForType(type);
+ }
+
+ /**
+ * This implementation substitutes the factory itself as the key for the adapter.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter adapt(Notifier notifier, Object type) {
+ return super.adapt(notifier, this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public Object adapt(Object object, Object type) {
+ if (isFactoryForType(type)) {
+ Object adapter = super.adapt(object, type);
+ if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+ return adapter;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * This adds a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void addListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.addListener(notifyChangedListener);
+ }
+
+ /**
+ * This removes a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void removeListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.removeListener(notifyChangedListener);
+ }
+
+ /**
+ * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void fireNotifyChanged(Notification notification) {
+ changeNotifier.fireNotifyChanged(notification);
+
+ if (parentAdapterFactory != null) {
+ parentAdapterFactory.fireNotifyChanged(notification);
+ }
+ }
+
+ /**
+ * This disposes all of the item providers created by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void dispose() {
+ if (realTimeSequencerItemProvider != null) realTimeSequencerItemProvider.dispose();
+ if (sequentialSequencerItemProvider != null) sequentialSequencerItemProvider.dispose();
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/provider/SequentialSequencerItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/provider/SequentialSequencerItemProvider.java
new file mode 100644
index 000000000..a5363d38d
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/provider/SequentialSequencerItemProvider.java
@@ -0,0 +1,163 @@
+package org.eclipse.stem.core.sequencer.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.sequencer.SequencerPackage;
+import org.eclipse.stem.core.sequencer.SequentialSequencer;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.sequencer.SequentialSequencer} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SequentialSequencerItemProvider
+ extends SequencerItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SequentialSequencerItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addTimeIncrementPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Time Increment feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addTimeIncrementPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_SequentialSequencer_timeIncrement_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_SequentialSequencer_timeIncrement_feature", "_UI_SequentialSequencer_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ SequencerPackage.Literals.SEQUENTIAL_SEQUENCER__TIME_INCREMENT,
+ true,
+ false,
+ false,
+ ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This returns Sequencer.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/customobj16/Sequencer"));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ return super.getText(object);
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getTextGen(Object object) {
+ URI labelValue = ((SequentialSequencer)object).getURI();
+ String label = labelValue == null ? null : labelValue.toString();
+ return label == null || label.length() == 0 ?
+ getString("_UI_SequentialSequencer_type") : //$NON-NLS-1$
+ getString("_UI_SequentialSequencer_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(SequentialSequencer.class)) {
+ case SequencerPackage.SEQUENTIAL_SEQUENCER__TIME_INCREMENT:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/util/SequencerAdapterFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/util/SequencerAdapterFactory.java
new file mode 100644
index 000000000..7ddfeb455
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/util/SequencerAdapterFactory.java
@@ -0,0 +1,221 @@
+package org.eclipse.stem.core.sequencer.util;
+
+/*******************************************************************************
+ * Copyright (c) 2007, 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.SanityChecker;
+import org.eclipse.stem.core.sequencer.RealTimeSequencer;
+import org.eclipse.stem.core.sequencer.Sequencer;
+import org.eclipse.stem.core.sequencer.SequencerPackage;
+import org.eclipse.stem.core.sequencer.SequentialSequencer;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.sequencer.SequencerPackage
+ * @generated
+ */
+public class SequencerAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static SequencerPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SequencerAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = SequencerPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SequencerSwitch<Adapter> modelSwitch =
+ new SequencerSwitch<Adapter>() {
+ @Override
+ public Adapter caseRealTimeSequencer(RealTimeSequencer object) {
+ return createRealTimeSequencerAdapter();
+ }
+ @Override
+ public Adapter caseSequencer(Sequencer object) {
+ return createSequencerAdapter();
+ }
+ @Override
+ public Adapter caseSequentialSequencer(SequentialSequencer object) {
+ return createSequentialSequencerAdapter();
+ }
+ @Override
+ public <T> Adapter caseComparable(Comparable<T> object) {
+ return createComparableAdapter();
+ }
+ @Override
+ public Adapter caseSanityChecker(SanityChecker object) {
+ return createSanityCheckerAdapter();
+ }
+ @Override
+ public Adapter caseIdentifiable(Identifiable object) {
+ return createIdentifiableAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.sequencer.RealTimeSequencer <em>Real Time Sequencer</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.sequencer.RealTimeSequencer
+ * @generated
+ */
+ public Adapter createRealTimeSequencerAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.sequencer.Sequencer <em>Sequencer</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.sequencer.Sequencer
+ * @generated
+ */
+ public Adapter createSequencerAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.sequencer.SequentialSequencer <em>Sequential Sequencer</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.sequencer.SequentialSequencer
+ * @generated
+ */
+ public Adapter createSequentialSequencerAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link java.lang.Comparable <em>Comparable</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see java.lang.Comparable
+ * @generated
+ */
+ public Adapter createComparableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.SanityChecker <em>Sanity Checker</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.common.SanityChecker
+ * @generated
+ */
+ public Adapter createSanityCheckerAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.Identifiable <em>Identifiable</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.common.Identifiable
+ * @generated
+ */
+ public Adapter createIdentifiableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} //SequencerAdapterFactory
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/util/SequencerSwitch.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/util/SequencerSwitch.java
new file mode 100644
index 000000000..8e33de59c
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/sequencer/util/SequencerSwitch.java
@@ -0,0 +1,238 @@
+package org.eclipse.stem.core.sequencer.util;
+
+/*******************************************************************************
+ * Copyright (c) 2007, 2008 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
+ *******************************************************************************/
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.SanityChecker;
+import org.eclipse.stem.core.sequencer.RealTimeSequencer;
+import org.eclipse.stem.core.sequencer.Sequencer;
+import org.eclipse.stem.core.sequencer.SequencerPackage;
+import org.eclipse.stem.core.sequencer.SequentialSequencer;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.sequencer.SequencerPackage
+ * @generated
+ */
+public class SequencerSwitch<T1> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static SequencerPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SequencerSwitch() {
+ if (modelPackage == null) {
+ modelPackage = SequencerPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ public T1 doSwitch(EObject theEObject) {
+ return doSwitch(theEObject.eClass(), theEObject);
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T1 doSwitch(EClass theEClass, EObject theEObject) {
+ if (theEClass.eContainer() == modelPackage) {
+ return doSwitch(theEClass.getClassifierID(), theEObject);
+ }
+ else {
+ List<EClass> eSuperTypes = theEClass.getESuperTypes();
+ return
+ eSuperTypes.isEmpty() ?
+ defaultCase(theEObject) :
+ doSwitch(eSuperTypes.get(0), theEObject);
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T1 doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case SequencerPackage.REAL_TIME_SEQUENCER: {
+ RealTimeSequencer realTimeSequencer = (RealTimeSequencer)theEObject;
+ T1 result = caseRealTimeSequencer(realTimeSequencer);
+ if (result == null) result = caseSequentialSequencer(realTimeSequencer);
+ if (result == null) result = caseSequencer(realTimeSequencer);
+ if (result == null) result = caseIdentifiable(realTimeSequencer);
+ if (result == null) result = caseComparable(realTimeSequencer);
+ if (result == null) result = caseSanityChecker(realTimeSequencer);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case SequencerPackage.SEQUENCER: {
+ Sequencer sequencer = (Sequencer)theEObject;
+ T1 result = caseSequencer(sequencer);
+ if (result == null) result = caseIdentifiable(sequencer);
+ if (result == null) result = caseComparable(sequencer);
+ if (result == null) result = caseSanityChecker(sequencer);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case SequencerPackage.SEQUENTIAL_SEQUENCER: {
+ SequentialSequencer sequentialSequencer = (SequentialSequencer)theEObject;
+ T1 result = caseSequentialSequencer(sequentialSequencer);
+ if (result == null) result = caseSequencer(sequentialSequencer);
+ if (result == null) result = caseIdentifiable(sequentialSequencer);
+ if (result == null) result = caseComparable(sequentialSequencer);
+ if (result == null) result = caseSanityChecker(sequentialSequencer);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Real Time Sequencer</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Real Time Sequencer</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseRealTimeSequencer(RealTimeSequencer object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Sequencer</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Sequencer</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseSequencer(Sequencer object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Sequential Sequencer</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Sequential Sequencer</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseSequentialSequencer(SequentialSequencer object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Comparable</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Comparable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public <T> T1 caseComparable(Comparable<T> object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Sanity Checker</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Sanity Checker</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseSanityChecker(SanityChecker object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Identifiable</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Identifiable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseIdentifiable(Identifiable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ public T1 defaultCase(EObject object) {
+ return null;
+ }
+
+} //SequencerSwitch
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/Solver.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/Solver.java
new file mode 100644
index 000000000..6b35244b8
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/Solver.java
@@ -0,0 +1,138 @@
+package org.eclipse.stem.core.solver;
+
+/*******************************************************************************
+ * Copyright (c) 2009 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.graph.GraphPartitioner;
+import org.eclipse.stem.core.model.Decorator;
+import org.eclipse.stem.core.model.STEMTime;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Solver</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.solver.Solver#getDecorators <em>Decorators</em>}</li>
+ * <li>{@link org.eclipse.stem.core.solver.Solver#isInitialized <em>Initialized</em>}</li>
+ * <li>{@link org.eclipse.stem.core.solver.Solver#getPartitioner <em>Partitioner</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.stem.core.solver.SolverPackage#getSolver()
+ * @model
+ * @generated
+ */
+public interface Solver extends Identifiable {
+
+ public final static String URI_TYPE = "Solver";
+
+ /**
+ * Returns the value of the '<em><b>Decorators</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Decorators</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Decorators</em>' attribute.
+ * @see #setDecorators(EList)
+ * @see org.eclipse.stem.core.solver.SolverPackage#getSolver_Decorators()
+ * @model many="false" transient="true"
+ * @generated
+ */
+ EList<Decorator> getDecorators();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.solver.Solver#getDecorators <em>Decorators</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Decorators</em>' attribute.
+ * @see #getDecorators()
+ * @generated
+ */
+ void setDecorators(EList<Decorator> value);
+
+ /**
+ * Returns the value of the '<em><b>Initialized</b></em>' attribute.
+ * The default value is <code>"false"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Initialized</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Initialized</em>' attribute.
+ * @see #setInitialized(boolean)
+ * @see org.eclipse.stem.core.solver.SolverPackage#getSolver_Initialized()
+ * @model default="false" transient="true" volatile="true"
+ * @generated
+ */
+ boolean isInitialized();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.solver.Solver#isInitialized <em>Initialized</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Initialized</em>' attribute.
+ * @see #isInitialized()
+ * @generated
+ */
+ void setInitialized(boolean value);
+
+ /**
+ * Returns the value of the '<em><b>Partitioner</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Partitioner</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Partitioner</em>' reference.
+ * @see #setPartitioner(GraphPartitioner)
+ * @see org.eclipse.stem.core.solver.SolverPackage#getSolver_Partitioner()
+ * @model transient="true"
+ * @generated
+ */
+ GraphPartitioner getPartitioner();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.stem.core.solver.Solver#getPartitioner <em>Partitioner</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Partitioner</em>' reference.
+ * @see #getPartitioner()
+ * @generated
+ */
+ void setPartitioner(GraphPartitioner value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ boolean step(STEMTime time, long timeDelta, int cycle);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ void reset();
+
+ public void initialize(STEMTime t, GraphPartitioner p);
+} // Solver
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/SolverFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/SolverFactory.java
new file mode 100644
index 000000000..f9465d44e
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/SolverFactory.java
@@ -0,0 +1,51 @@
+package org.eclipse.stem.core.solver;
+
+/*******************************************************************************
+ * Copyright (c) 2009 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.solver.SolverPackage
+ * @generated
+ */
+public interface SolverFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ SolverFactory eINSTANCE = org.eclipse.stem.core.solver.impl.SolverFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Solver</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Solver</em>'.
+ * @generated
+ */
+ Solver createSolver();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ SolverPackage getSolverPackage();
+
+} //SolverFactory
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/SolverPackage.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/SolverPackage.java
new file mode 100644
index 000000000..b75914327
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/SolverPackage.java
@@ -0,0 +1,243 @@
+package org.eclipse.stem.core.solver;
+
+/*******************************************************************************
+ * Copyright (c) 2009 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.stem.core.common.CommonPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.solver.SolverFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface SolverPackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "solver"; //$NON-NLS-1$
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http://org/eclipse/stem/core/solver"; //$NON-NLS-1$
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "org.eclipse.stem.core.solver"; //$NON-NLS-1$
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ SolverPackage eINSTANCE = org.eclipse.stem.core.solver.impl.SolverPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.solver.impl.SolverImpl <em>Solver</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.solver.impl.SolverImpl
+ * @see org.eclipse.stem.core.solver.impl.SolverPackageImpl#getSolver()
+ * @generated
+ */
+ int SOLVER = 0;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SOLVER__URI = CommonPackage.IDENTIFIABLE__URI;
+
+ /**
+ * The feature id for the '<em><b>Type URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SOLVER__TYPE_URI = CommonPackage.IDENTIFIABLE__TYPE_URI;
+
+ /**
+ * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SOLVER__DUBLIN_CORE = CommonPackage.IDENTIFIABLE__DUBLIN_CORE;
+
+ /**
+ * The feature id for the '<em><b>Decorators</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SOLVER__DECORATORS = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Initialized</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SOLVER__INITIALIZED = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Partitioner</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SOLVER__PARTITIONER = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Solver</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SOLVER_FEATURE_COUNT = CommonPackage.IDENTIFIABLE_FEATURE_COUNT + 3;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.solver.Solver <em>Solver</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Solver</em>'.
+ * @see org.eclipse.stem.core.solver.Solver
+ * @generated
+ */
+ EClass getSolver();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.solver.Solver#getDecorators <em>Decorators</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Decorators</em>'.
+ * @see org.eclipse.stem.core.solver.Solver#getDecorators()
+ * @see #getSolver()
+ * @generated
+ */
+ EAttribute getSolver_Decorators();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.stem.core.solver.Solver#isInitialized <em>Initialized</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Initialized</em>'.
+ * @see org.eclipse.stem.core.solver.Solver#isInitialized()
+ * @see #getSolver()
+ * @generated
+ */
+ EAttribute getSolver_Initialized();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.core.solver.Solver#getPartitioner <em>Partitioner</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Partitioner</em>'.
+ * @see org.eclipse.stem.core.solver.Solver#getPartitioner()
+ * @see #getSolver()
+ * @generated
+ */
+ EReference getSolver_Partitioner();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ SolverFactory getSolverFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.solver.impl.SolverImpl <em>Solver</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.solver.impl.SolverImpl
+ * @see org.eclipse.stem.core.solver.impl.SolverPackageImpl#getSolver()
+ * @generated
+ */
+ EClass SOLVER = eINSTANCE.getSolver();
+
+ /**
+ * The meta object literal for the '<em><b>Decorators</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute SOLVER__DECORATORS = eINSTANCE.getSolver_Decorators();
+
+ /**
+ * The meta object literal for the '<em><b>Initialized</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute SOLVER__INITIALIZED = eINSTANCE.getSolver_Initialized();
+
+ /**
+ * The meta object literal for the '<em><b>Partitioner</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SOLVER__PARTITIONER = eINSTANCE.getSolver_Partitioner();
+
+ }
+
+} //SolverPackage
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/impl/SolverFactoryImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/impl/SolverFactoryImpl.java
new file mode 100644
index 000000000..a14d98f38
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/impl/SolverFactoryImpl.java
@@ -0,0 +1,103 @@
+package org.eclipse.stem.core.solver.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2009 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.stem.core.solver.Solver;
+import org.eclipse.stem.core.solver.SolverFactory;
+import org.eclipse.stem.core.solver.SolverPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SolverFactoryImpl extends EFactoryImpl implements SolverFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static SolverFactory init() {
+ try {
+ SolverFactory theSolverFactory = (SolverFactory)EPackage.Registry.INSTANCE.getEFactory("http://org/eclipse/stem/core/solver"); //$NON-NLS-1$
+ if (theSolverFactory != null) {
+ return theSolverFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new SolverFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SolverFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case SolverPackage.SOLVER: return createSolver();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Solver createSolver() {
+ SolverImpl solver = new SolverImpl();
+ return solver;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SolverPackage getSolverPackage() {
+ return (SolverPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static SolverPackage getPackage() {
+ return SolverPackage.eINSTANCE;
+ }
+
+} //SolverFactoryImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/impl/SolverImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/impl/SolverImpl.java
new file mode 100644
index 000000000..a91140583
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/impl/SolverImpl.java
@@ -0,0 +1,335 @@
+package org.eclipse.stem.core.solver.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2009 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.stem.core.STEMURI;
+import org.eclipse.stem.core.common.impl.IdentifiableImpl;
+import org.eclipse.stem.core.graph.DynamicLabel;
+import org.eclipse.stem.core.graph.GraphPartitioner;
+import org.eclipse.stem.core.graph.IntegrationLabel;
+import org.eclipse.stem.core.graph.IntegrationLabelValue;
+import org.eclipse.stem.core.model.Decorator;
+import org.eclipse.stem.core.model.IntegrationDecorator;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.solver.Solver;
+import org.eclipse.stem.core.solver.SolverPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Solver</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.solver.impl.SolverImpl#getDecorators <em>Decorators</em>}</li>
+ * <li>{@link org.eclipse.stem.core.solver.impl.SolverImpl#isInitialized <em>Initialized</em>}</li>
+ * <li>{@link org.eclipse.stem.core.solver.impl.SolverImpl#getPartitioner <em>Partitioner</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class SolverImpl extends IdentifiableImpl implements Solver {
+ /**
+ * The cached value of the '{@link #getDecorators() <em>Decorators</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDecorators()
+ * @generated
+ * @ordered
+ */
+ protected EList<Decorator> decorators;
+
+ /**
+ * The default value of the '{@link #isInitialized() <em>Initialized</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isInitialized()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean INITIALIZED_EDEFAULT = false;
+ /**
+ * The cached value of the '{@link #getPartitioner() <em>Partitioner</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPartitioner()
+ * @generated
+ * @ordered
+ */
+ protected GraphPartitioner partitioner;
+
+ private boolean initialized;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected SolverImpl() {
+ super();
+ this.setTypeURI(STEMURI.SOLVER_TYPE_URI);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return SolverPackage.Literals.SOLVER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Decorator> getDecorators() {
+ return decorators;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDecorators(EList<Decorator> newDecorators) {
+ EList<Decorator> oldDecorators = decorators;
+ decorators = newDecorators;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SolverPackage.SOLVER__DECORATORS, oldDecorators, decorators));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public boolean isInitialized() {
+ return this.initialized;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public void setInitialized(boolean newInitialized) {
+ this.initialized = newInitialized;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public GraphPartitioner getPartitioner() {
+ if (partitioner != null && partitioner.eIsProxy()) {
+ InternalEObject oldPartitioner = (InternalEObject)partitioner;
+ partitioner = (GraphPartitioner)eResolveProxy(oldPartitioner);
+ if (partitioner != oldPartitioner) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, SolverPackage.SOLVER__PARTITIONER, oldPartitioner, partitioner));
+ }
+ }
+ return partitioner;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public GraphPartitioner basicGetPartitioner() {
+ return partitioner;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPartitioner(GraphPartitioner newPartitioner) {
+ GraphPartitioner oldPartitioner = partitioner;
+ partitioner = newPartitioner;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SolverPackage.SOLVER__PARTITIONER, oldPartitioner, partitioner));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean step(STEMTime time, long timeDelta, int cycle) {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void reset() {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * initialize before simulation begins. Rewind/forward any population model
+ * values to the start time of the sequencer
+ * @param time
+ */
+ public void initialize(STEMTime time, GraphPartitioner p) {
+ this.partitioner = p;
+ EList<Decorator> redoList = new BasicEList<Decorator>();
+
+ boolean redo = false;
+ for(Decorator d:this.getDecorators()) {
+ if(d instanceof IntegrationDecorator) {
+ EList<DynamicLabel> labels = d.getLabelsToUpdate();
+ for(DynamicLabel l:labels) {
+ if(l instanceof IntegrationLabel) {
+ IntegrationLabel il = (IntegrationLabel)l;
+ il.reset(time);
+ if(((IntegrationLabelValue)il.getDeltaValue()).getArrivals().size() > 0 ||
+ ((IntegrationLabelValue)il.getDeltaValue()).getDepartures().size() > 0)
+ redo = true;
+ }
+ }
+ }
+ if(!redo)redoList.add(d);
+ }
+ // Fix decorators with unapplied deltas
+ if(redo) {
+ for(Decorator d:redoList) {
+ if(d instanceof IntegrationDecorator) {
+ EList<DynamicLabel> labels = d.getLabelsToUpdate();
+ for(DynamicLabel l:labels) {
+ if(l instanceof IntegrationLabel) {
+ IntegrationLabel il = (IntegrationLabel)l;
+ il.reset(time);
+ }
+ }
+ }
+ }
+ }
+ this.setInitialized(true);
+ }
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case SolverPackage.SOLVER__DECORATORS:
+ return getDecorators();
+ case SolverPackage.SOLVER__INITIALIZED:
+ return isInitialized();
+ case SolverPackage.SOLVER__PARTITIONER:
+ if (resolve) return getPartitioner();
+ return basicGetPartitioner();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case SolverPackage.SOLVER__DECORATORS:
+ setDecorators((EList<Decorator>)newValue);
+ return;
+ case SolverPackage.SOLVER__INITIALIZED:
+ setInitialized((Boolean)newValue);
+ return;
+ case SolverPackage.SOLVER__PARTITIONER:
+ setPartitioner((GraphPartitioner)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case SolverPackage.SOLVER__DECORATORS:
+ setDecorators((EList<Decorator>)null);
+ return;
+ case SolverPackage.SOLVER__INITIALIZED:
+ setInitialized(INITIALIZED_EDEFAULT);
+ return;
+ case SolverPackage.SOLVER__PARTITIONER:
+ setPartitioner((GraphPartitioner)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case SolverPackage.SOLVER__DECORATORS:
+ return decorators != null;
+ case SolverPackage.SOLVER__INITIALIZED:
+ return isInitialized() != INITIALIZED_EDEFAULT;
+ case SolverPackage.SOLVER__PARTITIONER:
+ return partitioner != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (decorators: "); //$NON-NLS-1$
+ result.append(decorators);
+ result.append(')');
+ return result.toString();
+ }
+
+} //SolverImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/impl/SolverPackageImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/impl/SolverPackageImpl.java
new file mode 100644
index 000000000..c37aa4e07
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/impl/SolverPackageImpl.java
@@ -0,0 +1,282 @@
+package org.eclipse.stem.core.solver.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2009 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EGenericType;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.stem.core.common.CommonPackage;
+import org.eclipse.stem.core.common.impl.CommonPackageImpl;
+import org.eclipse.stem.core.experiment.ExperimentPackage;
+import org.eclipse.stem.core.experiment.impl.ExperimentPackageImpl;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.impl.GraphPackageImpl;
+import org.eclipse.stem.core.logger.LoggerPackage;
+import org.eclipse.stem.core.logger.impl.LoggerPackageImpl;
+import org.eclipse.stem.core.model.ModelPackage;
+import org.eclipse.stem.core.model.impl.ModelPackageImpl;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+import org.eclipse.stem.core.modifier.impl.ModifierPackageImpl;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+import org.eclipse.stem.core.predicate.impl.PredicatePackageImpl;
+import org.eclipse.stem.core.scenario.ScenarioPackage;
+import org.eclipse.stem.core.scenario.impl.ScenarioPackageImpl;
+import org.eclipse.stem.core.sequencer.SequencerPackage;
+import org.eclipse.stem.core.sequencer.impl.SequencerPackageImpl;
+import org.eclipse.stem.core.solver.Solver;
+import org.eclipse.stem.core.solver.SolverFactory;
+import org.eclipse.stem.core.solver.SolverPackage;
+import org.eclipse.stem.core.trigger.TriggerPackage;
+import org.eclipse.stem.core.trigger.impl.TriggerPackageImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SolverPackageImpl extends EPackageImpl implements SolverPackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass solverEClass = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.eclipse.stem.core.solver.SolverPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private SolverPackageImpl() {
+ super(eNS_URI, SolverFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link SolverPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static SolverPackage init() {
+ if (isInited) return (SolverPackage)EPackage.Registry.INSTANCE.getEPackage(SolverPackage.eNS_URI);
+
+ // Obtain or create and register package
+ SolverPackageImpl theSolverPackage = (SolverPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof SolverPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new SolverPackageImpl());
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ EcorePackage.eINSTANCE.eClass();
+
+ // Obtain or create and register interdependencies
+ CommonPackageImpl theCommonPackage = (CommonPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(CommonPackage.eNS_URI) instanceof CommonPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(CommonPackage.eNS_URI) : CommonPackage.eINSTANCE);
+ ExperimentPackageImpl theExperimentPackage = (ExperimentPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ExperimentPackage.eNS_URI) instanceof ExperimentPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ExperimentPackage.eNS_URI) : ExperimentPackage.eINSTANCE);
+ GraphPackageImpl theGraphPackage = (GraphPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(GraphPackage.eNS_URI) instanceof GraphPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(GraphPackage.eNS_URI) : GraphPackage.eINSTANCE);
+ ModelPackageImpl theModelPackage = (ModelPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ModelPackage.eNS_URI) instanceof ModelPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ModelPackage.eNS_URI) : ModelPackage.eINSTANCE);
+ ModifierPackageImpl theModifierPackage = (ModifierPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ModifierPackage.eNS_URI) instanceof ModifierPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ModifierPackage.eNS_URI) : ModifierPackage.eINSTANCE);
+ PredicatePackageImpl thePredicatePackage = (PredicatePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(PredicatePackage.eNS_URI) instanceof PredicatePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(PredicatePackage.eNS_URI) : PredicatePackage.eINSTANCE);
+ ScenarioPackageImpl theScenarioPackage = (ScenarioPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ScenarioPackage.eNS_URI) instanceof ScenarioPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ScenarioPackage.eNS_URI) : ScenarioPackage.eINSTANCE);
+ SequencerPackageImpl theSequencerPackage = (SequencerPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SequencerPackage.eNS_URI) instanceof SequencerPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SequencerPackage.eNS_URI) : SequencerPackage.eINSTANCE);
+ TriggerPackageImpl theTriggerPackage = (TriggerPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(TriggerPackage.eNS_URI) instanceof TriggerPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(TriggerPackage.eNS_URI) : TriggerPackage.eINSTANCE);
+ LoggerPackageImpl theLoggerPackage = (LoggerPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(LoggerPackage.eNS_URI) instanceof LoggerPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(LoggerPackage.eNS_URI) : LoggerPackage.eINSTANCE);
+
+ // Create package meta-data objects
+ theSolverPackage.createPackageContents();
+ theCommonPackage.createPackageContents();
+ theExperimentPackage.createPackageContents();
+ theGraphPackage.createPackageContents();
+ theModelPackage.createPackageContents();
+ theModifierPackage.createPackageContents();
+ thePredicatePackage.createPackageContents();
+ theScenarioPackage.createPackageContents();
+ theSequencerPackage.createPackageContents();
+ theTriggerPackage.createPackageContents();
+ theLoggerPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theSolverPackage.initializePackageContents();
+ theCommonPackage.initializePackageContents();
+ theExperimentPackage.initializePackageContents();
+ theGraphPackage.initializePackageContents();
+ theModelPackage.initializePackageContents();
+ theModifierPackage.initializePackageContents();
+ thePredicatePackage.initializePackageContents();
+ theScenarioPackage.initializePackageContents();
+ theSequencerPackage.initializePackageContents();
+ theTriggerPackage.initializePackageContents();
+ theLoggerPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theSolverPackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(SolverPackage.eNS_URI, theSolverPackage);
+ return theSolverPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSolver() {
+ return solverEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getSolver_Decorators() {
+ return (EAttribute)solverEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getSolver_Initialized() {
+ return (EAttribute)solverEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSolver_Partitioner() {
+ return (EReference)solverEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SolverFactory getSolverFactory() {
+ return (SolverFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ solverEClass = createEClass(SOLVER);
+ createEAttribute(solverEClass, SOLVER__DECORATORS);
+ createEAttribute(solverEClass, SOLVER__INITIALIZED);
+ createEReference(solverEClass, SOLVER__PARTITIONER);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ CommonPackage theCommonPackage = (CommonPackage)EPackage.Registry.INSTANCE.getEPackage(CommonPackage.eNS_URI);
+ EcorePackage theEcorePackage = (EcorePackage)EPackage.Registry.INSTANCE.getEPackage(EcorePackage.eNS_URI);
+ ModelPackage theModelPackage = (ModelPackage)EPackage.Registry.INSTANCE.getEPackage(ModelPackage.eNS_URI);
+ GraphPackage theGraphPackage = (GraphPackage)EPackage.Registry.INSTANCE.getEPackage(GraphPackage.eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ solverEClass.getESuperTypes().add(theCommonPackage.getIdentifiable());
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(solverEClass, Solver.class, "Solver", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ EGenericType g1 = createEGenericType(theEcorePackage.getEEList());
+ EGenericType g2 = createEGenericType(theModelPackage.getDecorator());
+ g1.getETypeArguments().add(g2);
+ initEAttribute(getSolver_Decorators(), g1, "decorators", null, 0, 1, Solver.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEAttribute(getSolver_Initialized(), theEcorePackage.getEBoolean(), "initialized", "false", 0, 1, Solver.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$ //$NON-NLS-2$
+ initEReference(getSolver_Partitioner(), theGraphPackage.getGraphPartitioner(), null, "partitioner", null, 0, 1, Solver.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ EOperation op = addEOperation(solverEClass, theEcorePackage.getEBoolean(), "step", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, theModelPackage.getSTEMTime(), "time", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, theEcorePackage.getELong(), "timeDelta", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+ addEParameter(op, theEcorePackage.getEInt(), "cycle", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ addEOperation(solverEClass, null, "reset", 0, 1, IS_UNIQUE, IS_ORDERED); //$NON-NLS-1$
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} //SolverPackageImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/provider/SolverItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/provider/SolverItemProvider.java
new file mode 100644
index 000000000..969db2407
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/provider/SolverItemProvider.java
@@ -0,0 +1,204 @@
+package org.eclipse.stem.core.solver.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2009 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
+ *******************************************************************************/
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.common.provider.CoreEditPlugin;
+import org.eclipse.stem.core.common.provider.IdentifiableItemProvider;
+import org.eclipse.stem.core.solver.Solver;
+import org.eclipse.stem.core.solver.SolverPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.solver.Solver} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SolverItemProvider
+ extends IdentifiableItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SolverItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addDecoratorsPropertyDescriptor(object);
+ addPartitionerPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Decorators feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addDecoratorsPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Solver_decorators_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Solver_decorators_feature", "_UI_Solver_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ SolverPackage.Literals.SOLVER__DECORATORS,
+ true,
+ false,
+ true,
+ ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+ null,
+ null));
+ }
+
+ /**
+ * This adds a property descriptor for the Partitioner feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addPartitionerPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Solver_partitioner_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Solver_partitioner_feature", "_UI_Solver_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ SolverPackage.Literals.SOLVER__PARTITIONER,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This returns Solver.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Solver")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ URI labelValue = ((Solver)object).getURI();
+ String label = labelValue == null ? null : labelValue.toString();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Solver_type") : //$NON-NLS-1$
+ getString("_UI_Solver_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getTextGen(Object object) {
+ URI labelValue = ((Solver)object).getURI();
+ String label = labelValue == null ? null : labelValue.toString();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Solver_type") : //$NON-NLS-1$
+ getString("_UI_Solver_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(Solver.class)) {
+ case SolverPackage.SOLVER__INITIALIZED:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return CoreEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/provider/SolverItemProviderAdapterFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/provider/SolverItemProviderAdapterFactory.java
new file mode 100644
index 000000000..bb9efede3
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/provider/SolverItemProviderAdapterFactory.java
@@ -0,0 +1,207 @@
+package org.eclipse.stem.core.solver.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2009 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
+ *******************************************************************************/
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.solver.util.SolverAdapterFactory;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SolverItemProviderAdapterFactory extends SolverAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+ /**
+ * This keeps track of the root adapter factory that delegates to this adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ComposedAdapterFactory parentAdapterFactory;
+
+ /**
+ * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+ /**
+ * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+ /**
+ * This constructs an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SolverItemProviderAdapterFactory() {
+ supportedTypes.add(IEditingDomainItemProvider.class);
+ supportedTypes.add(IStructuredItemContentProvider.class);
+ supportedTypes.add(ITreeItemContentProvider.class);
+ supportedTypes.add(IItemLabelProvider.class);
+ supportedTypes.add(IItemPropertySource.class);
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.solver.Solver} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SolverItemProvider solverItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.solver.Solver}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createSolverAdapter() {
+ if (solverItemProvider == null) {
+ solverItemProvider = new SolverItemProvider(this);
+ }
+
+ return solverItemProvider;
+ }
+
+ /**
+ * This returns the root adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ComposeableAdapterFactory getRootAdapterFactory() {
+ return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+ }
+
+ /**
+ * This sets the composed adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+ this.parentAdapterFactory = parentAdapterFactory;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object type) {
+ return supportedTypes.contains(type) || super.isFactoryForType(type);
+ }
+
+ /**
+ * This implementation substitutes the factory itself as the key for the adapter.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter adapt(Notifier notifier, Object type) {
+ return super.adapt(notifier, this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public Object adapt(Object object, Object type) {
+ if (isFactoryForType(type)) {
+ Object adapter = super.adapt(object, type);
+ if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+ return adapter;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * This adds a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void addListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.addListener(notifyChangedListener);
+ }
+
+ /**
+ * This removes a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void removeListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.removeListener(notifyChangedListener);
+ }
+
+ /**
+ * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void fireNotifyChanged(Notification notification) {
+ changeNotifier.fireNotifyChanged(notification);
+
+ if (parentAdapterFactory != null) {
+ parentAdapterFactory.fireNotifyChanged(notification);
+ }
+ }
+
+ /**
+ * This disposes all of the item providers created by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void dispose() {
+ if (solverItemProvider != null) solverItemProvider.dispose();
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/util/SolverAdapterFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/util/SolverAdapterFactory.java
new file mode 100644
index 000000000..5a5f77ec5
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/util/SolverAdapterFactory.java
@@ -0,0 +1,183 @@
+package org.eclipse.stem.core.solver.util;
+
+/*******************************************************************************
+ * Copyright (c) 2009 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.SanityChecker;
+import org.eclipse.stem.core.solver.Solver;
+import org.eclipse.stem.core.solver.SolverPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.solver.SolverPackage
+ * @generated
+ */
+public class SolverAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static SolverPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SolverAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = SolverPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SolverSwitch<Adapter> modelSwitch =
+ new SolverSwitch<Adapter>() {
+ @Override
+ public Adapter caseSolver(Solver object) {
+ return createSolverAdapter();
+ }
+ @Override
+ public <T> Adapter caseComparable(Comparable<T> object) {
+ return createComparableAdapter();
+ }
+ @Override
+ public Adapter caseSanityChecker(SanityChecker object) {
+ return createSanityCheckerAdapter();
+ }
+ @Override
+ public Adapter caseIdentifiable(Identifiable object) {
+ return createIdentifiableAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.solver.Solver <em>Solver</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.solver.Solver
+ * @generated
+ */
+ public Adapter createSolverAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link java.lang.Comparable <em>Comparable</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see java.lang.Comparable
+ * @generated
+ */
+ public Adapter createComparableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.SanityChecker <em>Sanity Checker</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.common.SanityChecker
+ * @generated
+ */
+ public Adapter createSanityCheckerAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.Identifiable <em>Identifiable</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.common.Identifiable
+ * @generated
+ */
+ public Adapter createIdentifiableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} //SolverAdapterFactory
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/util/SolverSwitch.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/util/SolverSwitch.java
new file mode 100644
index 000000000..cde0564ad
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/solver/util/SolverSwitch.java
@@ -0,0 +1,185 @@
+package org.eclipse.stem.core.solver.util;
+
+/*******************************************************************************
+ * Copyright (c) 2009 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
+ *******************************************************************************/
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.SanityChecker;
+import org.eclipse.stem.core.solver.Solver;
+import org.eclipse.stem.core.solver.SolverPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.solver.SolverPackage
+ * @generated
+ */
+public class SolverSwitch<T1> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static SolverPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SolverSwitch() {
+ if (modelPackage == null) {
+ modelPackage = SolverPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ public T1 doSwitch(EObject theEObject) {
+ return doSwitch(theEObject.eClass(), theEObject);
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T1 doSwitch(EClass theEClass, EObject theEObject) {
+ if (theEClass.eContainer() == modelPackage) {
+ return doSwitch(theEClass.getClassifierID(), theEObject);
+ }
+ else {
+ List<EClass> eSuperTypes = theEClass.getESuperTypes();
+ return
+ eSuperTypes.isEmpty() ?
+ defaultCase(theEObject) :
+ doSwitch(eSuperTypes.get(0), theEObject);
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T1 doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case SolverPackage.SOLVER: {
+ Solver solver = (Solver)theEObject;
+ T1 result = caseSolver(solver);
+ if (result == null) result = caseIdentifiable(solver);
+ if (result == null) result = caseComparable(solver);
+ if (result == null) result = caseSanityChecker(solver);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Solver</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Solver</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseSolver(Solver object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Comparable</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Comparable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public <T> T1 caseComparable(Comparable<T> object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Sanity Checker</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Sanity Checker</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseSanityChecker(SanityChecker object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Identifiable</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Identifiable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseIdentifiable(Identifiable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ public T1 defaultCase(EObject object) {
+ return null;
+ }
+
+} //SolverSwitch
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/Trigger.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/Trigger.java
new file mode 100644
index 000000000..b22daa259
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/Trigger.java
@@ -0,0 +1,89 @@
+// Trigger.java
+package org.eclipse.stem.core.trigger;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.stem.core.model.Decorator;
+import org.eclipse.stem.core.predicate.Predicate;
+
+/**
+ * A <code>Trigger</code> is a {@link Decorator} that allows for conditional
+ * execution of another {@link Decorator}. It combines a reference to a
+ * conditional {@link Predicate} with a reference to another {@link Decorator}
+ * called the "action" ({@link #getAction()}. When the <code>Trigger</code>'s
+ * {@link #updateLabels(org.eclipse.stem.core.model.STEMTime, long)} method
+ * is called it invokes the {@link Predicate} and if it returns
+ * <code>true</code> then the <code>Trigger</code> calls the
+ * {@link #updateLabels(org.eclipse.stem.core.model.STEMTime, long)} method
+ * of the referenced {@link Decorator}.
+ * <p>
+ * Frequently, the action will be an instance of
+ * {@link org.eclipse.stem.core.modifier.Modifier} which will then alter
+ * some aspect of the running Simulation.
+ * <p>
+ * This interface definition is also an "Annotated Java Interface" that defines
+ * one class in a <a href="http://www.uml.org/">UML</a> "model". The UML class
+ * diagram for the model is in the <code>documentation</code> folder of the
+ * project. This file and the other interfaces in this Java package are
+ * processed by the Eclipse Modeling Framework (aka EMF <a
+ * href="http://org.eclipse/emf">http://org.eclipse/emf</a>). to automatically
+ * generate an implementation of the model. EMF is documented in the book <a
+ * href="http://www.awprofessional.com/bookstore/product.asp?isbn=0131425420&rl=1">Eclipse
+ * Modeling Framework </a> by Budinsky, et al.
+ * </p>
+ * @model
+ */
+public interface Trigger extends Decorator {
+ /**
+ * This is the segment of the type {@link URI} that prefixes all other
+ * segments in a {@link Trigger} {@link URI}.
+ */
+ String URI_TYPE_TRIGGER_SEGMENT = "trigger";
+
+ /**
+ * @return the {@link Trigger}'s Predicate
+ * @model containment="false"
+ */
+ Predicate getPredicate();
+
+ /**
+ * Sets the value of the '
+ * {@link org.eclipse.stem.core.trigger.Trigger#getPredicate
+ * <em>Predicate</em>}' reference. <!-- begin-user-doc --> <!-- end-user-doc
+ * -->
+ *
+ * @param value
+ * the new value of the '<em>Predicate</em>' reference.
+ * @see #getPredicate()
+ * @generated
+ */
+ void setPredicate(Predicate value);
+
+ /**
+ * Returns the value of the '<em><b>Actions</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.stem.core.model.Decorator}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Actions</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Actions</em>' reference list.
+ * @see org.eclipse.stem.core.trigger.TriggerPackage#getTrigger_Actions()
+ * @model
+ * @generated
+ */
+ EList<Decorator> getActions();
+
+} // Trigger \ No newline at end of file
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/TriggerFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/TriggerFactory.java
new file mode 100644
index 000000000..76bbf26fe
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/TriggerFactory.java
@@ -0,0 +1,51 @@
+package org.eclipse.stem.core.trigger;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.trigger.TriggerPackage
+ * @generated
+ */
+public interface TriggerFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ TriggerFactory eINSTANCE = org.eclipse.stem.core.trigger.impl.TriggerFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Trigger</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Trigger</em>'.
+ * @generated
+ */
+ Trigger createTrigger();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ TriggerPackage getTriggerPackage();
+
+} //TriggerFactory
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/TriggerPackage.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/TriggerPackage.java
new file mode 100644
index 000000000..5f99b4206
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/TriggerPackage.java
@@ -0,0 +1,259 @@
+package org.eclipse.stem.core.trigger;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.stem.core.model.ModelPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.trigger.TriggerFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface TriggerPackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "trigger"; //$NON-NLS-1$
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http:///org/eclipse/stem/core/trigger.ecore"; //$NON-NLS-1$
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "org.eclipse.stem.core.trigger"; //$NON-NLS-1$
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ TriggerPackage eINSTANCE = org.eclipse.stem.core.trigger.impl.TriggerPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.stem.core.trigger.impl.TriggerImpl <em>Trigger</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.trigger.impl.TriggerImpl
+ * @see org.eclipse.stem.core.trigger.impl.TriggerPackageImpl#getTrigger()
+ * @generated
+ */
+ int TRIGGER = 0;
+
+ /**
+ * The feature id for the '<em><b>URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRIGGER__URI = ModelPackage.DECORATOR__URI;
+
+ /**
+ * The feature id for the '<em><b>Type URI</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRIGGER__TYPE_URI = ModelPackage.DECORATOR__TYPE_URI;
+
+ /**
+ * The feature id for the '<em><b>Dublin Core</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRIGGER__DUBLIN_CORE = ModelPackage.DECORATOR__DUBLIN_CORE;
+
+ /**
+ * The feature id for the '<em><b>Labels To Update</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRIGGER__LABELS_TO_UPDATE = ModelPackage.DECORATOR__LABELS_TO_UPDATE;
+
+ /**
+ * The feature id for the '<em><b>Graph</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRIGGER__GRAPH = ModelPackage.DECORATOR__GRAPH;
+
+ /**
+ * The feature id for the '<em><b>Enabled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRIGGER__ENABLED = ModelPackage.DECORATOR__ENABLED;
+
+ /**
+ * The feature id for the '<em><b>Graph Decorated</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRIGGER__GRAPH_DECORATED = ModelPackage.DECORATOR__GRAPH_DECORATED;
+
+ /**
+ * The feature id for the '<em><b>Progress</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRIGGER__PROGRESS = ModelPackage.DECORATOR__PROGRESS;
+
+ /**
+ * The feature id for the '<em><b>Predicate</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRIGGER__PREDICATE = ModelPackage.DECORATOR_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Actions</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRIGGER__ACTIONS = ModelPackage.DECORATOR_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Trigger</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TRIGGER_FEATURE_COUNT = ModelPackage.DECORATOR_FEATURE_COUNT + 2;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.stem.core.trigger.Trigger <em>Trigger</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Trigger</em>'.
+ * @see org.eclipse.stem.core.trigger.Trigger
+ * @generated
+ */
+ EClass getTrigger();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.stem.core.trigger.Trigger#getPredicate <em>Predicate</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Predicate</em>'.
+ * @see org.eclipse.stem.core.trigger.Trigger#getPredicate()
+ * @see #getTrigger()
+ * @generated
+ */
+ EReference getTrigger_Predicate();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.stem.core.trigger.Trigger#getActions <em>Actions</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Actions</em>'.
+ * @see org.eclipse.stem.core.trigger.Trigger#getActions()
+ * @see #getTrigger()
+ * @generated
+ */
+ EReference getTrigger_Actions();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ TriggerFactory getTriggerFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link org.eclipse.stem.core.trigger.impl.TriggerImpl <em>Trigger</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.trigger.impl.TriggerImpl
+ * @see org.eclipse.stem.core.trigger.impl.TriggerPackageImpl#getTrigger()
+ * @generated
+ */
+ EClass TRIGGER = eINSTANCE.getTrigger();
+
+ /**
+ * The meta object literal for the '<em><b>Predicate</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TRIGGER__PREDICATE = eINSTANCE.getTrigger_Predicate();
+
+ /**
+ * The meta object literal for the '<em><b>Actions</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TRIGGER__ACTIONS = eINSTANCE.getTrigger_Actions();
+
+ }
+
+} //TriggerPackage
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/impl/TriggerFactoryImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/impl/TriggerFactoryImpl.java
new file mode 100644
index 000000000..8a0a5728e
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/impl/TriggerFactoryImpl.java
@@ -0,0 +1,103 @@
+package org.eclipse.stem.core.trigger.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.stem.core.trigger.Trigger;
+import org.eclipse.stem.core.trigger.TriggerFactory;
+import org.eclipse.stem.core.trigger.TriggerPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TriggerFactoryImpl extends EFactoryImpl implements TriggerFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static TriggerFactory init() {
+ try {
+ TriggerFactory theTriggerFactory = (TriggerFactory)EPackage.Registry.INSTANCE.getEFactory("http:///org/eclipse/stem/core/trigger.ecore"); //$NON-NLS-1$
+ if (theTriggerFactory != null) {
+ return theTriggerFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new TriggerFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TriggerFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case TriggerPackage.TRIGGER: return createTrigger();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Trigger createTrigger() {
+ TriggerImpl trigger = new TriggerImpl();
+ return trigger;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TriggerPackage getTriggerPackage() {
+ return (TriggerPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static TriggerPackage getPackage() {
+ return TriggerPackage.eINSTANCE;
+ }
+
+} //TriggerFactoryImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/impl/TriggerImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/impl/TriggerImpl.java
new file mode 100644
index 000000000..b18ed3456
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/impl/TriggerImpl.java
@@ -0,0 +1,331 @@
+package org.eclipse.stem.core.trigger.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.stem.core.CorePlugin;
+import org.eclipse.stem.core.graph.Graph;
+import org.eclipse.stem.core.model.Decorator;
+import org.eclipse.stem.core.model.STEMTime;
+import org.eclipse.stem.core.model.impl.DecoratorImpl;
+import org.eclipse.stem.core.modifier.Modifier;
+import org.eclipse.stem.core.predicate.Predicate;
+import org.eclipse.stem.core.trigger.Trigger;
+import org.eclipse.stem.core.trigger.TriggerPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Trigger</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.stem.core.trigger.impl.TriggerImpl#getPredicate <em>Predicate</em>}</li>
+ * <li>{@link org.eclipse.stem.core.trigger.impl.TriggerImpl#getActions <em>Actions</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TriggerImpl extends DecoratorImpl implements Trigger {
+ /**
+ * The cached value of the '{@link #getPredicate() <em>Predicate</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPredicate()
+ * @generated
+ * @ordered
+ */
+ protected Predicate predicate;
+
+ /**
+ * The cached value of the '{@link #getActions() <em>Actions</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getActions()
+ * @generated
+ * @ordered
+ */
+ protected EList<Decorator> actions;
+
+ protected List<Decorator> actionCopies;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TriggerImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return TriggerPackage.Literals.TRIGGER;
+ }
+
+
+ /**
+ * @see org.eclipse.stem.core.model.impl.DecoratorImpl#decorateGraph()
+ */
+ @Override
+ public boolean decorateGraph(STEMTime time) {
+ // Do we have action?
+ if (getActions() != null) {
+ // Yes
+ // Have we already made a copy of the action?
+ if (actionCopies == null || actionCopies.size() < getActions().size()) {
+ // No
+ actionCopies = new ArrayList<Decorator>();
+ for(int i=0;i<getActions().size();++i) {
+ actionCopies.add((Decorator) EcoreUtil.copy(getActions().get(i)));
+ getGraph().getDecorators().add(actionCopies.get(i));
+ }
+ } // if
+ for(Decorator d:actionCopies) d.setEnabled(false);
+
+ } // if we have an action
+ else {
+ // No
+ CorePlugin.logInformation("No actions specified for trigger \""+this.getDublinCore().getTitle()+ "\"", null);
+ }
+ // To clear out cache in case some attribute of the predicate has changed
+ getPredicate().reset();
+ return true;
+ } // decorateGraph
+
+ /**
+ * @see org.eclipse.stem.core.model.impl.DecoratorImpl#updateLabels(org.eclipse.stem.core.model.STEMTime,
+ * long)
+ */
+ @Override
+ public void updateLabels(STEMTime time, long timerPeriod, int cycle) {
+ // Evaluate the predicate and if it returns true, then let the actions
+ // decorate the graph.
+ if (getPredicate().evaluate(time, timerPeriod, ((Graph)this.eContainer()))) {
+
+ // Do we have actions?
+ if (actionCopies != null) {
+ // Yes
+ for(Decorator actionCopy:actionCopies) {
+ // Yes
+ actionCopy.setEnabled(true);
+
+ // Has the action decorated the graph yet?
+ if (!actionCopy.isGraphDecorated()) {
+ // No
+ actionCopy.decorateGraph(time);
+ actionCopy.setGraphDecorated(true);
+ } // if graph not decorated yet
+
+ actionCopy.updateLabels(time, timerPeriod, cycle);
+ }
+ }
+ }// if actions time
+ else {
+ // No
+ this.resetLabels();
+ } // else
+ } // updateLabels
+
+
+ /**
+ * @see org.eclipse.stem.core.model.impl.DecoratorImpl#resetLabels()
+ */
+ @Override
+ public void resetLabels() {
+ if (actionCopies != null) {
+ for(Decorator actionCopy:actionCopies) {
+ // Yes
+ actionCopy.setEnabled(false);
+ actionCopy.setGraphDecorated(false);
+ // The problem with reseting labels in a Trigger is that it implies
+ // some kind of initialization of the labels by the action that in
+ // fact should be conditional on the value of the Trigger's
+ // predicate.
+ // Is the action a Modifier?
+ if (actionCopy instanceof Modifier) {
+ // Yes
+ // It's okay for a Modifier to reset its labels because this
+ // restores them to their original values. This works for static
+ // labels. A more general Decorator, like an Infector, might do
+ // things it should not do unless it is triggered.
+ Modifier modifier = (Modifier) actionCopy;
+ modifier.resetLabels();
+ }
+ }
+ } // if
+ this.getPredicate().reset();
+ } // resetLabels
+
+ /**
+ * @see org.eclipse.stem.core.model.impl.DecoratorImpl#sane()
+ */
+ @Override
+ public boolean sane() {
+ boolean retValue = super.sane();
+
+// retValue = retValue && getPredicate() != null;
+// assert retValue;
+
+ //retValue = retValue && getPredicate().sane();
+ //assert retValue;
+
+ if(getActions() != null)
+ for(Decorator d:getActions()) retValue = retValue && d.sane();
+
+ assert retValue;
+
+ if(actionCopies != null)
+ for(Decorator d:actionCopies) retValue = retValue && d.sane();
+ assert retValue;
+
+ return retValue;
+ } // sane
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Predicate getPredicate() {
+ if (predicate != null && predicate.eIsProxy()) {
+ InternalEObject oldPredicate = (InternalEObject)predicate;
+ predicate = (Predicate)eResolveProxy(oldPredicate);
+ if (predicate != oldPredicate) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, TriggerPackage.TRIGGER__PREDICATE, oldPredicate, predicate));
+ }
+ }
+ return predicate;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Predicate basicGetPredicate() {
+ return predicate;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPredicate(Predicate newPredicate) {
+ Predicate oldPredicate = predicate;
+ predicate = newPredicate;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, TriggerPackage.TRIGGER__PREDICATE, oldPredicate, predicate));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Decorator> getActions() {
+ if (actions == null) {
+ actions = new EObjectResolvingEList<Decorator>(Decorator.class, this, TriggerPackage.TRIGGER__ACTIONS);
+ }
+ return actions;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case TriggerPackage.TRIGGER__PREDICATE:
+ if (resolve) return getPredicate();
+ return basicGetPredicate();
+ case TriggerPackage.TRIGGER__ACTIONS:
+ return getActions();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case TriggerPackage.TRIGGER__PREDICATE:
+ setPredicate((Predicate)newValue);
+ return;
+ case TriggerPackage.TRIGGER__ACTIONS:
+ getActions().clear();
+ getActions().addAll((Collection<? extends Decorator>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case TriggerPackage.TRIGGER__PREDICATE:
+ setPredicate((Predicate)null);
+ return;
+ case TriggerPackage.TRIGGER__ACTIONS:
+ getActions().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case TriggerPackage.TRIGGER__PREDICATE:
+ return predicate != null;
+ case TriggerPackage.TRIGGER__ACTIONS:
+ return actions != null && !actions.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //TriggerImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/impl/TriggerPackageImpl.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/impl/TriggerPackageImpl.java
new file mode 100644
index 000000000..2ebf2a219
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/impl/TriggerPackageImpl.java
@@ -0,0 +1,256 @@
+package org.eclipse.stem.core.trigger.impl;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.stem.core.common.CommonPackage;
+import org.eclipse.stem.core.common.impl.CommonPackageImpl;
+import org.eclipse.stem.core.experiment.ExperimentPackage;
+import org.eclipse.stem.core.experiment.impl.ExperimentPackageImpl;
+import org.eclipse.stem.core.graph.GraphPackage;
+import org.eclipse.stem.core.graph.impl.GraphPackageImpl;
+import org.eclipse.stem.core.logger.LoggerPackage;
+import org.eclipse.stem.core.logger.impl.LoggerPackageImpl;
+import org.eclipse.stem.core.model.ModelPackage;
+import org.eclipse.stem.core.model.impl.ModelPackageImpl;
+import org.eclipse.stem.core.modifier.ModifierPackage;
+import org.eclipse.stem.core.modifier.impl.ModifierPackageImpl;
+import org.eclipse.stem.core.predicate.PredicatePackage;
+import org.eclipse.stem.core.predicate.impl.PredicatePackageImpl;
+import org.eclipse.stem.core.scenario.ScenarioPackage;
+import org.eclipse.stem.core.scenario.impl.ScenarioPackageImpl;
+import org.eclipse.stem.core.sequencer.SequencerPackage;
+import org.eclipse.stem.core.sequencer.impl.SequencerPackageImpl;
+import org.eclipse.stem.core.solver.SolverPackage;
+import org.eclipse.stem.core.solver.impl.SolverPackageImpl;
+import org.eclipse.stem.core.trigger.Trigger;
+import org.eclipse.stem.core.trigger.TriggerFactory;
+import org.eclipse.stem.core.trigger.TriggerPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TriggerPackageImpl extends EPackageImpl implements TriggerPackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass triggerEClass = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.eclipse.stem.core.trigger.TriggerPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private TriggerPackageImpl() {
+ super(eNS_URI, TriggerFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link TriggerPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static TriggerPackage init() {
+ if (isInited) return (TriggerPackage)EPackage.Registry.INSTANCE.getEPackage(TriggerPackage.eNS_URI);
+
+ // Obtain or create and register package
+ TriggerPackageImpl theTriggerPackage = (TriggerPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof TriggerPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new TriggerPackageImpl());
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ EcorePackage.eINSTANCE.eClass();
+
+ // Obtain or create and register interdependencies
+ CommonPackageImpl theCommonPackage = (CommonPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(CommonPackage.eNS_URI) instanceof CommonPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(CommonPackage.eNS_URI) : CommonPackage.eINSTANCE);
+ ExperimentPackageImpl theExperimentPackage = (ExperimentPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ExperimentPackage.eNS_URI) instanceof ExperimentPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ExperimentPackage.eNS_URI) : ExperimentPackage.eINSTANCE);
+ GraphPackageImpl theGraphPackage = (GraphPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(GraphPackage.eNS_URI) instanceof GraphPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(GraphPackage.eNS_URI) : GraphPackage.eINSTANCE);
+ ModelPackageImpl theModelPackage = (ModelPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ModelPackage.eNS_URI) instanceof ModelPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ModelPackage.eNS_URI) : ModelPackage.eINSTANCE);
+ ModifierPackageImpl theModifierPackage = (ModifierPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ModifierPackage.eNS_URI) instanceof ModifierPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ModifierPackage.eNS_URI) : ModifierPackage.eINSTANCE);
+ PredicatePackageImpl thePredicatePackage = (PredicatePackageImpl)(EPackage.Registry.INSTANCE.getEPackage(PredicatePackage.eNS_URI) instanceof PredicatePackageImpl ? EPackage.Registry.INSTANCE.getEPackage(PredicatePackage.eNS_URI) : PredicatePackage.eINSTANCE);
+ ScenarioPackageImpl theScenarioPackage = (ScenarioPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(ScenarioPackage.eNS_URI) instanceof ScenarioPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(ScenarioPackage.eNS_URI) : ScenarioPackage.eINSTANCE);
+ SequencerPackageImpl theSequencerPackage = (SequencerPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SequencerPackage.eNS_URI) instanceof SequencerPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SequencerPackage.eNS_URI) : SequencerPackage.eINSTANCE);
+ SolverPackageImpl theSolverPackage = (SolverPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SolverPackage.eNS_URI) instanceof SolverPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SolverPackage.eNS_URI) : SolverPackage.eINSTANCE);
+ LoggerPackageImpl theLoggerPackage = (LoggerPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(LoggerPackage.eNS_URI) instanceof LoggerPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(LoggerPackage.eNS_URI) : LoggerPackage.eINSTANCE);
+
+ // Create package meta-data objects
+ theTriggerPackage.createPackageContents();
+ theCommonPackage.createPackageContents();
+ theExperimentPackage.createPackageContents();
+ theGraphPackage.createPackageContents();
+ theModelPackage.createPackageContents();
+ theModifierPackage.createPackageContents();
+ thePredicatePackage.createPackageContents();
+ theScenarioPackage.createPackageContents();
+ theSequencerPackage.createPackageContents();
+ theSolverPackage.createPackageContents();
+ theLoggerPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theTriggerPackage.initializePackageContents();
+ theCommonPackage.initializePackageContents();
+ theExperimentPackage.initializePackageContents();
+ theGraphPackage.initializePackageContents();
+ theModelPackage.initializePackageContents();
+ theModifierPackage.initializePackageContents();
+ thePredicatePackage.initializePackageContents();
+ theScenarioPackage.initializePackageContents();
+ theSequencerPackage.initializePackageContents();
+ theSolverPackage.initializePackageContents();
+ theLoggerPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theTriggerPackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(TriggerPackage.eNS_URI, theTriggerPackage);
+ return theTriggerPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getTrigger() {
+ return triggerEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getTrigger_Predicate() {
+ return (EReference)triggerEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getTrigger_Actions() {
+ return (EReference)triggerEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TriggerFactory getTriggerFactory() {
+ return (TriggerFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ triggerEClass = createEClass(TRIGGER);
+ createEReference(triggerEClass, TRIGGER__PREDICATE);
+ createEReference(triggerEClass, TRIGGER__ACTIONS);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ ModelPackage theModelPackage = (ModelPackage)EPackage.Registry.INSTANCE.getEPackage(ModelPackage.eNS_URI);
+ PredicatePackage thePredicatePackage = (PredicatePackage)EPackage.Registry.INSTANCE.getEPackage(PredicatePackage.eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ triggerEClass.getESuperTypes().add(theModelPackage.getDecorator());
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(triggerEClass, Trigger.class, "Trigger", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(getTrigger_Predicate(), thePredicatePackage.getPredicate(), null, "predicate", null, 0, 1, Trigger.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+ initEReference(getTrigger_Actions(), theModelPackage.getDecorator(), null, "actions", null, 0, -1, Trigger.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} //TriggerPackageImpl
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/provider/TriggerItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/provider/TriggerItemProvider.java
new file mode 100644
index 000000000..2cde283e0
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/provider/TriggerItemProvider.java
@@ -0,0 +1,297 @@
+package org.eclipse.stem.core.trigger.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.stem.core.Utility;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.provider.CoreEditPlugin;
+import org.eclipse.stem.core.model.Decorator;
+import org.eclipse.stem.core.model.provider.DecoratorItemProvider;
+import org.eclipse.stem.core.predicate.Predicate;
+import org.eclipse.stem.core.trigger.Trigger;
+import org.eclipse.stem.core.trigger.TriggerPackage;
+import org.eclipse.swt.dnd.DND;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.stem.core.trigger.Trigger} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TriggerItemProvider
+ extends DecoratorItemProvider
+ implements
+ IEditingDomainItemProvider,
+ IStructuredItemContentProvider,
+ ITreeItemContentProvider,
+ IItemLabelProvider,
+ IItemPropertySource {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TriggerItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addActionsPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the Actions feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addActionsPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_Trigger_actions_feature"), //$NON-NLS-1$
+ getString("_UI_PropertyDescriptor_description", "_UI_Trigger_actions_feature", "_UI_Trigger_type"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ TriggerPackage.Literals.TRIGGER__ACTIONS,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+ * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+ * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+ if (childrenFeatures == null) {
+ super.getChildrenFeatures(object);
+ childrenFeatures.add(TriggerPackage.Literals.TRIGGER__PREDICATE);
+ }
+ return childrenFeatures;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EStructuralFeature getChildFeature(Object object, Object child) {
+ // Check the type of the specified child object and return the proper feature to use for
+ // adding (see {@link AddCommand}) it as a child.
+
+ return super.getChildFeature(object, child);
+ }
+
+ /**
+ * This returns Trigger.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public Object getImage(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/customobj16/Trigger"));
+ }
+
+ /**
+ * This returns Trigger.gif.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Object getImageGen(Object object) {
+ return overlayImage(object, getResourceLocator().getImage("full/obj16/Trigger")); //$NON-NLS-1$
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public String getText(Object object) {
+ return super.getText(object);
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getTextGen(Object object) {
+ URI labelValue = ((Trigger)object).getURI();
+ String label = labelValue == null ? null : labelValue.toString();
+ return label == null || label.length() == 0 ?
+ getString("_UI_Trigger_type") : //$NON-NLS-1$
+ getString("_UI_Trigger_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+
+ switch (notification.getFeatureID(Trigger.class)) {
+ case TriggerPackage.TRIGGER__PREDICATE:
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ return;
+ }
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+ /**
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createSetCommand(org.eclipse.emf.edit.domain.EditingDomain,
+ * org.eclipse.emf.ecore.EObject,
+ * org.eclipse.emf.ecore.EStructuralFeature, java.lang.Object, int)
+ */
+ @Override
+ protected Command createSetCommand(EditingDomain domain, EObject owner,
+ EStructuralFeature feature, Object value, int index) {
+ // Are we setting the model during a drag and drop?
+ Object temp = value;
+
+ if (value instanceof IFile) {
+ // Yes
+ final IFile iFile = (IFile) value;
+ final URI uri = URI.createFileURI(iFile.getLocation().toString());
+ final Identifiable identifable = Utility.getIdentifiable(uri);
+ temp = identifable;
+ } // if IFile
+
+ else if (value instanceof String) {
+ // Yes
+ // These come from IdentifablePluginView
+ final String uriString = (String) value;
+ try {
+ final URI uri = URI.createURI(uriString);
+ final Identifiable identifable = Utility.getIdentifiable(uri);
+ temp = identifable;
+ } catch (Exception e) {
+ // Ignore it
+ }
+ } // if String
+
+ if (temp instanceof Predicate) {
+ return super.createSetCommand(domain, owner,
+ TriggerPackage.eINSTANCE.getTrigger_Predicate(), temp, index);
+ } else if (temp instanceof Decorator) {
+ return super.createSetCommand(domain, owner,
+ TriggerPackage.eINSTANCE.getTrigger_Actions(), temp,
+ index);
+ } // if
+ else {
+ return super.createSetCommand(domain, owner, feature, value, index);
+ }
+ } // createSetCommand
+
+ /**
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createDragAndDropCommand(org.eclipse.emf.edit.domain.EditingDomain,
+ * java.lang.Object, float, int, int, java.util.Collection)
+ */
+ @Override
+ protected Command createDragAndDropCommand(EditingDomain domain,
+ Object owner, float location, int operations, int operation,
+ Collection<?> collection) {
+ // We add DND.DROP_LINK as an allowed operation because all drops will
+ // be links and some sources don't allow links, we convert to links
+ // anyway
+ return super.createDragAndDropCommand(domain, owner, location,
+ operations | DND.DROP_LINK, operation, collection);
+ } // createDragAndDropCommand
+
+ /**
+ * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#isWrappingNeeded(java.lang.Object)
+ */
+ @Override
+ protected boolean isWrappingNeeded(Object object) {
+ // return super.isWrappingNeeded(object);
+ // We return true so that non-containment references are wrapped. This
+ // enables the delete command in the editor's context menu.
+ return true;
+ } // isWrappingNeeded
+
+ /**
+ * Return the resource locator for this item provider's resources.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ResourceLocator getResourceLocator() {
+ return CoreEditPlugin.INSTANCE;
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/provider/TriggerItemProviderAdapterFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/provider/TriggerItemProviderAdapterFactory.java
new file mode 100644
index 000000000..3bae9dea4
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/provider/TriggerItemProviderAdapterFactory.java
@@ -0,0 +1,207 @@
+package org.eclipse.stem.core.trigger.provider;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.stem.core.trigger.util.TriggerAdapterFactory;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TriggerItemProviderAdapterFactory extends TriggerAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+ /**
+ * This keeps track of the root adapter factory that delegates to this adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ComposedAdapterFactory parentAdapterFactory;
+
+ /**
+ * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+ /**
+ * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+ /**
+ * This constructs an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TriggerItemProviderAdapterFactory() {
+ supportedTypes.add(IEditingDomainItemProvider.class);
+ supportedTypes.add(IStructuredItemContentProvider.class);
+ supportedTypes.add(ITreeItemContentProvider.class);
+ supportedTypes.add(IItemLabelProvider.class);
+ supportedTypes.add(IItemPropertySource.class);
+ }
+
+ /**
+ * This keeps track of the one adapter used for all {@link org.eclipse.stem.core.trigger.Trigger} instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TriggerItemProvider triggerItemProvider;
+
+ /**
+ * This creates an adapter for a {@link org.eclipse.stem.core.trigger.Trigger}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter createTriggerAdapter() {
+ if (triggerItemProvider == null) {
+ triggerItemProvider = new TriggerItemProvider(this);
+ }
+
+ return triggerItemProvider;
+ }
+
+ /**
+ * This returns the root adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ComposeableAdapterFactory getRootAdapterFactory() {
+ return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+ }
+
+ /**
+ * This sets the composed adapter factory that contains this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+ this.parentAdapterFactory = parentAdapterFactory;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object type) {
+ return supportedTypes.contains(type) || super.isFactoryForType(type);
+ }
+
+ /**
+ * This implementation substitutes the factory itself as the key for the adapter.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Adapter adapt(Notifier notifier, Object type) {
+ return super.adapt(notifier, this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public Object adapt(Object object, Object type) {
+ if (isFactoryForType(type)) {
+ Object adapter = super.adapt(object, type);
+ if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+ return adapter;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * This adds a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void addListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.addListener(notifyChangedListener);
+ }
+
+ /**
+ * This removes a listener.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void removeListener(INotifyChangedListener notifyChangedListener) {
+ changeNotifier.removeListener(notifyChangedListener);
+ }
+
+ /**
+ * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void fireNotifyChanged(Notification notification) {
+ changeNotifier.fireNotifyChanged(notification);
+
+ if (parentAdapterFactory != null) {
+ parentAdapterFactory.fireNotifyChanged(notification);
+ }
+ }
+
+ /**
+ * This disposes all of the item providers created by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void dispose() {
+ if (triggerItemProvider != null) triggerItemProvider.dispose();
+ }
+
+}
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/util/TriggerAdapterFactory.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/util/TriggerAdapterFactory.java
new file mode 100644
index 000000000..e1f42751e
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/util/TriggerAdapterFactory.java
@@ -0,0 +1,202 @@
+package org.eclipse.stem.core.trigger.util;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.SanityChecker;
+import org.eclipse.stem.core.model.Decorator;
+import org.eclipse.stem.core.trigger.Trigger;
+import org.eclipse.stem.core.trigger.TriggerPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.trigger.TriggerPackage
+ * @generated
+ */
+public class TriggerAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static TriggerPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TriggerAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = TriggerPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TriggerSwitch<Adapter> modelSwitch =
+ new TriggerSwitch<Adapter>() {
+ @Override
+ public Adapter caseTrigger(Trigger object) {
+ return createTriggerAdapter();
+ }
+ @Override
+ public <T> Adapter caseComparable(Comparable<T> object) {
+ return createComparableAdapter();
+ }
+ @Override
+ public Adapter caseSanityChecker(SanityChecker object) {
+ return createSanityCheckerAdapter();
+ }
+ @Override
+ public Adapter caseIdentifiable(Identifiable object) {
+ return createIdentifiableAdapter();
+ }
+ @Override
+ public Adapter caseDecorator(Decorator object) {
+ return createDecoratorAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.trigger.Trigger <em>Trigger</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.trigger.Trigger
+ * @generated
+ */
+ public Adapter createTriggerAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link java.lang.Comparable <em>Comparable</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see java.lang.Comparable
+ * @generated
+ */
+ public Adapter createComparableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.SanityChecker <em>Sanity Checker</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.common.SanityChecker
+ * @generated
+ */
+ public Adapter createSanityCheckerAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.common.Identifiable <em>Identifiable</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.common.Identifiable
+ * @generated
+ */
+ public Adapter createIdentifiableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.stem.core.model.Decorator <em>Decorator</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.stem.core.model.Decorator
+ * @generated
+ */
+ public Adapter createDecoratorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} //TriggerAdapterFactory
diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/util/TriggerSwitch.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/util/TriggerSwitch.java
new file mode 100644
index 000000000..f8cb60c98
--- /dev/null
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/trigger/util/TriggerSwitch.java
@@ -0,0 +1,202 @@
+package org.eclipse.stem.core.trigger.util;
+
+/*******************************************************************************
+ * Copyright (c) 2008 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
+ *******************************************************************************/
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.stem.core.common.Identifiable;
+import org.eclipse.stem.core.common.SanityChecker;
+import org.eclipse.stem.core.model.Decorator;
+import org.eclipse.stem.core.trigger.Trigger;
+import org.eclipse.stem.core.trigger.TriggerPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.stem.core.trigger.TriggerPackage
+ * @generated
+ */
+public class TriggerSwitch<T1> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static TriggerPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TriggerSwitch() {
+ if (modelPackage == null) {
+ modelPackage = TriggerPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ public T1 doSwitch(EObject theEObject) {
+ return doSwitch(theEObject.eClass(), theEObject);
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T1 doSwitch(EClass theEClass, EObject theEObject) {
+ if (theEClass.eContainer() == modelPackage) {
+ return doSwitch(theEClass.getClassifierID(), theEObject);
+ }
+ else {
+ List<EClass> eSuperTypes = theEClass.getESuperTypes();
+ return
+ eSuperTypes.isEmpty() ?
+ defaultCase(theEObject) :
+ doSwitch(eSuperTypes.get(0), theEObject);
+ }
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ protected T1 doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case TriggerPackage.TRIGGER: {
+ Trigger trigger = (Trigger)theEObject;
+ T1 result = caseTrigger(trigger);
+ if (result == null) result = caseDecorator(trigger);
+ if (result == null) result = caseIdentifiable(trigger);
+ if (result == null) result = caseComparable(trigger);
+ if (result == null) result = caseSanityChecker(trigger);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Trigger</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Trigger</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseTrigger(Trigger object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Comparable</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Comparable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public <T> T1 caseComparable(Comparable<T> object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Sanity Checker</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Sanity Checker</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseSanityChecker(SanityChecker object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Identifiable</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Identifiable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseIdentifiable(Identifiable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Decorator</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Decorator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T1 caseDecorator(Decorator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ public T1 defaultCase(EObject object) {
+ return null;
+ }
+
+} //TriggerSwitch

Back to the top