Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.core')
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/.classpath8
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/.cvsignore2
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/.project28
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/.settings/org.eclipse.jdt.core.prefs12
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/META-INF/MANIFEST.MF54
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/build.properties22
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/component.xml1
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/model/DaliEmfFormatter.xml258
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/model/core.ecore529
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/model/coreModels.genmodel656
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/model/java.ecore90
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/model/javaModel.ecore353
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/model/javaModel.genmodel173
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/model/orm.ecore270
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/model/persistence.ecore70
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/plugin.properties36
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/plugin.xml187
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/property_files/jpa_core.properties18
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/property_files/jpa_validation.properties55
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/schema/jpaPlatform.exsd122
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/AccessType.java237
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IAttributeMapping.java56
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaContentNode.java36
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaCoreConstants.java28
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaDataSource.java35
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaEObject.java39
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaFile.java56
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaFileContentProvider.java40
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaModel.java40
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaPlatform.java125
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaProject.java113
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaRootContentNode.java64
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaSourceObject.java31
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IMappingKeys.java30
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IPersistentAttribute.java92
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IPersistentType.java105
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/ITextRange.java41
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/ITypeMapping.java128
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IXmlEObject.java24
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCoreFactory.java209
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCoreMessages.java41
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCorePackage.java1783
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCorePlugin.java132
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaDataSource.java185
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaEObject.java128
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaFile.java337
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaFileContentRegistry.java65
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaModel.java264
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaModelManager.java543
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaPlatformRegistry.java190
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaProject.java645
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaProjectAdapterFactory.java42
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/NullTypeMapping.java252
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/XmlEObject.java217
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaAttributeMapping.java47
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaAttributeMappingProvider.java30
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaContentNodes.java24
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaTypeMapping.java40
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaTypeMappingProvider.java27
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaEObject.java95
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaJpaFileContentProvider.java37
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaPersistentAttribute.java652
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaPersistentType.java917
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JpaCompilationUnit.java432
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JpaJavaFactory.java139
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JpaJavaPackage.java787
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/AbstractJavaColumn.java672
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/AbstractJavaTable.java761
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/IntAnnotationElementAdapter.java100
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JPA.java294
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaAbstractQuery.java626
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaAssociationOverride.java434
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaAttributeMapping.java138
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaAttributeOverride.java238
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaBasic.java913
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaBasicProvider.java228
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaColumn.java448
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaDiscriminatorColumn.java726
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbeddable.java99
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbeddableProvider.java54
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbedded.java543
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbeddedId.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbeddedIdProvider.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbeddedProvider.java73
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEntity.java2761
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEntityProvider.java54
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaGeneratedValue.java343
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaGenerator.java574
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaId.java736
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaIdProvider.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaJoinColumn.java477
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaJoinTable.java788
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaManyToMany.java86
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaManyToManyProvider.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaManyToOne.java85
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaManyToOneProvider.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaMappedSuperclass.java125
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaMappedSuperclassProvider.java54
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaMultiRelationshipMapping.java509
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNamedColumn.java461
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNamedNativeQuery.java353
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNamedQuery.java75
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNullAttributeMapping.java57
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNullAttributeMappingProvider.java60
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNullTypeMapping.java97
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNullTypeMappingProvider.java55
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOneToMany.java86
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOneToManyProvider.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOneToOne.java289
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOneToOneProvider.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOrderBy.java437
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOverride.java293
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaPrimaryKeyJoinColumn.java695
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaQueryHint.java384
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaRelationshipMapping.java559
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaSecondaryTable.java104
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaSequenceGenerator.java340
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaSingleRelationshipMapping.java606
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTable.java83
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTableGenerator.java1118
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTransient.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTransientProvider.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTypeMapping.java262
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaVersion.java377
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaVersionProvider.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JpaJavaMappingsFactory.java505
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JpaJavaMappingsPackage.java4838
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/util/JpaJavaMappingsAdapterFactory.java1904
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/util/JpaJavaMappingsSwitch.java2486
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/util/JpaJavaAdapterFactory.java404
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/util/JpaJavaSwitch.java444
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/AbstractXmlColumn.java929
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/AbstractXmlNamedColumn.java451
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/AbstractXmlQuery.java353
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/AbstractXmlTable.java913
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/EntityMappings.java76
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/EntityMappingsForXml.java84
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/EntityMappingsInternal.java1690
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/IXmlAttributeMappingProvider.java17
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/IXmlColumnMapping.java73
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/IXmlContentNodes.java26
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/IXmlTypeMappingProvider.java18
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/OrmFactory.java655
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/OrmInit.java56
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/OrmPackage.java9394
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/OrmXmlJpaFileContentProvider.java95
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/OrmXmlResource.java20
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitDefaults.java143
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitDefaultsForXml.java143
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitDefaultsInternal.java951
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitMetadata.java74
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitMetadataForXml.java85
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitMetadataInternal.java533
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlAssociationOverride.java281
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlAttributeMapping.java361
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlAttributeOverride.java323
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlBasic.java699
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlBasicProvider.java40
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlColumn.java672
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlDiscriminatorColumn.java922
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbeddable.java88
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbeddableProvider.java25
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbedded.java354
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbeddedId.java60
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbeddedIdProvider.java40
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbeddedProvider.java40
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEntity.java82
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEntityForXml.java84
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEntityInternal.java1857
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEntityProvider.java24
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlGeneratedValue.java285
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlGenerator.java490
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlId.java672
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlIdProvider.java40
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlJoinColumn.java456
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlJoinTable.java507
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlManyToMany.java61
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlManyToManyProvider.java40
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlManyToOne.java60
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlManyToOneProvider.java41
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlMappedSuperclass.java104
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlMappedSuperclassProvider.java24
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlMultiRelationshipMapping.java24
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlMultiRelationshipMappingForXml.java83
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlMultiRelationshipMappingInternal.java553
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlNamedNativeQuery.java281
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlNamedQuery.java45
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlNullAttributeMapping.java56
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOneToMany.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOneToManyProvider.java40
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOneToOne.java240
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOneToOneProvider.java40
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOrderBy.java327
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOverride.java232
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlPersistentAttribute.java398
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlPersistentType.java940
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlPrimaryKeyJoinColumn.java411
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlQueryHint.java281
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlRelationshipMapping.java451
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlRootContentNode.java351
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlSecondaryTable.java61
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlSequenceGenerator.java281
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlSingleRelationshipMapping.java410
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTable.java70
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTableGenerator.java983
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTransient.java60
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTransientProvider.java40
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTypeMapping.java653
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlVersion.java387
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlVersionProvider.java40
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AbstractColumnTranslator.java71
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AbstractTableTranslator.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AccessTypeElementTranslator.java58
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AssociationOverrideTranslator.java86
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeMappingTranslator.java50
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeMappingsTranslator.java119
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeNameTranslator.java27
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeOverrideTranslator.java70
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/BasicTranslator.java79
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/BooleanEnumeratorTranslator.java23
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/ColumnTranslator.java68
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/DebugTranslator.java431
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/DiscriminatorColumnTranslator.java84
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmbeddableTranslator.java45
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmbeddedIdTranslator.java41
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmbeddedTranslator.java52
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmptyTagBooleanTranslator.java52
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EntityMappingsTranslator.java116
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EntityTranslator.java179
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EnumeratedTypeElementTranslator.java58
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EnumeratorTranslator.java42
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/GeneratedValueTranslator.java60
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/GeneratorTranslator.java52
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/IdTranslator.java65
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/JoinColumnTranslator.java54
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/JoinTableTranslator.java87
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/ManyToManyTranslator.java49
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/ManyToOneTranslator.java38
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/MappedSuperclassTranslator.java56
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/MultiObjectDependencyTranslator.java63
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/MultiRelationshipTranslator.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/NamedNativeQueryTranslator.java77
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/NamedQueryTranslator.java67
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OneToManyTranslator.java51
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OneToOneTranslator.java45
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrderByRefTranslator.java79
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrmXmlMapper.java168
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrmXmlResourceFactory.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrmXmlResourceImpl.java86
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/PersistenceUnitDefaultsTranslator.java100
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/PersistenceUnitMetadataTranslator.java84
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/PrimaryKeyJoinColumnTranslator.java49
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/QueryHintTranslator.java63
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/RelationshipTranslator.java31
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/SecondaryTableTranslator.java57
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/SequenceGeneratorTranslator.java42
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/SingleRelationshipTranslator.java55
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TableGeneratorTranslator.java67
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TableTranslator.java52
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TemporalTypeElementTranslator.java58
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TransientTranslator.java36
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TypeJavaClassTranslator.java28
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TypeMappingTranslator.java64
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TypeMappingsTranslator.java93
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/VersionTranslator.java36
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/util/OrmAdapterFactory.java2284
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/util/OrmSwitch.java3090
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/JavaClassRef.java168
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/MappingFileRef.java231
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/Persistence.java348
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceFactory.java278
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceInit.java55
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistencePackage.java1379
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceUnit.java877
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceUnitTransactionType.java212
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceXmlJpaFileContentProvider.java96
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceXmlRootContentNode.java357
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/Properties.java157
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/Property.java237
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/BooleanTranslator.java32
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/IPersistenceXmlContentNodes.java17
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/JavaClassRefTranslator.java33
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/MappingFileTranslator.java33
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/PersistenceResource.java75
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/PersistenceTranslator.java143
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/PersistenceXMLMapper.java38
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/PersistenceXmlResourceFactory.java58
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/TransactionTypeTranslator.java36
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/util/PersistenceAdapterFactory.java384
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/util/PersistenceSwitch.java455
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/emfutility/DOMUtilities.java14
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/IJpaFacetDataModelProperties.java35
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetDataModelProvider.java100
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetInstallDelegate.java57
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetPostInstallDelegate.java140
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetUninstallDelegate.java48
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetUtils.java111
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ASTNodeTextRange.java39
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AbstractAnnotationAdapter.java169
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AbstractDeclarationAnnotationAdapter.java148
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AbstractExpressionConverter.java50
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AbstractNestedDeclarationAnnotationAdapter.java420
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AnnotationAdapter.java72
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AnnotationEditFormatter.java155
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AnnotationElementAdapter.java78
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/Attribute.java52
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AttributeAnnotationTools.java218
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/BooleanAnnotationAdapter.java77
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/BooleanStringExpressionConverter.java54
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/CharacterStringExpressionConverter.java56
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/CombinationIndexedDeclarationAnnotationAdapter.java490
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ConversionDeclarationAnnotationElementAdapter.java112
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/DeclarationAnnotationAdapter.java64
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/DeclarationAnnotationElementAdapter.java48
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/EnumDeclarationAnnotationElementAdapter.java104
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ExpressionConverter.java35
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ExpressionDeclarationAnnotationElementAdapter.java354
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/FieldAttribute.java91
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/IndexedAnnotationAdapter.java28
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/IndexedDeclarationAnnotationAdapter.java28
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/JDTTools.java201
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/Member.java394
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/MemberAnnotationAdapter.java24
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/MemberAnnotationElementAdapter.java103
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/MemberIndexedAnnotationAdapter.java70
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/MethodAttribute.java97
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ModifiedDeclaration.java442
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NameStringExpressionConverter.java57
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NestedDeclarationAnnotationAdapter.java93
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NestedIndexedDeclarationAnnotationAdapter.java331
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NullDeclarationAnnotationAdapter.java80
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NullDeclarationAnnotationElementAdapter.java53
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NullExpressionConverter.java52
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NumberStringExpressionConverter.java54
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/PrimitiveTypeStringExpressionConverter.java61
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ShortCircuitAnnotationElementAdapter.java102
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/SimpleBooleanAnnotationAdapter.java85
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/SimpleDeclarationAnnotationAdapter.java64
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/SimpleTypeStringExpressionConverter.java63
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/StringExpressionConverter.java55
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/Type.java78
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/DefaultEagerFetchType.java265
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/DefaultFalseBoolean.java264
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/DefaultLazyFetchType.java265
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/DefaultTrueBoolean.java264
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/DiscriminatorType.java303
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/EnumType.java266
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/GenerationType.java331
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IAbstractColumn.java238
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IAbstractJoinColumn.java115
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IAssociationOverride.java152
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IAttributeOverride.java44
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IBasic.java193
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IColumn.java119
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IColumnMapping.java37
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IDiscriminatorColumn.java235
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IEmbeddable.java25
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IEmbedded.java144
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IEmbeddedId.java25
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IEntity.java636
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IGeneratedValue.java87
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IGenerator.java177
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IId.java163
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IJoinColumn.java64
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IJoinTable.java281
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IManyToMany.java23
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IManyToOne.java23
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IMappedSuperclass.java25
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IMultiRelationshipMapping.java90
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/INamedColumn.java136
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/INamedNativeQuery.java84
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/INamedQuery.java25
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/INonOwningMapping.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IOneToMany.java23
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IOneToOne.java24
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IOrderBy.java90
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IOverride.java81
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IPrimaryKeyJoinColumn.java23
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IQuery.java104
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IQueryHint.java84
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IRelationshipMapping.java134
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ISecondaryTable.java23
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ISequenceGenerator.java87
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ISingleRelationshipMapping.java180
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ITable.java245
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ITableGenerator.java386
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ITransient.java25
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IVersion.java76
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/InheritanceType.java303
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/JpaCoreMappingsFactory.java373
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/JpaCoreMappingsPackage.java8177
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/OrderingType.java240
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/RelationshipMappingTools.java42
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/TemporalType.java296
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/util/JpaCoreMappingsAdapterFactory.java984
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/util/JpaCoreMappingsSwitch.java1354
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/AbstractJoinColumnContext.java56
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/AssociationOverrideContext.java130
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/AttributeOverrideContext.java130
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/BaseContext.java59
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/BaseJpaPlatform.java175
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/BaseJpaProjectContext.java323
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/ColumnContext.java32
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/DefaultsContext.java30
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/GeneratorRepository.java53
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/IContext.java24
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/IGeneratorRepository.java29
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaAttributeContext.java105
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaBasicContext.java73
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaEmbeddableContext.java18
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaEmbeddedContext.java85
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaEmbeddedIdContext.java25
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaEntityContext.java288
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaIdContext.java117
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaManyToManyContext.java18
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaManyToOneContext.java24
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaMappedSuperclassContext.java25
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaMultiRelationshipMappingContext.java157
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaNullAttributeMappingContext.java25
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaNullTypeMappingContext.java24
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaOneToManyContext.java29
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaOneToOneContext.java24
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaPersistentAttributeContext.java115
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaRelationshipMappingContext.java51
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaSingleRelationshipMappingContext.java124
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaTransientContext.java25
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaTypeContext.java92
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaVersionContext.java73
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JoinColumnContext.java137
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JoinTableContext.java176
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/MappingFileContext.java158
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/NullGeneratorRepository.java41
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/PersistenceUnitContext.java484
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/PrimaryKeyJoinColumnContext.java37
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/TableContext.java81
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/TypeContext.java20
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlAttributeContext.java141
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlBasicContext.java124
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlEmbeddableContext.java18
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlEmbeddedContext.java106
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlEmbeddedIdContext.java21
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlEntityContext.java364
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlIdContext.java177
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlManyToManyContext.java22
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlManyToOneContext.java19
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlMappedSuperclassContext.java19
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlMultiRelationshipMappingContext.java72
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlNullAttributeMappingContext.java19
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlOneToManyContext.java29
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlOneToOneContext.java20
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlRelationshipMappingContext.java76
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlSingleRelationshipMappingContext.java145
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlTransientContext.java22
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlTypeContext.java368
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlVersionContext.java129
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/generic/GenericPlatform.java18
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/prefs/JpaPreferenceConstants.java17
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/prefs/JpaPreferenceInitializer.java32
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/synch/SynchronizeClassesJob.java194
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/util/JpaCoreAdapterFactory.java524
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/util/JpaCoreSwitch.java675
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/IJpaValidationMessages.java104
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/JpaHelper.java38
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/JpaValidationMessages.java64
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/JpaValidator.java54
465 files changed, 123567 insertions, 0 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.core/.classpath b/jpa/plugins/org.eclipse.jpt.core/.classpath
new file mode 100644
index 0000000000..8f257414e6
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="property_files"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/jpa/plugins/org.eclipse.jpt.core/.cvsignore b/jpa/plugins/org.eclipse.jpt.core/.cvsignore
new file mode 100644
index 0000000000..60463af3fc
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/.cvsignore
@@ -0,0 +1,2 @@
+bin
+build.xml
diff --git a/jpa/plugins/org.eclipse.jpt.core/.project b/jpa/plugins/org.eclipse.jpt.core/.project
new file mode 100644
index 0000000000..6ab3035c3c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.jpt.core</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/jpa/plugins/org.eclipse.jpt.core/.settings/org.eclipse.jdt.core.prefs b/jpa/plugins/org.eclipse.jpt.core/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000000..00070b73fb
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+#Sun Nov 12 15:24:36 EST 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/jpa/plugins/org.eclipse.jpt.core/META-INF/MANIFEST.MF b/jpa/plugins/org.eclipse.jpt.core/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000..a265455e0a
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/META-INF/MANIFEST.MF
@@ -0,0 +1,54 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-Vendor: %providerName
+Bundle-SymbolicName: org.eclipse.jpt.core;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Activator: org.eclipse.jpt.core.internal.JpaCorePlugin
+Bundle-ClassPath: .
+Bundle-Localization: plugin
+Eclipse-LazyStart: true
+Require-Bundle: org.eclipse.core.commands,
+ org.eclipse.core.filebuffers,
+ org.eclipse.core.resources,
+ org.eclipse.core.runtime,
+ org.eclipse.emf.ecore,
+ org.eclipse.emf.ecore.xmi,
+ org.eclipse.jdt.core,
+ org.eclipse.jem,
+ org.eclipse.jem.util,
+ org.eclipse.jem.workbench,
+ org.eclipse.jst.j2ee.core,
+ org.eclipse.jpt.db,
+ org.eclipse.jpt.utility,
+ org.eclipse.text,
+ org.eclipse.wst.common.emf,
+ org.eclipse.wst.common.frameworks,
+ org.eclipse.wst.common.modulecore,
+ org.eclipse.wst.common.project.facet.core,
+ org.eclipse.wst.sse.core,
+ org.eclipse.wst.validation,
+ org.eclipse.wst.xml.core,
+ org.eclipse.xsd
+Export-Package: org.eclipse.jpt.core.internal,
+ org.eclipse.jpt.core.internal.content.java,
+ org.eclipse.jpt.core.internal.content.java.mappings,
+ org.eclipse.jpt.core.internal.content.java.mappings.util,
+ org.eclipse.jpt.core.internal.content.java.util,
+ org.eclipse.jpt.core.internal.content.orm,
+ org.eclipse.jpt.core.internal.content.orm.resource,
+ org.eclipse.jpt.core.internal.content.orm.util,
+ org.eclipse.jpt.core.internal.content.persistence,
+ org.eclipse.jpt.core.internal.content.persistence.resource,
+ org.eclipse.jpt.core.internal.content.persistence.util,
+ org.eclipse.jpt.core.internal.facet,
+ org.eclipse.jpt.core.internal.jdtutility,
+ org.eclipse.jpt.core.internal.mappings,
+ org.eclipse.jpt.core.internal.mappings.util,
+ org.eclipse.jpt.core.internal.platform,
+ org.eclipse.jpt.core.internal.platform.generic,
+ org.eclipse.jpt.core.internal.prefs,
+ org.eclipse.jpt.core.internal.synch,
+ org.eclipse.jpt.core.internal.util,
+ org.eclipse.jpt.core.internal.validation
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/jpa/plugins/org.eclipse.jpt.core/build.properties b/jpa/plugins/org.eclipse.jpt.core/build.properties
new file mode 100644
index 0000000000..9494ab4dcb
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/build.properties
@@ -0,0 +1,22 @@
+###############################################################################
+# Copyright (c) 2006 Oracle.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# Oracle. - initial API and implementation
+###############################################################################
+javacSource=1.5
+javacTarget=1.5
+source.. = src/,\
+ property_files/
+output.. = bin/
+bin.includes = .,\
+ model/,\
+ META-INF/,\
+ plugin.xml,\
+ plugin.properties
+jars.compile.order = .
+src.includes = model/
diff --git a/jpa/plugins/org.eclipse.jpt.core/component.xml b/jpa/plugins/org.eclipse.jpt.core/component.xml
new file mode 100644
index 0000000000..2311024fcd
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/component.xml
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><component xmlns="http://eclipse.org/wtp/releng/tools/component-model" name="org.eclipse.jpt.core"><description url=""></description><component-depends unrestricted="true"></component-depends><plugin id="org.eclipse.jpt.core" fragment="false"/></component> \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/model/DaliEmfFormatter.xml b/jpa/plugins/org.eclipse.jpt.core/model/DaliEmfFormatter.xml
new file mode 100644
index 0000000000..0c60c82f8f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/model/DaliEmfFormatter.xml
@@ -0,0 +1,258 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<profiles version="10">
+<profile kind="CodeFormatterProfile" name="DaliEMFFormatter" version="10">
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="2"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="4"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_binary_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indentation.size" value="4"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.lineSplit" value="80"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="32"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_binary_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="48"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_binary_expression" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="32"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="insert"/>
+<setting id="org.eclipse.jdt.core.compiler.problem.assertIdentifier" value="error"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
+<setting id="org.eclipse.jdt.core.compiler.source" value="1.5"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="80"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="next_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.compiler.compliance" value="1.5"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="insert"/>
+<setting id="org.eclipse.jdt.core.compiler.problem.enumIdentifier" value="error"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="true"/>
+<setting id="org.eclipse.jdt.core.compiler.codegen.targetPlatform" value="1.5"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="52"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="tab"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_comments" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
+</profile>
+</profiles>
diff --git a/jpa/plugins/org.eclipse.jpt.core/model/core.ecore b/jpa/plugins/org.eclipse.jpt.core/model/core.ecore
new file mode 100644
index 0000000000..96c4982baa
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/model/core.ecore
@@ -0,0 +1,529 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="internal"
+ nsURI="jpt.core.xmi" nsPrefix="jpt.core">
+ <eClassifiers xsi:type="ecore:EClass" name="IJpaModel" abstract="true" interface="true"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JpaModel" eSuperTypes="#//JpaEObject #//IJpaModel">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="projects" upperBound="-1"
+ eType="#//IJpaProject" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IJpaEObject" abstract="true" interface="true">
+ <eOperations name="getJpaProject" eType="#//IJpaProject"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="JpaEObject" abstract="true" eSuperTypes="#//IJpaEObject"/>
+ <eClassifiers xsi:type="ecore:EClass" name="IJpaProject" abstract="true" interface="true"
+ eSuperTypes="#//IJpaEObject">
+ <eOperations name="getModel" lowerBound="1" eType="#//IJpaModel"/>
+ <eOperations name="getPlatform" ordered="false" unique="false" lowerBound="1"
+ eType="#//IJpaPlatform"/>
+ <eOperations name="setPlatform">
+ <eParameters name="platformId" ordered="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ </eOperations>
+ <eOperations name="getDataSource" lowerBound="1" eType="#//IJpaDataSource"/>
+ <eOperations name="setDataSource" ordered="false" unique="false" lowerBound="1">
+ <eParameters name="connectionProfileName" ordered="false" unique="false" lowerBound="1"
+ eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="JpaProject" eSuperTypes="#//JpaEObject #//IJpaProject">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="platform" ordered="false"
+ unique="false" lowerBound="1" eType="#//IJpaPlatform" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="dataSource" ordered="false"
+ unique="false" eType="#//IJpaDataSource" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="files" upperBound="-1"
+ eType="#//IJpaFile" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IJpaPlatform" abstract="true" interface="true"/>
+ <eClassifiers xsi:type="ecore:EClass" name="IJpaDataSource" abstract="true" interface="true"
+ eSuperTypes="#//IJpaEObject">
+ <eOperations name="getConnectionProfileName" ordered="false" unique="false" lowerBound="1"
+ eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="JpaDataSource" eSuperTypes="#//JpaEObject #//IJpaDataSource">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="connectionProfileName"
+ ordered="false" unique="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IJpaFile" abstract="true" interface="true"
+ eSuperTypes="#//IJpaEObject">
+ <eOperations name="getContentId" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eOperations name="getContent" eType="#//IJpaRootContentNode"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="JpaFile" eSuperTypes="#//JpaEObject #//IJpaFile">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="contentId" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="content" eType="#//IJpaRootContentNode"
+ containment="true" eOpposite="#//IJpaRootContentNode/jpaFile"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IJpaSourceObject" abstract="true" interface="true"
+ eSuperTypes="#//IJpaEObject">
+ <eOperations name="getJpaFile" eType="#//IJpaFile"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IXmlEObject" abstract="true" interface="true"
+ eSuperTypes="#//IJpaEObject #//IJpaSourceObject"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlEObject" abstract="true" eSuperTypes="#//JpaEObject #//IXmlEObject"/>
+ <eClassifiers xsi:type="ecore:EClass" name="IJpaContentNode" abstract="true" interface="true"
+ eSuperTypes="#//IJpaSourceObject">
+ <eOperations name="getJpaFile" lowerBound="1" eType="#//IJpaFile"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IJpaRootContentNode" abstract="true"
+ interface="true" eSuperTypes="#//IJpaContentNode">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="jpaFile" eType="#//IJpaFile"
+ changeable="false" defaultValueLiteral="" eOpposite="#//JpaFile/content"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IPersistentType" abstract="true" interface="true"
+ eSuperTypes="#//IJpaContentNode">
+ <eOperations name="getMapping" lowerBound="1" eType="#//ITypeMapping"/>
+ <eOperations name="parentPersistentType" eType="#//IPersistentType"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="mappingKey" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ITypeMapping" abstract="true" interface="true"
+ eSuperTypes="#//IJpaSourceObject">
+ <eOperations name="getPersistentType" lowerBound="1" eType="#//IPersistentType"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="tableName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" derived="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="NullTypeMapping" eSuperTypes="#//JpaEObject #//ITypeMapping #//IJpaSourceObject"/>
+ <eClassifiers xsi:type="ecore:EClass" name="IPersistentAttribute" abstract="true"
+ interface="true" eSuperTypes="#//IJpaContentNode">
+ <eOperations name="getMapping" lowerBound="1" eType="#//IAttributeMapping"/>
+ <eOperations name="typeMapping" lowerBound="1" eType="#//ITypeMapping"/>
+ <eOperations name="getName" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="mappingKey" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" changeable="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IAttributeMapping" abstract="true" interface="true"
+ eSuperTypes="#//IJpaSourceObject">
+ <eOperations name="getPersistentAttribute" lowerBound="1" eType="#//IPersistentAttribute"/>
+ <eOperations name="isDefault" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="AccessType">
+ <eLiterals name="Default" literal="Default"/>
+ <eLiterals name="PROPERTY" value="1" literal="Property"/>
+ <eLiterals name="FIELD" value="2" literal="Field"/>
+ </eClassifiers>
+ <eSubpackages name="mappings" nsURI="jpt.core.mappings.xmi" nsPrefix="jpt.core.mappings">
+ <eClassifiers xsi:type="ecore:EClass" name="IMappedSuperclass" abstract="true"
+ interface="true" eSuperTypes="#//ITypeMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="IEntity" abstract="true" interface="true"
+ eSuperTypes="#//ITypeMapping">
+ <eOperations name="discriminatorValueIsAllowed" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eOperations name="getSecondaryTables" upperBound="-1" eType="#//mappings/ISecondaryTable"/>
+ <eOperations name="parentEntity" eType="#//mappings/IEntity"/>
+ <eOperations name="rootEntity" eType="#//mappings/IEntity"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="table" lowerBound="1"
+ eType="#//mappings/ITable" changeable="false" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="primaryKeyJoinColumns"
+ upperBound="-1" eType="#//mappings/IPrimaryKeyJoinColumn" changeable="false"
+ volatile="true" transient="true" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="specifiedPrimaryKeyJoinColumns"
+ upperBound="-1" eType="#//mappings/IPrimaryKeyJoinColumn" containment="true"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="defaultPrimaryKeyJoinColumns"
+ upperBound="-1" eType="#//mappings/IPrimaryKeyJoinColumn" containment="true"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="inheritanceStrategy"
+ eType="#//mappings/InheritanceType"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultDiscriminatorValue"
+ eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedDiscriminatorValue"
+ eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="discriminatorValue" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"
+ changeable="false" volatile="true" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="discriminatorColumn"
+ eType="#//mappings/IDiscriminatorColumn" changeable="false" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="sequenceGenerator" eType="#//mappings/ISequenceGenerator"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="tableGenerator" eType="#//mappings/ITableGenerator"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="attributeOverrides" upperBound="-1"
+ eType="#//mappings/IAttributeOverride" changeable="false" volatile="true"
+ transient="true" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="specifiedAttributeOverrides"
+ upperBound="-1" eType="#//mappings/IAttributeOverride" containment="true"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="defaultAttributeOverrides"
+ upperBound="-1" eType="#//mappings/IAttributeOverride" containment="true"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="associationOverrides"
+ upperBound="-1" eType="#//mappings/IAssociationOverride" changeable="false"
+ volatile="true" transient="true" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="specifiedAssociationOverrides"
+ upperBound="-1" eType="#//mappings/IAssociationOverride" containment="true"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="defaultAssociationOverrides"
+ upperBound="-1" eType="#//mappings/IAssociationOverride" containment="true"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="namedQueries" upperBound="-1"
+ eType="#//mappings/INamedQuery" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="namedNativeQueries" upperBound="-1"
+ eType="#//mappings/INamedNativeQuery" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IEmbeddable" abstract="true" interface="true"
+ eSuperTypes="#//ITypeMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="ITable" abstract="true" interface="true"
+ eSuperTypes="#//IJpaSourceObject">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="catalog" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedCatalog" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultCatalog" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="schema" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedSchema" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultSchema" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="INamedColumn" abstract="true" interface="true"
+ eSuperTypes="#//IJpaSourceObject">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="columnDefinition" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IAbstractColumn" abstract="true" interface="true"
+ eSuperTypes="#//mappings/INamedColumn">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="unique" eType="#//mappings/DefaultFalseBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="nullable" eType="#//mappings/DefaultTrueBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="insertable" eType="#//mappings/DefaultTrueBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="updatable" eType="#//mappings/DefaultTrueBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="table" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedTable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultTable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IColumn" abstract="true" interface="true"
+ eSuperTypes="#//mappings/IAbstractColumn">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="length" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ defaultValueLiteral="255"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="precision" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="scale" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IColumnMapping" abstract="true" interface="true">
+ <eOperations name="getColumn" eType="#//mappings/IColumn"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IBasic" abstract="true" interface="true"
+ eSuperTypes="#//IAttributeMapping #//mappings/IColumnMapping">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="fetch" eType="#//mappings/DefaultEagerFetchType"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="optional" eType="#//mappings/DefaultTrueBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="column" lowerBound="1"
+ eType="#//mappings/IColumn" changeable="false" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="lob" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="temporal" eType="#//mappings/TemporalType"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="enumerated" eType="#//mappings/EnumType"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IId" abstract="true" interface="true"
+ eSuperTypes="#//IAttributeMapping #//mappings/IColumnMapping">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="column" lowerBound="1"
+ eType="#//mappings/IColumn" changeable="false" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="generatedValue" eType="#//mappings/IGeneratedValue"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="temporal" eType="#//mappings/TemporalType"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="tableGenerator" eType="#//mappings/ITableGenerator"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="sequenceGenerator" eType="#//mappings/ISequenceGenerator"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ITransient" abstract="true" interface="true"
+ eSuperTypes="#//IAttributeMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="IVersion" abstract="true" interface="true"
+ eSuperTypes="#//IAttributeMapping #//mappings/IColumnMapping">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="column" lowerBound="1"
+ eType="#//mappings/IColumn" changeable="false" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="temporal" eType="#//mappings/TemporalType"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IEmbeddedId" abstract="true" interface="true"
+ eSuperTypes="#//IAttributeMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="IEmbedded" abstract="true" interface="true"
+ eSuperTypes="#//IAttributeMapping">
+ <eOperations name="embeddable" eType="#//mappings/IEmbeddable"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="attributeOverrides" upperBound="-1"
+ eType="#//mappings/IAttributeOverride" changeable="false" volatile="true"
+ transient="true" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="specifiedAttributeOverrides"
+ upperBound="-1" eType="#//mappings/IAttributeOverride" containment="true"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="defaultAttributeOverrides"
+ upperBound="-1" eType="#//mappings/IAttributeOverride" containment="true"
+ resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IRelationshipMapping" abstract="true"
+ interface="true" eSuperTypes="#//IAttributeMapping">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="targetEntity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedTargetEntity"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultTargetEntity"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="resolvedTargetEntity"
+ eType="#//mappings/IEntity"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="INonOwningMapping" abstract="true"
+ interface="true" eSuperTypes="#//mappings/IRelationshipMapping">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="mappedBy" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IMultiRelationshipMapping" abstract="true"
+ interface="true" eSuperTypes="#//mappings/INonOwningMapping">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="fetch" eType="#//mappings/DefaultLazyFetchType"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="joinTable" lowerBound="1"
+ eType="#//mappings/IJoinTable" changeable="false" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="orderBy" lowerBound="1"
+ eType="#//mappings/IOrderBy" changeable="false" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IOneToMany" abstract="true" interface="true"
+ eSuperTypes="#//mappings/IMultiRelationshipMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="IManyToMany" abstract="true" interface="true"
+ eSuperTypes="#//mappings/IMultiRelationshipMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="ISingleRelationshipMapping" abstract="true"
+ interface="true" eSuperTypes="#//mappings/IRelationshipMapping">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="fetch" eType="#//mappings/DefaultEagerFetchType"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="joinColumns" upperBound="-1"
+ eType="#//mappings/IJoinColumn" changeable="false" volatile="true" transient="true"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="specifiedJoinColumns"
+ upperBound="-1" eType="#//mappings/IJoinColumn" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="defaultJoinColumns" upperBound="-1"
+ eType="#//mappings/IJoinColumn" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IManyToOne" abstract="true" interface="true"
+ eSuperTypes="#//mappings/ISingleRelationshipMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="IOneToOne" abstract="true" interface="true"
+ eSuperTypes="#//mappings/ISingleRelationshipMapping #//mappings/INonOwningMapping"/>
+ <eClassifiers xsi:type="ecore:EEnum" name="DefaultEagerFetchType">
+ <eLiterals name="Default" literal="Default (Eager)"/>
+ <eLiterals name="EAGER" value="1" literal="Eager"/>
+ <eLiterals name="LAZY" value="2" literal="Lazy"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="DefaultLazyFetchType">
+ <eLiterals name="Default" literal="Default (Lazy)"/>
+ <eLiterals name="LAZY" value="1" literal="Lazy"/>
+ <eLiterals name="EAGER" value="2" literal="Eager"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="DefaultFalseBoolean">
+ <eLiterals name="Default" literal="Default (False)"/>
+ <eLiterals name="false" value="1" literal="False"/>
+ <eLiterals name="true" value="2" literal="True"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="DefaultTrueBoolean">
+ <eLiterals name="Default" literal="Default (False)"/>
+ <eLiterals name="true" value="1" literal="True"/>
+ <eLiterals name="false" value="2" literal="False"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="TemporalType">
+ <eLiterals name="Null" literal=""/>
+ <eLiterals name="DATE" value="1" literal="Date"/>
+ <eLiterals name="TIME" value="2" literal="Time"/>
+ <eLiterals name="TIMESTAMP" value="3" literal="Timestamp"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IJoinTable" abstract="true" interface="true"
+ eSuperTypes="#//mappings/ITable">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="joinColumns" upperBound="-1"
+ eType="#//mappings/IJoinColumn" changeable="false" volatile="true" transient="true"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="specifiedJoinColumns"
+ upperBound="-1" eType="#//mappings/IJoinColumn" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="defaultJoinColumns" upperBound="-1"
+ eType="#//mappings/IJoinColumn" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="inverseJoinColumns" upperBound="-1"
+ eType="#//mappings/IJoinColumn" changeable="false" volatile="true" transient="true"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="specifiedInverseJoinColumns"
+ upperBound="-1" eType="#//mappings/IJoinColumn" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="defaultInverseJoinColumns"
+ upperBound="-1" eType="#//mappings/IJoinColumn" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IAbstractJoinColumn" abstract="true"
+ interface="true" eSuperTypes="#//mappings/INamedColumn">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="referencedColumnName"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedReferencedColumnName"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultReferencedColumnName"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IJoinColumn" abstract="true" interface="true"
+ eSuperTypes="#//mappings/IAbstractColumn #//mappings/IAbstractJoinColumn"/>
+ <eClassifiers xsi:type="ecore:EClass" name="IOverride" abstract="true" interface="true"
+ eSuperTypes="#//IJpaSourceObject">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IAttributeOverride" abstract="true"
+ interface="true" eSuperTypes="#//mappings/IOverride #//mappings/IColumnMapping">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="column" lowerBound="1"
+ eType="#//mappings/IColumn" changeable="false" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IAssociationOverride" abstract="true"
+ interface="true" eSuperTypes="#//mappings/IOverride">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="joinColumns" upperBound="-1"
+ eType="#//mappings/IJoinColumn" changeable="false" volatile="true" transient="true"
+ containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="specifiedJoinColumns"
+ upperBound="-1" eType="#//mappings/IJoinColumn" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="defaultJoinColumns" upperBound="-1"
+ eType="#//mappings/IJoinColumn" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IDiscriminatorColumn" abstract="true"
+ interface="true" eSuperTypes="#//IJpaSourceObject">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultName" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedName" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"
+ changeable="false" volatile="true" transient="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="discriminatorType" eType="#//mappings/DiscriminatorType"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="columnDefinition" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultLength" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"
+ defaultValueLiteral="31"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedLength" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"
+ defaultValueLiteral="-1"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="length" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"
+ changeable="false" volatile="true" transient="true" derived="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="InheritanceType">
+ <eLiterals name="Default" literal="Default (Single Table)"/>
+ <eLiterals name="SINGLE_TABLE" value="1" literal="Single Table"/>
+ <eLiterals name="JOINED" value="2" literal="Joined"/>
+ <eLiterals name="TABLE_PER_CLASS" value="3" literal="Table per Class"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="DiscriminatorType">
+ <eLiterals name="Default" literal="Default (String)"/>
+ <eLiterals name="STRING" value="1" literal="String"/>
+ <eLiterals name="CHAR" value="2" literal="Char"/>
+ <eLiterals name="INTEGER" value="3" literal="Integer"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ISecondaryTable" abstract="true" interface="true"
+ eSuperTypes="#//mappings/ITable"/>
+ <eClassifiers xsi:type="ecore:EClass" name="IPrimaryKeyJoinColumn" abstract="true"
+ interface="true" eSuperTypes="#//mappings/IAbstractJoinColumn"/>
+ <eClassifiers xsi:type="ecore:EClass" name="IGenerator" abstract="true" interface="true"
+ eSuperTypes="#//IJpaSourceObject">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="initialValue" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"
+ changeable="false" volatile="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedInitialValue"
+ eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"
+ defaultValueLiteral="-1"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultInitialValue"
+ eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"
+ changeable="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="allocationSize" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"
+ changeable="false" volatile="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedAllocationSize"
+ eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"
+ defaultValueLiteral="-1"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultAllocationSize"
+ eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"
+ changeable="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ITableGenerator" abstract="true" interface="true"
+ eSuperTypes="#//mappings/IGenerator">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="table" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedTable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultTable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="catalog" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedCatalog" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultCatalog" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="schema" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedSchema" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultSchema" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="pkColumnName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedPkColumnName"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultPkColumnName"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="valueColumnName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedValueColumnName"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultValueColumnName"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="pkColumnValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedPkColumnValue"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultPkColumnValue"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ISequenceGenerator" abstract="true"
+ interface="true" eSuperTypes="#//mappings/IGenerator">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="sequenceName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedSequenceName"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultSequenceName"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IGeneratedValue" abstract="true" interface="true"
+ eSuperTypes="#//IJpaSourceObject">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="strategy" eType="#//mappings/GenerationType"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="generator" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="GenerationType">
+ <eLiterals name="Default" literal="Default (Auto)"/>
+ <eLiterals name="Auto" value="1"/>
+ <eLiterals name="Identity" value="2"/>
+ <eLiterals name="Sequence" value="3"/>
+ <eLiterals name="Table" value="4"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="EnumType">
+ <eLiterals name="Default" literal="Default (Ordinal)"/>
+ <eLiterals name="ORDINAL" value="1" literal="Ordinal"/>
+ <eLiterals name="STRING" value="2" literal="String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IOrderBy" abstract="true" interface="true"
+ eSuperTypes="#//IJpaSourceObject">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="#//mappings/OrderingType"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="OrderingType">
+ <eLiterals name="NONE" literal="None"/>
+ <eLiterals name="PRIMARY_KEY" value="1" literal="Primary Key"/>
+ <eLiterals name="CUSTOM" value="2" literal="Custom"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IQuery" abstract="true" interface="true"
+ eSuperTypes="#//IJpaSourceObject">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="query" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="hints" upperBound="-1"
+ eType="#//mappings/IQueryHint" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="INamedQuery" abstract="true" interface="true"
+ eSuperTypes="#//IJpaSourceObject #//mappings/IQuery"/>
+ <eClassifiers xsi:type="ecore:EClass" name="INamedNativeQuery" abstract="true"
+ interface="true" eSuperTypes="#//IJpaSourceObject #//mappings/IQuery">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="resultClass" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="resultSetMapping" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IQueryHint" abstract="true" interface="true"
+ eSuperTypes="#//IJpaSourceObject">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ </eClassifiers>
+ </eSubpackages>
+</ecore:EPackage>
diff --git a/jpa/plugins/org.eclipse.jpt.core/model/coreModels.genmodel b/jpa/plugins/org.eclipse.jpt.core/model/coreModels.genmodel
new file mode 100644
index 0000000000..1869eab0b9
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/model/coreModels.genmodel
@@ -0,0 +1,656 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.jpt.core/src"
+ creationCommands="false" creationIcons="false" editDirectory="" editorDirectory=""
+ modelPluginID="org.eclipse.jpt.core" modelName="Core" editPluginClass="" editorPluginClass=""
+ suppressInterfaces="true" codeFormatting="true" testsDirectory="" testSuiteClass=""
+ importerID="org.eclipse.emf.importer.ecore" complianceLevel="5.0" usedGenPackages="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore javaModel.genmodel#//java">
+ <foreignModel>core.ecore</foreignModel>
+ <foreignModel>java.ecore</foreignModel>
+ <foreignModel>orm.ecore</foreignModel>
+ <foreignModel>persistence.ecore</foreignModel>
+ <genPackages prefix="JpaCore" basePackage="org.eclipse.jpt.core" disposableProviderFactory="true"
+ ecorePackage="core.ecore#/">
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="core.ecore#//AccessType">
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//AccessType/Default"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//AccessType/PROPERTY"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//AccessType/FIELD"/>
+ </genEnums>
+ <genClasses ecoreClass="core.ecore#//IJpaModel"/>
+ <genClasses ecoreClass="core.ecore#//JpaModel">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//JpaModel/projects"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//IJpaEObject">
+ <genOperations ecoreOperation="core.ecore#//IJpaEObject/getJpaProject"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="core.ecore#//JpaEObject"/>
+ <genClasses ecoreClass="core.ecore#//IJpaProject">
+ <genOperations ecoreOperation="core.ecore#//IJpaProject/getModel"/>
+ <genOperations ecoreOperation="core.ecore#//IJpaProject/getPlatform"/>
+ <genOperations ecoreOperation="core.ecore#//IJpaProject/setPlatform">
+ <genParameters ecoreParameter="core.ecore#//IJpaProject/setPlatform/platformId"/>
+ </genOperations>
+ <genOperations ecoreOperation="core.ecore#//IJpaProject/getDataSource"/>
+ <genOperations ecoreOperation="core.ecore#//IJpaProject/setDataSource">
+ <genParameters ecoreParameter="core.ecore#//IJpaProject/setDataSource/connectionProfileName"/>
+ </genOperations>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//JpaProject">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference core.ecore#//JpaProject/platform"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//JpaProject/dataSource"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//JpaProject/files"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//IJpaPlatform"/>
+ <genClasses ecoreClass="core.ecore#//IJpaDataSource">
+ <genOperations ecoreOperation="core.ecore#//IJpaDataSource/getConnectionProfileName"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//JpaDataSource">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//JpaDataSource/connectionProfileName"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//IJpaFile">
+ <genOperations ecoreOperation="core.ecore#//IJpaFile/getContentId"/>
+ <genOperations ecoreOperation="core.ecore#//IJpaFile/getContent"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//JpaFile">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//JpaFile/contentId"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//JpaFile/content"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//IJpaSourceObject">
+ <genOperations ecoreOperation="core.ecore#//IJpaSourceObject/getJpaFile"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="core.ecore#//IXmlEObject"/>
+ <genClasses image="false" ecoreClass="core.ecore#//XmlEObject"/>
+ <genClasses ecoreClass="core.ecore#//IJpaContentNode">
+ <genOperations ecoreOperation="core.ecore#//IJpaContentNode/getJpaFile"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//IJpaRootContentNode">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference core.ecore#//IJpaRootContentNode/jpaFile"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//IPersistentType">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//IPersistentType/mappingKey"/>
+ <genOperations ecoreOperation="core.ecore#//IPersistentType/getMapping"/>
+ <genOperations ecoreOperation="core.ecore#//IPersistentType/parentPersistentType"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//ITypeMapping">
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//ITypeMapping/name"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//ITypeMapping/tableName"/>
+ <genOperations ecoreOperation="core.ecore#//ITypeMapping/getPersistentType"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//NullTypeMapping"/>
+ <genClasses ecoreClass="core.ecore#//IPersistentAttribute">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//IPersistentAttribute/mappingKey"/>
+ <genOperations ecoreOperation="core.ecore#//IPersistentAttribute/getMapping"/>
+ <genOperations ecoreOperation="core.ecore#//IPersistentAttribute/typeMapping"/>
+ <genOperations ecoreOperation="core.ecore#//IPersistentAttribute/getName"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//IAttributeMapping">
+ <genOperations ecoreOperation="core.ecore#//IAttributeMapping/getPersistentAttribute"/>
+ <genOperations ecoreOperation="core.ecore#//IAttributeMapping/isDefault"/>
+ </genClasses>
+ <nestedGenPackages prefix="JpaCoreMappings" basePackage="org.eclipse.jpt.core.internal"
+ disposableProviderFactory="true" ecorePackage="core.ecore#//mappings">
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="core.ecore#//mappings/DefaultEagerFetchType">
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/DefaultEagerFetchType/Default"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/DefaultEagerFetchType/EAGER"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/DefaultEagerFetchType/LAZY"/>
+ </genEnums>
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="core.ecore#//mappings/DefaultLazyFetchType">
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/DefaultLazyFetchType/Default"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/DefaultLazyFetchType/LAZY"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/DefaultLazyFetchType/EAGER"/>
+ </genEnums>
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="core.ecore#//mappings/DefaultFalseBoolean">
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/DefaultFalseBoolean/Default"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/DefaultFalseBoolean/false"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/DefaultFalseBoolean/true"/>
+ </genEnums>
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="core.ecore#//mappings/DefaultTrueBoolean">
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/DefaultTrueBoolean/Default"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/DefaultTrueBoolean/true"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/DefaultTrueBoolean/false"/>
+ </genEnums>
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="core.ecore#//mappings/TemporalType">
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/TemporalType/Null"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/TemporalType/DATE"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/TemporalType/TIME"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/TemporalType/TIMESTAMP"/>
+ </genEnums>
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="core.ecore#//mappings/InheritanceType">
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/InheritanceType/Default"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/InheritanceType/SINGLE_TABLE"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/InheritanceType/JOINED"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/InheritanceType/TABLE_PER_CLASS"/>
+ </genEnums>
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="core.ecore#//mappings/DiscriminatorType">
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/DiscriminatorType/Default"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/DiscriminatorType/STRING"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/DiscriminatorType/CHAR"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/DiscriminatorType/INTEGER"/>
+ </genEnums>
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="core.ecore#//mappings/GenerationType">
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/GenerationType/Default"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/GenerationType/Auto"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/GenerationType/Identity"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/GenerationType/Sequence"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/GenerationType/Table"/>
+ </genEnums>
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="core.ecore#//mappings/EnumType">
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/EnumType/Default"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/EnumType/ORDINAL"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/EnumType/STRING"/>
+ </genEnums>
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="core.ecore#//mappings/OrderingType">
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/OrderingType/NONE"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/OrderingType/PRIMARY_KEY"/>
+ <genEnumLiterals ecoreEnumLiteral="core.ecore#//mappings/OrderingType/CUSTOM"/>
+ </genEnums>
+ <genClasses ecoreClass="core.ecore#//mappings/IMappedSuperclass"/>
+ <genClasses ecoreClass="core.ecore#//mappings/IEntity">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IEntity/specifiedName"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IEntity/defaultName"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/IEntity/table"/>
+ <genFeatures property="None" children="true" createChild="false" ecoreFeature="ecore:EReference core.ecore#//mappings/IEntity/primaryKeyJoinColumns"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/IEntity/specifiedPrimaryKeyJoinColumns"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/IEntity/defaultPrimaryKeyJoinColumns"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IEntity/inheritanceStrategy"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IEntity/defaultDiscriminatorValue"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IEntity/specifiedDiscriminatorValue"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EAttribute core.ecore#//mappings/IEntity/discriminatorValue"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/IEntity/discriminatorColumn"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/IEntity/sequenceGenerator"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/IEntity/tableGenerator"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference core.ecore#//mappings/IEntity/attributeOverrides"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference core.ecore#//mappings/IEntity/specifiedAttributeOverrides"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference core.ecore#//mappings/IEntity/defaultAttributeOverrides"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference core.ecore#//mappings/IEntity/associationOverrides"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference core.ecore#//mappings/IEntity/specifiedAssociationOverrides"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference core.ecore#//mappings/IEntity/defaultAssociationOverrides"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/IEntity/namedQueries"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/IEntity/namedNativeQueries"/>
+ <genOperations ecoreOperation="core.ecore#//mappings/IEntity/discriminatorValueIsAllowed"/>
+ <genOperations ecoreOperation="core.ecore#//mappings/IEntity/getSecondaryTables"/>
+ <genOperations ecoreOperation="core.ecore#//mappings/IEntity/parentEntity"/>
+ <genOperations ecoreOperation="core.ecore#//mappings/IEntity/rootEntity"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//mappings/IEmbeddable"/>
+ <genClasses ecoreClass="core.ecore#//mappings/ITable">
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITable/name"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITable/specifiedName"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITable/defaultName"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITable/catalog"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITable/specifiedCatalog"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITable/defaultCatalog"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITable/schema"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITable/specifiedSchema"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITable/defaultSchema"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/INamedColumn">
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/INamedColumn/name"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/INamedColumn/specifiedName"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/INamedColumn/defaultName"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/INamedColumn/columnDefinition"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/IAbstractColumn">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IAbstractColumn/unique"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IAbstractColumn/nullable"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IAbstractColumn/insertable"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IAbstractColumn/updatable"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IAbstractColumn/table"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IAbstractColumn/specifiedTable"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IAbstractColumn/defaultTable"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//mappings/IColumn">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IColumn/length"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IColumn/precision"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IColumn/scale"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//mappings/IColumnMapping">
+ <genOperations ecoreOperation="core.ecore#//mappings/IColumnMapping/getColumn"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//mappings/IBasic">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IBasic/fetch"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IBasic/optional"/>
+ <genFeatures property="None" children="true" createChild="false" ecoreFeature="ecore:EReference core.ecore#//mappings/IBasic/column"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IBasic/lob"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IBasic/temporal"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IBasic/enumerated"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//mappings/IId">
+ <genFeatures property="None" children="true" createChild="false" ecoreFeature="ecore:EReference core.ecore#//mappings/IId/column"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference core.ecore#//mappings/IId/generatedValue"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IId/temporal"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference core.ecore#//mappings/IId/tableGenerator"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference core.ecore#//mappings/IId/sequenceGenerator"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/ITransient"/>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/IVersion">
+ <genFeatures property="None" children="true" createChild="false" ecoreFeature="ecore:EReference core.ecore#//mappings/IVersion/column"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IVersion/temporal"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/IEmbeddedId"/>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/IEmbedded">
+ <genFeatures property="None" children="true" createChild="false" ecoreFeature="ecore:EReference core.ecore#//mappings/IEmbedded/attributeOverrides"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/IEmbedded/specifiedAttributeOverrides"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/IEmbedded/defaultAttributeOverrides"/>
+ <genOperations ecoreOperation="core.ecore#//mappings/IEmbedded/embeddable"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//mappings/IRelationshipMapping">
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IRelationshipMapping/targetEntity"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IRelationshipMapping/specifiedTargetEntity"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IRelationshipMapping/defaultTargetEntity"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference core.ecore#//mappings/IRelationshipMapping/resolvedTargetEntity"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//mappings/INonOwningMapping">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/INonOwningMapping/mappedBy"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//mappings/IMultiRelationshipMapping">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IMultiRelationshipMapping/fetch"/>
+ <genFeatures property="None" children="true" createChild="false" ecoreFeature="ecore:EReference core.ecore#//mappings/IMultiRelationshipMapping/joinTable"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true"
+ ecoreFeature="ecore:EReference core.ecore#//mappings/IMultiRelationshipMapping/orderBy"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//mappings/IOneToMany"/>
+ <genClasses ecoreClass="core.ecore#//mappings/IManyToMany"/>
+ <genClasses ecoreClass="core.ecore#//mappings/ISingleRelationshipMapping">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ISingleRelationshipMapping/fetch"/>
+ <genFeatures property="None" children="true" createChild="false" ecoreFeature="ecore:EReference core.ecore#//mappings/ISingleRelationshipMapping/joinColumns"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/ISingleRelationshipMapping/specifiedJoinColumns"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/ISingleRelationshipMapping/defaultJoinColumns"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//mappings/IManyToOne"/>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/IOneToOne"/>
+ <genClasses ecoreClass="core.ecore#//mappings/IJoinTable">
+ <genFeatures property="None" children="true" createChild="false" ecoreFeature="ecore:EReference core.ecore#//mappings/IJoinTable/joinColumns"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/IJoinTable/specifiedJoinColumns"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/IJoinTable/defaultJoinColumns"/>
+ <genFeatures property="None" children="true" createChild="false" ecoreFeature="ecore:EReference core.ecore#//mappings/IJoinTable/inverseJoinColumns"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/IJoinTable/specifiedInverseJoinColumns"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/IJoinTable/defaultInverseJoinColumns"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//mappings/IAbstractJoinColumn">
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IAbstractJoinColumn/referencedColumnName"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IAbstractJoinColumn/specifiedReferencedColumnName"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IAbstractJoinColumn/defaultReferencedColumnName"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//mappings/IJoinColumn"/>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/IOverride">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IOverride/name"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//mappings/IAttributeOverride">
+ <genFeatures property="None" children="true" createChild="false" ecoreFeature="ecore:EReference core.ecore#//mappings/IAttributeOverride/column"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//mappings/IAssociationOverride">
+ <genFeatures property="None" children="true" createChild="false" ecoreFeature="ecore:EReference core.ecore#//mappings/IAssociationOverride/joinColumns"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/IAssociationOverride/specifiedJoinColumns"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/IAssociationOverride/defaultJoinColumns"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//mappings/IDiscriminatorColumn">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IDiscriminatorColumn/defaultName"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IDiscriminatorColumn/specifiedName"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IDiscriminatorColumn/name"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IDiscriminatorColumn/discriminatorType"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IDiscriminatorColumn/columnDefinition"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IDiscriminatorColumn/defaultLength"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IDiscriminatorColumn/specifiedLength"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IDiscriminatorColumn/length"/>
+ </genClasses>
+ <genClasses ecoreClass="core.ecore#//mappings/ISecondaryTable"/>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/IPrimaryKeyJoinColumn"/>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/IGenerator">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IGenerator/name"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IGenerator/initialValue"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IGenerator/specifiedInitialValue"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IGenerator/defaultInitialValue"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IGenerator/allocationSize"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IGenerator/specifiedAllocationSize"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IGenerator/defaultAllocationSize"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/ITableGenerator">
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/table"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/specifiedTable"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/defaultTable"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/catalog"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/specifiedCatalog"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/defaultCatalog"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/schema"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/specifiedSchema"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/defaultSchema"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/pkColumnName"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/specifiedPkColumnName"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/defaultPkColumnName"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/valueColumnName"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/specifiedValueColumnName"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/defaultValueColumnName"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/pkColumnValue"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/specifiedPkColumnValue"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ITableGenerator/defaultPkColumnValue"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/ISequenceGenerator">
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ISequenceGenerator/sequenceName"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ISequenceGenerator/specifiedSequenceName"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/ISequenceGenerator/defaultSequenceName"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/IGeneratedValue">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IGeneratedValue/strategy"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IGeneratedValue/generator"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/IOrderBy">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IOrderBy/value"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IOrderBy/type"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/IQuery">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IQuery/name"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IQuery/query"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference core.ecore#//mappings/IQuery/hints"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/INamedQuery"/>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/INamedNativeQuery">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/INamedNativeQuery/resultClass"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/INamedNativeQuery/resultSetMapping"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="core.ecore#//mappings/IQueryHint">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IQueryHint/name"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute core.ecore#//mappings/IQueryHint/value"/>
+ </genClasses>
+ </nestedGenPackages>
+ </genPackages>
+ <genPackages prefix="JpaJava" basePackage="org.eclipse.jpt.core.internal.content"
+ disposableProviderFactory="true" ecorePackage="java.ecore#/">
+ <genClasses image="false" ecoreClass="java.ecore#//JavaEObject">
+ <genOperations ecoreOperation="java.ecore#//JavaEObject/getJpaFile"/>
+ <genOperations ecoreOperation="java.ecore#//JavaEObject/getRoot"/>
+ </genClasses>
+ <genClasses ecoreClass="java.ecore#//JpaCompilationUnit">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference java.ecore#//JpaCompilationUnit/types"/>
+ </genClasses>
+ <genClasses ecoreClass="java.ecore#//JavaPersistentType">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference java.ecore#//JavaPersistentType/mapping"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference java.ecore#//JavaPersistentType/attributes"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute java.ecore#//JavaPersistentType/access"/>
+ </genClasses>
+ <genClasses ecoreClass="java.ecore#//JavaPersistentAttribute">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference java.ecore#//JavaPersistentAttribute/defaultMapping"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference java.ecore#//JavaPersistentAttribute/specifiedMapping"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="java.ecore#//IJavaTypeMapping">
+ <genOperations ecoreOperation="java.ecore#//IJavaTypeMapping/initialize"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="java.ecore#//IJavaAttributeMapping">
+ <genOperations ecoreOperation="java.ecore#//IJavaAttributeMapping/initialize"/>
+ </genClasses>
+ <nestedGenPackages prefix="JpaJavaMappings" basePackage="org.eclipse.jpt.core.internal.content.java"
+ disposableProviderFactory="true" ecorePackage="java.ecore#//mappings">
+ <genClasses image="false" ecoreClass="java.ecore#//mappings/JavaTypeMapping"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaEntity">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference java.ecore#//mappings/JavaEntity/secondaryTables"/>
+ </genClasses>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaMappedSuperclass"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaEmbeddable"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaNullTypeMapping"/>
+ <genClasses image="false" ecoreClass="java.ecore#//mappings/JavaAttributeMapping"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaBasic"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaId"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaTransient"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaVersion"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaEmbeddedId"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaEmbedded"/>
+ <genClasses image="false" ecoreClass="java.ecore#//mappings/JavaRelationshipMapping"/>
+ <genClasses image="false" ecoreClass="java.ecore#//mappings/JavaSingleRelationshipMapping"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaManyToOne"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaOneToOne"/>
+ <genClasses image="false" ecoreClass="java.ecore#//mappings/JavaMultiRelationshipMapping"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaOneToMany"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaManyToMany"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaNullAttributeMapping"/>
+ <genClasses image="false" ecoreClass="java.ecore#//mappings/AbstractJavaTable"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaTable"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaSecondaryTable"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaJoinTable"/>
+ <genClasses image="false" ecoreClass="java.ecore#//mappings/JavaNamedColumn"/>
+ <genClasses image="false" ecoreClass="java.ecore#//mappings/AbstractJavaColumn"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaColumn"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaJoinColumn"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaOverride"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaAttributeOverride"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaAssociationOverride"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaDiscriminatorColumn"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaPrimaryKeyJoinColumn"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaGeneratedValue"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaGenerator"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaTableGenerator"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaSequenceGenerator"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaOrderBy"/>
+ <genClasses image="false" ecoreClass="java.ecore#//mappings/JavaAbstractQuery"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaNamedQuery"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaNamedNativeQuery"/>
+ <genClasses ecoreClass="java.ecore#//mappings/JavaQueryHint"/>
+ </nestedGenPackages>
+ </genPackages>
+ <genPackages prefix="Orm" basePackage="org.eclipse.jpt.core.internal.content" disposableProviderFactory="true"
+ ecorePackage="orm.ecore#/">
+ <genClasses ecoreClass="orm.ecore#//XmlRootContentNode">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference orm.ecore#//XmlRootContentNode/entityMappings"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//EntityMappingsInternal">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference orm.ecore#//EntityMappingsInternal/root"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//EntityMappingsInternal/version"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//EntityMappingsInternal/description"/>
+ <genFeatures property="None" children="true" createChild="false" ecoreFeature="ecore:EReference orm.ecore#//EntityMappingsInternal/persistenceUnitMetadataInternal"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//EntityMappingsInternal/packageInternal"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//EntityMappingsInternal/defaultSchema"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//EntityMappingsInternal/specifiedSchema"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//EntityMappingsInternal/schema"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//EntityMappingsInternal/defaultCatalog"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//EntityMappingsInternal/specifiedCatalog"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//EntityMappingsInternal/catalog"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//EntityMappingsInternal/defaultAccess"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//EntityMappingsInternal/specifiedAccess"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//EntityMappingsInternal/access"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference orm.ecore#//EntityMappingsInternal/typeMappings"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference orm.ecore#//EntityMappingsInternal/persistentTypes"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference orm.ecore#//EntityMappingsInternal/sequenceGenerators"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference orm.ecore#//EntityMappingsInternal/tableGenerators"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference orm.ecore#//EntityMappingsInternal/namedQueries"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference orm.ecore#//EntityMappingsInternal/namedNativeQueries"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//EntityMappings">
+ <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference orm.ecore#//EntityMappings/persistenceUnitMetadata"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//EntityMappings/package"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//EntityMappingsForXml">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference orm.ecore#//EntityMappingsForXml/persistenceUnitMetadataForXml"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//EntityMappingsForXml/packageForXml"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="orm.ecore#//XmlTypeMapping">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//XmlTypeMapping/defaultAccess"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//XmlTypeMapping/specifiedAccess"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//XmlTypeMapping/access"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//XmlTypeMapping/metadataComplete"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference orm.ecore#//XmlTypeMapping/persistentType"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//XmlPersistentType">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//XmlPersistentType/class"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference orm.ecore#//XmlPersistentType/attributeMappings"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference orm.ecore#//XmlPersistentType/specifiedAttributeMappings"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference orm.ecore#//XmlPersistentType/virtualAttributeMappings"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference orm.ecore#//XmlPersistentType/persistentAttributes"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference orm.ecore#//XmlPersistentType/specifiedPersistentAttributes"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference orm.ecore#//XmlPersistentType/virtualPersistentAttributes"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//XmlMappedSuperclass"/>
+ <genClasses ecoreClass="orm.ecore#//XmlEntityInternal"/>
+ <genClasses ecoreClass="orm.ecore#//XmlEntityForXml">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference orm.ecore#//XmlEntityForXml/tableForXml"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference orm.ecore#//XmlEntityForXml/discriminatorColumnForXml"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//XmlEntity">
+ <genFeatures property="None" children="true" createChild="false" ecoreFeature="ecore:EReference orm.ecore#//XmlEntity/secondaryTables"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference orm.ecore#//XmlEntity/specifiedSecondaryTables"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference orm.ecore#//XmlEntity/defaultSecondaryTables"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//XmlEmbeddable"/>
+ <genClasses image="false" ecoreClass="orm.ecore#//XmlAttributeMapping">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference orm.ecore#//XmlAttributeMapping/persistentAttribute"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//XmlNullAttributeMapping"/>
+ <genClasses ecoreClass="orm.ecore#//XmlBasic"/>
+ <genClasses ecoreClass="orm.ecore#//XmlId"/>
+ <genClasses ecoreClass="orm.ecore#//XmlTransient"/>
+ <genClasses ecoreClass="orm.ecore#//XmlEmbedded"/>
+ <genClasses ecoreClass="orm.ecore#//XmlEmbeddedId"/>
+ <genClasses ecoreClass="orm.ecore#//XmlVersion"/>
+ <genClasses image="false" ecoreClass="orm.ecore#//XmlMultiRelationshipMappingInternal"/>
+ <genClasses image="false" ecoreClass="orm.ecore#//XmlMultiRelationshipMappingForXml">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference orm.ecore#//XmlMultiRelationshipMappingForXml/joinTableForXml"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference orm.ecore#//XmlMultiRelationshipMappingForXml/orderByForXml"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="orm.ecore#//XmlMultiRelationshipMapping"/>
+ <genClasses ecoreClass="orm.ecore#//XmlOneToMany"/>
+ <genClasses ecoreClass="orm.ecore#//XmlManyToMany"/>
+ <genClasses ecoreClass="orm.ecore#//XmlPersistentAttribute">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//XmlPersistentAttribute/name"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//PersistenceUnitMetadataInternal">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//PersistenceUnitMetadataInternal/xmlMappingMetadataCompleteInternal"/>
+ <genFeatures property="None" children="true" createChild="false" ecoreFeature="ecore:EReference orm.ecore#//PersistenceUnitMetadataInternal/persistenceUnitDefaultsInternal"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//PersistenceUnitMetadata">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//PersistenceUnitMetadata/xmlMappingMetadataComplete"/>
+ <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference orm.ecore#//PersistenceUnitMetadata/persistenceUnitDefaults"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//PersistenceUnitMetadataForXml">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//PersistenceUnitMetadataForXml/xmlMappingMetadataCompleteForXml"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference orm.ecore#//PersistenceUnitMetadataForXml/persistenceUnitDefaultsForXml"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//PersistenceUnitDefaultsInternal">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//PersistenceUnitDefaultsInternal/schemaInternal"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//PersistenceUnitDefaultsInternal/catalogInternal"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//PersistenceUnitDefaultsInternal/accessInternal"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//PersistenceUnitDefaultsInternal/cascadePersistInternal"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//PersistenceUnitDefaults">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//PersistenceUnitDefaults/schema"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//PersistenceUnitDefaults/catalog"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//PersistenceUnitDefaults/access"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//PersistenceUnitDefaults/cascadePersist"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//PersistenceUnitDefaultsForXml">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//PersistenceUnitDefaultsForXml/schemaForXml"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//PersistenceUnitDefaultsForXml/catalogForXml"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//PersistenceUnitDefaultsForXml/accessForXml"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//PersistenceUnitDefaultsForXml/cascadePersistForXml"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//XmlTable"/>
+ <genClasses image="false" ecoreClass="orm.ecore#//AbstractXmlNamedColumn">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//AbstractXmlNamedColumn/specifiedNameForXml"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//AbstractXmlNamedColumn/columnDefinitionForXml"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//AbstractXmlColumn">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//AbstractXmlColumn/uniqueForXml"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//AbstractXmlColumn/nullableForXml"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//AbstractXmlColumn/insertableForXml"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//AbstractXmlColumn/updatableForXml"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//AbstractXmlColumn/specifiedTableForXml"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//XmlColumn">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//XmlColumn/lengthForXml"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//XmlColumn/precisionForXml"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//XmlColumn/scaleForXml"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//XmlJoinColumn">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//XmlJoinColumn/specifiedReferencedColumnNameForXml"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//IXmlColumnMapping">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference orm.ecore#//IXmlColumnMapping/columnForXml"/>
+ <genOperations ecoreOperation="orm.ecore#//IXmlColumnMapping/makeColumnForXmlNonNull"/>
+ <genOperations ecoreOperation="orm.ecore#//IXmlColumnMapping/makeColumnForXmlNull"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//XmlManyToOne"/>
+ <genClasses ecoreClass="orm.ecore#//XmlOneToOne"/>
+ <genClasses image="false" ecoreClass="orm.ecore#//XmlSingleRelationshipMapping"/>
+ <genClasses image="false" ecoreClass="orm.ecore#//XmlRelationshipMapping"/>
+ <genClasses ecoreClass="orm.ecore#//XmlJoinTable"/>
+ <genClasses ecoreClass="orm.ecore#//AbstractXmlTable">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//AbstractXmlTable/specifiedNameForXml"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//AbstractXmlTable/specifiedCatalogForXml"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//AbstractXmlTable/specifiedSchemaForXml"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="orm.ecore#//XmlOverride"/>
+ <genClasses ecoreClass="orm.ecore#//XmlAttributeOverride"/>
+ <genClasses ecoreClass="orm.ecore#//XmlAssociationOverride"/>
+ <genClasses ecoreClass="orm.ecore#//XmlDiscriminatorColumn">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//XmlDiscriminatorColumn/specifiedNameForXml"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//XmlDiscriminatorColumn/discriminatorTypeForXml"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//XmlDiscriminatorColumn/columnDefinitionForXml"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//XmlDiscriminatorColumn/specifiedLengthForXml"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//XmlSecondaryTable"/>
+ <genClasses ecoreClass="orm.ecore#//XmlPrimaryKeyJoinColumn">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orm.ecore#//XmlPrimaryKeyJoinColumn/specifiedReferencedColumnNameForXml"/>
+ </genClasses>
+ <genClasses ecoreClass="orm.ecore#//XmlGeneratedValue"/>
+ <genClasses image="false" ecoreClass="orm.ecore#//XmlGenerator"/>
+ <genClasses ecoreClass="orm.ecore#//XmlSequenceGenerator"/>
+ <genClasses ecoreClass="orm.ecore#//XmlTableGenerator"/>
+ <genClasses ecoreClass="orm.ecore#//XmlOrderBy"/>
+ <genClasses image="false" ecoreClass="orm.ecore#//AbstractXmlQuery"/>
+ <genClasses ecoreClass="orm.ecore#//XmlNamedQuery"/>
+ <genClasses ecoreClass="orm.ecore#//XmlNamedNativeQuery"/>
+ <genClasses ecoreClass="orm.ecore#//XmlQueryHint"/>
+ </genPackages>
+ <genPackages prefix="Persistence" basePackage="org.eclipse.jpt.core.internal.content"
+ disposableProviderFactory="true" ecorePackage="persistence.ecore#/">
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="persistence.ecore#//PersistenceUnitTransactionType">
+ <genEnumLiterals ecoreEnumLiteral="persistence.ecore#//PersistenceUnitTransactionType/JTA"/>
+ <genEnumLiterals ecoreEnumLiteral="persistence.ecore#//PersistenceUnitTransactionType/RESOURCE_LOCAL"/>
+ </genEnums>
+ <genDataTypes ecoreDataType="persistence.ecore#//PersistenceUnitTransactionTypeObject"/>
+ <genDataTypes ecoreDataType="persistence.ecore#//Version"/>
+ <genClasses ecoreClass="persistence.ecore#//PersistenceXmlRootContentNode">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference persistence.ecore#//PersistenceXmlRootContentNode/persistence"/>
+ </genClasses>
+ <genClasses ecoreClass="persistence.ecore#//Persistence">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference persistence.ecore#//Persistence/persistenceUnits"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute persistence.ecore#//Persistence/version"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference persistence.ecore#//Persistence/root"/>
+ </genClasses>
+ <genClasses ecoreClass="persistence.ecore#//PersistenceUnit">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute persistence.ecore#//PersistenceUnit/description"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute persistence.ecore#//PersistenceUnit/provider"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute persistence.ecore#//PersistenceUnit/jtaDataSource"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute persistence.ecore#//PersistenceUnit/nonJtaDataSource"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EReference persistence.ecore#//PersistenceUnit/mappingFiles"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute persistence.ecore#//PersistenceUnit/jarFiles"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EReference persistence.ecore#//PersistenceUnit/classes"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute persistence.ecore#//PersistenceUnit/excludeUnlistedClasses"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference persistence.ecore#//PersistenceUnit/properties"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute persistence.ecore#//PersistenceUnit/name"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute persistence.ecore#//PersistenceUnit/transactionType"/>
+ </genClasses>
+ <genClasses ecoreClass="persistence.ecore#//MappingFileRef">
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute persistence.ecore#//MappingFileRef/fileName"/>
+ </genClasses>
+ <genClasses ecoreClass="persistence.ecore#//JavaClassRef">
+ <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference persistence.ecore#//JavaClassRef/javaClass"/>
+ </genClasses>
+ <genClasses ecoreClass="persistence.ecore#//Properties">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference persistence.ecore#//Properties/properties"/>
+ </genClasses>
+ <genClasses ecoreClass="persistence.ecore#//Property">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute persistence.ecore#//Property/name"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute persistence.ecore#//Property/value"/>
+ </genClasses>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/jpa/plugins/org.eclipse.jpt.core/model/java.ecore b/jpa/plugins/org.eclipse.jpt.core/model/java.ecore
new file mode 100644
index 0000000000..605cc31a9a
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/model/java.ecore
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="java"
+ nsURI="jpt.java.xmi" nsPrefix="org.eclipse.jpt.core.content.java">
+ <eClassifiers xsi:type="ecore:EClass" name="JavaEObject" abstract="true" eSuperTypes="core.ecore#//JpaEObject core.ecore#//IJpaSourceObject">
+ <eOperations name="getJpaFile" eType="ecore:EClass core.ecore#//IJpaFile"/>
+ <eOperations name="getRoot" eType="ecore:EClass core.ecore#//IJpaRootContentNode"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="JpaCompilationUnit" eSuperTypes="#//JavaEObject core.ecore#//IJpaRootContentNode">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="types" upperBound="-1"
+ eType="#//JavaPersistentType" containment="true" resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaPersistentType" eSuperTypes="#//JavaEObject core.ecore#//IPersistentType">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="mapping" lowerBound="1"
+ eType="#//IJavaTypeMapping" defaultValueLiteral="" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="attributes" upperBound="-1"
+ eType="#//JavaPersistentAttribute" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="access" eType="ecore:EEnum core.ecore#//AccessType"
+ changeable="false" defaultValueLiteral=""/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaPersistentAttribute" eSuperTypes="#//JavaEObject core.ecore#//IPersistentAttribute">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="defaultMapping" lowerBound="1"
+ eType="#//IJavaAttributeMapping" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="specifiedMapping" lowerBound="1"
+ eType="#//IJavaAttributeMapping" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IJavaTypeMapping" abstract="true" interface="true"
+ eSuperTypes="core.ecore#//ITypeMapping">
+ <eOperations name="initialize"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IJavaAttributeMapping" abstract="true"
+ interface="true" eSuperTypes="core.ecore#//IAttributeMapping">
+ <eOperations name="initialize"/>
+ </eClassifiers>
+ <eSubpackages name="mappings" nsURI="jpt.core.java.mappings.xmi" nsPrefix="jpt.core.java.mappings">
+ <eClassifiers xsi:type="ecore:EClass" name="JavaTypeMapping" abstract="true" eSuperTypes="#//JavaEObject #//IJavaTypeMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaEntity" eSuperTypes="#//mappings/JavaTypeMapping core.ecore#//mappings/IEntity">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="secondaryTables" upperBound="-1"
+ eType="ecore:EClass core.ecore#//mappings/ISecondaryTable" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaMappedSuperclass" eSuperTypes="#//mappings/JavaTypeMapping core.ecore#//mappings/IMappedSuperclass"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaEmbeddable" eSuperTypes="#//mappings/JavaTypeMapping core.ecore#//mappings/IEmbeddable"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaNullTypeMapping" eSuperTypes="#//mappings/JavaTypeMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaAttributeMapping" abstract="true"
+ eSuperTypes="#//JavaEObject #//IJavaAttributeMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaBasic" eSuperTypes="#//mappings/JavaAttributeMapping core.ecore#//mappings/IBasic"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaId" eSuperTypes="#//mappings/JavaAttributeMapping core.ecore#//mappings/IId"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaTransient" eSuperTypes="#//mappings/JavaAttributeMapping core.ecore#//mappings/ITransient"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaVersion" eSuperTypes="#//mappings/JavaAttributeMapping core.ecore#//mappings/IVersion"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaEmbeddedId" eSuperTypes="#//mappings/JavaAttributeMapping core.ecore#//mappings/IEmbeddedId"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaEmbedded" eSuperTypes="#//mappings/JavaAttributeMapping core.ecore#//mappings/IEmbedded"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaRelationshipMapping" abstract="true"
+ eSuperTypes="#//mappings/JavaAttributeMapping core.ecore#//mappings/IRelationshipMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaSingleRelationshipMapping" abstract="true"
+ eSuperTypes="#//mappings/JavaRelationshipMapping core.ecore#//mappings/ISingleRelationshipMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaManyToOne" eSuperTypes="#//mappings/JavaSingleRelationshipMapping core.ecore#//mappings/IManyToOne"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaOneToOne" eSuperTypes="#//mappings/JavaSingleRelationshipMapping core.ecore#//mappings/IOneToOne"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaMultiRelationshipMapping" abstract="true"
+ eSuperTypes="#//mappings/JavaRelationshipMapping core.ecore#//mappings/IMultiRelationshipMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaOneToMany" eSuperTypes="#//mappings/JavaMultiRelationshipMapping core.ecore#//mappings/IOneToMany"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaManyToMany" eSuperTypes="#//mappings/JavaMultiRelationshipMapping core.ecore#//mappings/IManyToMany"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaNullAttributeMapping" eSuperTypes="#//mappings/JavaAttributeMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="AbstractJavaTable" abstract="true"
+ eSuperTypes="#//JavaEObject core.ecore#//mappings/ITable"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaTable" eSuperTypes="#//mappings/AbstractJavaTable"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaSecondaryTable" eSuperTypes="#//mappings/AbstractJavaTable core.ecore#//mappings/ISecondaryTable"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaJoinTable" eSuperTypes="#//mappings/AbstractJavaTable core.ecore#//mappings/IJoinTable"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaNamedColumn" abstract="true" eSuperTypes="#//JavaEObject core.ecore#//mappings/INamedColumn"/>
+ <eClassifiers xsi:type="ecore:EClass" name="AbstractJavaColumn" abstract="true"
+ eSuperTypes="#//mappings/JavaNamedColumn core.ecore#//mappings/IAbstractColumn"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaColumn" eSuperTypes="#//mappings/AbstractJavaColumn core.ecore#//mappings/IColumn"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaJoinColumn" eSuperTypes="#//mappings/AbstractJavaColumn core.ecore#//mappings/IJoinColumn"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaOverride" abstract="true" eSuperTypes="#//JavaEObject core.ecore#//mappings/IOverride"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaAttributeOverride" eSuperTypes="#//mappings/JavaOverride core.ecore#//mappings/IAttributeOverride"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaAssociationOverride" eSuperTypes="#//mappings/JavaOverride core.ecore#//mappings/IAssociationOverride"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaDiscriminatorColumn" eSuperTypes="#//JavaEObject core.ecore#//mappings/IDiscriminatorColumn"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaPrimaryKeyJoinColumn" eSuperTypes="#//JavaEObject core.ecore#//mappings/IPrimaryKeyJoinColumn"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaGeneratedValue" eSuperTypes="#//JavaEObject core.ecore#//mappings/IGeneratedValue"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaGenerator" abstract="true" eSuperTypes="#//JavaEObject core.ecore#//mappings/IGenerator"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaTableGenerator" eSuperTypes="#//mappings/JavaGenerator core.ecore#//mappings/ITableGenerator"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaSequenceGenerator" eSuperTypes="#//mappings/JavaGenerator core.ecore#//mappings/ISequenceGenerator"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaOrderBy" eSuperTypes="#//JavaEObject core.ecore#//mappings/IOrderBy"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaAbstractQuery" abstract="true"
+ eSuperTypes="#//JavaEObject core.ecore#//mappings/IQuery"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaNamedQuery" eSuperTypes="#//mappings/JavaAbstractQuery core.ecore#//mappings/INamedQuery"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaNamedNativeQuery" eSuperTypes="#//mappings/JavaAbstractQuery core.ecore#//mappings/INamedNativeQuery"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaQueryHint" eSuperTypes="#//JavaEObject core.ecore#//mappings/IQueryHint"/>
+ </eSubpackages>
+</ecore:EPackage>
diff --git a/jpa/plugins/org.eclipse.jpt.core/model/javaModel.ecore b/jpa/plugins/org.eclipse.jpt.core/model/javaModel.ecore
new file mode 100644
index 0000000000..87cfd4f59e
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/model/javaModel.ecore
@@ -0,0 +1,353 @@
+<?xml version="1.0" encoding="ASCII"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="java"
+ nsURI="java.xmi" nsPrefix="org.eclipse.jem.java">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Changes to synch up with Java3e:&#xD;&#xA;- deleted JavaElement, BodyElement which didn't add anything useful&#xD;&#xA;- deleted NestedClass and the association which described nesting, contents can be used instead&#xD;&#xA;- deleted extends/extendedBy which is replaced with MOF subtype/supertype&#xD;&#xA;- deleted the clumsy main diagram&#xD;&#xA;- moved the MOF inheritance details to the MOF binding diagram&#xD;&#xA;- deleted &quot;final&quot; on JavaParameter, don't know what that was supposed to be&#xD;&#xA;- deleted the Category junk&#xD;&#xA;- changed the Block-typed attributes on Field, Method, Initializer to be associations to Block&#xD;&#xA;&#xD;&#xA;Outstanding questions/issues:&#xD;&#xA;- JavaParameterKind should go away if we get the base Parameter kind fixed up&#xD;&#xA;"/>
+ </eAnnotations>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaClass" eSuperTypes="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EClass">
+ <eOperations name="isNested" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eOperations name="getField" eType="#//Field">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Return an Field with the passed name, or null."/>
+ </eAnnotations>
+ <eParameters name="fieldName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="getFieldExtended" eType="#//Field">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value=" Return an Field with the passed name from this JavaClass or any supertypes.&#xD;&#xA;&#xD;&#xA;Return null if a Field named fieldName is not found."/>
+ </eAnnotations>
+ <eParameters name="fieldName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="getFieldNamed" eType="#//Field">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Return an Field with the passed name, or null."/>
+ </eAnnotations>
+ <eParameters name="fieldName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="getFieldsExtended" eType="#//JTypeList">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Return all fields, including those from supertypes."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getMethod" eType="#//Method">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Get the method of this name and these parameters. It will not look up the supertype hierarchy."/>
+ </eAnnotations>
+ <eParameters name="methodName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eParameters name="parameterTypes" eType="#//JTypeList">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="List of parameter types."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getMethodElementSignatures" eType="#//JTypeList">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Return a List of Strings that represent MethodElement signatures from most general to most specific."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getMethodExtended" eType="#//Method">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Get the method of this name and these parameters. It will look up the supertype hierarchy."/>
+ </eAnnotations>
+ <eParameters name="methodName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eParameters name="parameterTypes" eType="#//JTypeList">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="List of parameter types."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getMethodsExtended" eType="#//JTypeList">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Return all methods, including those from supertypes."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getOnlySpecificMethods" eType="#//JTypeList">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Return a List of Methods that begins with @aMethodNamePrefix and is not included in the @excludedNames list. If @aMethodNamePrefix is null, all methods will be returned.&#xD;&#xA;"/>
+ </eAnnotations>
+ <eParameters name="aMethodNamePrefix" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eParameters name="excludedNames" eType="#//JTypeList"/>
+ </eOperations>
+ <eOperations name="getPublicMethod" eType="#//Method">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Return a method matching the name, and non-return parameters with fully qualified types matching all the types in the list, if it exists. It will not look up the supertype hierarchy."/>
+ </eAnnotations>
+ <eParameters name="methodName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eParameters name="parameterTypes" eType="#//JTypeList">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="List of parameter types."/>
+ </eAnnotations>
+ </eParameters>
+ </eOperations>
+ <eOperations name="getPublicMethods" eType="#//JTypeList">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Return all methods, it will not go up the supertype hierarchy."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getPublicMethodsExtended" eType="#//JTypeList">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Return all public methods, including those from supertypes."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getPublicMethodsNamed" eType="#//JTypeList">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Returns a filtered list on the methods of this class, having a name equal to that of the parameter."/>
+ </eAnnotations>
+ <eParameters name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="getSupertype" eType="#//JavaClass"/>
+ <eOperations name="implementsInterface" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Test whether the receiver implements the passed interface (or one of its supertypes)."/>
+ </eAnnotations>
+ <eParameters name="interfaceType" eType="#//JavaClass"/>
+ </eOperations>
+ <eOperations name="infoString" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Return a string showing our details."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="inheritsFrom" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Tests whether this class inherits from the passed in class."/>
+ </eAnnotations>
+ <eParameters name="javaClass" eType="#//JavaClass"/>
+ </eOperations>
+ <eOperations name="isExistingType" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Does this type exist."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isInterface" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Is this an interface."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="setSupertype">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Set the supertype."/>
+ </eAnnotations>
+ <eParameters name="javaclass" eType="#//JavaClass"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//TypeKind"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="public" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="final" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="implementsInterfaces" upperBound="-1"
+ eType="#//JavaClass"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="classImport" upperBound="-1"
+ eType="#//JavaClass"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="packageImports" upperBound="-1"
+ eType="#//JavaPackage"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="fields" upperBound="-1"
+ eType="#//Field" containment="true" eOpposite="#//Field/javaClass"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="methods" upperBound="-1"
+ eType="#//Method" containment="true" eOpposite="#//Method/javaClass"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="initializers" upperBound="-1"
+ eType="#//Initializer" containment="true" eOpposite="#//Initializer/javaClass"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="declaredClasses" upperBound="-1"
+ eType="#//JavaClass" eOpposite="#//JavaClass/declaringClass"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="declaringClass" eType="#//JavaClass"
+ eOpposite="#//JavaClass/declaredClasses"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="javaPackage" eType="#//JavaPackage"
+ changeable="false" volatile="true" transient="true" eOpposite="#//JavaPackage/javaClasses"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="events" upperBound="-1"
+ eType="#//JavaEvent" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="allEvents" upperBound="-1"
+ eType="#//JavaEvent" volatile="true" transient="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Initializer">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isStatic" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="javaClass" eType="#//JavaClass"
+ transient="true" eOpposite="#//JavaClass/initializers"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="source" eType="#//Block"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaParameter" eSuperTypes="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EParameter">
+ <eOperations name="isArray" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Is this parameter type an array type."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isReturn" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Is this a return parameter."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getJavaType" eType="#//JTypeJavaHelpers"/>
+ <eOperations name="getQualifiedName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="final" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="parameterKind" eType="#//JavaParameterKind"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Method" eSuperTypes="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EOperation">
+ <eOperations name="getContainingJavaClass" eType="#//JavaClass">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Return the java class that this method is defined in."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getMethodElementSignature" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Return a String with the the method name and its parameters. e.g. &lt;code> setFirstName(java.lang.String) &lt;/code> .&#xD;&#xA; "/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getParameter" eType="#//JavaParameter">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Return a Parameter with the passed name, or null."/>
+ </eAnnotations>
+ <eParameters name="parameterName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eOperations>
+ <eOperations name="getReturnType" eType="#//JTypeJavaHelpers">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Get the return type."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="setReturnType">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Set the return type"/>
+ </eAnnotations>
+ <eParameters name="type" eType="#//JTypeJavaHelpers"/>
+ </eOperations>
+ <eOperations name="getSignature" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Replicate the functionality of java.lang.reflect.Method.toString().&#xD;&#xA;&#xD;&#xA;Returns a string describing this Method. The string is formatted as the method access modifiers, if any, followed by the method return type, followed by a space, followed by the class declaring the method, followed by a period, followed by the method name, followed by a parenthesized, comma-separated list of the method's formal parameter types. If the method throws checked exceptions, the parameter list is followed by a space, followed by the word throws followed by a comma-separated list of the thrown exception types.&#xD;&#xA;&#xD;&#xA;For example:&#xD;&#xA;&#xD;&#xA; public boolean java.lang.Object.equals(java.lang.Object)&#xD;&#xA;&#xD;&#xA;The access modifiers are placed in canonical order as specified by &quot;The Java Language Specification&quot;. This is public, &lt;tt>protected&lt;/tt> or &lt;tt>private&lt;/tt> first, and then other modifiers in the following order: &lt;tt>abstract&lt;/tt>, &lt;tt>static&lt;/tt>, &lt;tt>final&lt;/tt>, &lt;tt>synchronized&lt;/tt> &lt;tt>native&lt;/tt>.&#xD;&#xA;"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isGenerated" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Returns true if the method is system generated.&#xD;&#xA;This is usually determined by the @generated tag in the comment."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="setIsGenerated">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Set the isGenerated flag."/>
+ </eAnnotations>
+ <eParameters name="generated" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eOperations>
+ <eOperations name="isVoid" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Is this a void return type method."/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="abstract" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="native" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="synchronized" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="final" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="constructor" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="static" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="javaVisibility" eType="#//JavaVisibilityKind"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
+ eType="#//JavaParameter" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="javaExceptions" upperBound="-1"
+ eType="#//JavaClass"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="javaClass" eType="#//JavaClass"
+ transient="true" eOpposite="#//JavaClass/methods"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="source" eType="#//Block"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Field" eSuperTypes="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//ETypedElement">
+ <eOperations name="getContainingJavaClass" eType="#//JavaClass">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Get the class that this field is within."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isArray" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Is this field an array type."/>
+ </eAnnotations>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="final" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="static" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="javaVisibility" eType="#//JavaVisibilityKind"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="transient" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="volatile" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="javaClass" eType="#//JavaClass"
+ transient="true" eOpposite="#//JavaClass/fields"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="initializer" eType="#//Block"
+ containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="TypeKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="UNDEFINED=1 CLASS=2 INTERFACE=3 EXCEPTION=4"/>
+ </eAnnotations>
+ <eLiterals name="UNDEFINED"/>
+ <eLiterals name="CLASS" value="1"/>
+ <eLiterals name="INTERFACE" value="2"/>
+ <eLiterals name="EXCEPTION" value="3"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Block">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="source" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="contents" upperBound="-1"
+ eType="#//Block" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Comment" eSuperTypes="#//Block"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Statement" eSuperTypes="#//Block"/>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaPackage" eSuperTypes="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="javaClasses" upperBound="-1"
+ eType="#//JavaClass" changeable="false" volatile="true" transient="true" eOpposite="#//JavaClass/javaPackage"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="JavaVisibilityKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="PACKAGE=1&#xD;&#xA;PUBLIC=2&#xD;&#xA;PRIVATE=3&#xD;&#xA;PROTECTED=4"/>
+ </eAnnotations>
+ <eLiterals name="PUBLIC"/>
+ <eLiterals name="PRIVATE" value="1"/>
+ <eLiterals name="PROTECTED" value="2"/>
+ <eLiterals name="PACKAGE" value="3"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="JavaParameterKind">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="IN=0&#xD;&#xA;OUT=1&#xD;&#xA;INOUT=2&#xD;&#xA;RETURN=3"/>
+ </eAnnotations>
+ <eLiterals name="IN"/>
+ <eLiterals name="OUT" value="1"/>
+ <eLiterals name="INOUT" value="2"/>
+ <eLiterals name="RETURN" value="3"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaDataType" eSuperTypes="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EClass">
+ <eOperations name="getDefaultValueString" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Return the default string representing the default value of the primitive."/>
+ </eAnnotations>
+ </eOperations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ArrayType" eSuperTypes="#//JavaClass">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Describes a Java Array type&#xD;&#xA; For multi-dimensional arrays, it is unlikely that the component type will be&#xD;&#xA; specified directly. This would require instantiating a chain of component types&#xD;&#xA; such as String[][][][]->String[][][]->String[][]->String[]->String.&#xD;&#xA;&#xD;&#xA; The component type relationship will be computed if the finalComponentType&#xD;&#xA; and array dimensions is specified.&#xD;&#xA; &#xD;&#xA; For this reason, the preferred way to create is through the JavaRefFactory factory method:&#xD;&#xA; createArrayType(JavaClass finalComponentType, int dimensions)"/>
+ </eAnnotations>
+ <eOperations name="getFinalComponentType" eType="#//JTypeJavaHelpers">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Get the final component type for this Array Type.&#xD;&#xA;&#xD;&#xA;In order to ensure a unique instance, we will resolve this type using reflection. It turns out to be most efficient to just do this by trimming the name."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="getComponentTypeAsHelper" eType="#//JTypeJavaHelpers">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Get the component type of this array. &#xD;&#xA;&#xD;&#xA;If this is a multi-dimensional array, the component type will be the nested array type."/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="isPrimitiveArray" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Is this an array of java primitives"/>
+ </eAnnotations>
+ </eOperations>
+ <eOperations name="setComponentType">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Set the component type."/>
+ </eAnnotations>
+ <eParameters name="helperComponentType" eType="#//JTypeJavaHelpers"/>
+ </eOperations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="arrayDimensions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="componentType" lowerBound="1"
+ eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EClassifier"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="JTypeJavaHelpers" instanceClassName="org.eclipse.jem.java.JavaHelpers">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="This interface is a common interface between JavaClass and JavaDataType plus some common helper methods."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="JTypeList" instanceClassName="java.util.List">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="java.util.List type"/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaEvent" abstract="true" eSuperTypes="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EStructuralFeature"/>
+</ecore:EPackage>
diff --git a/jpa/plugins/org.eclipse.jpt.core/model/javaModel.genmodel b/jpa/plugins/org.eclipse.jpt.core/model/javaModel.genmodel
new file mode 100644
index 0000000000..f21ce09e58
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/model/javaModel.genmodel
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.jpt.core/model"
+ editDirectory="/org.eclipse.jem.edit/src" editorDirectory="/org.eclipse.jem.editor/src"
+ modelPluginID="" modelName="Java" modelPluginClass="" editPluginClass="java.provider.JavaEditPlugin"
+ editorPluginClass="java.presentation.JavaEditorPlugin" updateClasspath="false"
+ booleanFlagsField="eFlags" booleanFlagsReservedBits="8" importerID="org.eclipse.emf.importer.ecore"
+ usedGenPackages="../../org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore">
+ <foreignModel>javaModel.ecore</foreignModel>
+ <genPackages prefix="JavaRef" basePackage="org.eclipse.jem" classPackageSuffix="internal.impl"
+ ecorePackage="javaModel.ecore#/">
+ <genEnums ecoreEnum="javaModel.ecore#//TypeKind">
+ <genEnumLiterals ecoreEnumLiteral="javaModel.ecore#//TypeKind/UNDEFINED"/>
+ <genEnumLiterals ecoreEnumLiteral="javaModel.ecore#//TypeKind/CLASS"/>
+ <genEnumLiterals ecoreEnumLiteral="javaModel.ecore#//TypeKind/INTERFACE"/>
+ <genEnumLiterals ecoreEnumLiteral="javaModel.ecore#//TypeKind/EXCEPTION"/>
+ </genEnums>
+ <genEnums ecoreEnum="javaModel.ecore#//JavaVisibilityKind">
+ <genEnumLiterals ecoreEnumLiteral="javaModel.ecore#//JavaVisibilityKind/PUBLIC"/>
+ <genEnumLiterals ecoreEnumLiteral="javaModel.ecore#//JavaVisibilityKind/PRIVATE"/>
+ <genEnumLiterals ecoreEnumLiteral="javaModel.ecore#//JavaVisibilityKind/PROTECTED"/>
+ <genEnumLiterals ecoreEnumLiteral="javaModel.ecore#//JavaVisibilityKind/PACKAGE"/>
+ </genEnums>
+ <genEnums ecoreEnum="javaModel.ecore#//JavaParameterKind">
+ <genEnumLiterals ecoreEnumLiteral="javaModel.ecore#//JavaParameterKind/IN"/>
+ <genEnumLiterals ecoreEnumLiteral="javaModel.ecore#//JavaParameterKind/OUT"/>
+ <genEnumLiterals ecoreEnumLiteral="javaModel.ecore#//JavaParameterKind/INOUT"/>
+ <genEnumLiterals ecoreEnumLiteral="javaModel.ecore#//JavaParameterKind/RETURN"/>
+ </genEnums>
+ <genDataTypes ecoreDataType="javaModel.ecore#//JTypeJavaHelpers"/>
+ <genDataTypes ecoreDataType="javaModel.ecore#//JTypeList"/>
+ <genClasses ecoreClass="javaModel.ecore#//JavaClass">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//JavaClass/kind"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//JavaClass/public"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//JavaClass/final"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference javaModel.ecore#//JavaClass/implementsInterfaces"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference javaModel.ecore#//JavaClass/classImport"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference javaModel.ecore#//JavaClass/packageImports"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference javaModel.ecore#//JavaClass/fields"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference javaModel.ecore#//JavaClass/methods"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference javaModel.ecore#//JavaClass/initializers"/>
+ <genFeatures property="None" createChild="false" ecoreFeature="ecore:EReference javaModel.ecore#//JavaClass/declaredClasses"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference javaModel.ecore#//JavaClass/declaringClass"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference javaModel.ecore#//JavaClass/javaPackage"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference javaModel.ecore#//JavaClass/events"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference javaModel.ecore#//JavaClass/allEvents"/>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/isNested"/>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/getField">
+ <genParameters ecoreParameter="javaModel.ecore#//JavaClass/getField/fieldName"/>
+ </genOperations>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/getFieldExtended">
+ <genParameters ecoreParameter="javaModel.ecore#//JavaClass/getFieldExtended/fieldName"/>
+ </genOperations>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/getFieldNamed">
+ <genParameters ecoreParameter="javaModel.ecore#//JavaClass/getFieldNamed/fieldName"/>
+ </genOperations>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/getFieldsExtended"/>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/getMethod">
+ <genParameters ecoreParameter="javaModel.ecore#//JavaClass/getMethod/methodName"/>
+ <genParameters ecoreParameter="javaModel.ecore#//JavaClass/getMethod/parameterTypes"/>
+ </genOperations>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/getMethodElementSignatures"/>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/getMethodExtended">
+ <genParameters ecoreParameter="javaModel.ecore#//JavaClass/getMethodExtended/methodName"/>
+ <genParameters ecoreParameter="javaModel.ecore#//JavaClass/getMethodExtended/parameterTypes"/>
+ </genOperations>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/getMethodsExtended"/>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/getOnlySpecificMethods">
+ <genParameters ecoreParameter="javaModel.ecore#//JavaClass/getOnlySpecificMethods/aMethodNamePrefix"/>
+ <genParameters ecoreParameter="javaModel.ecore#//JavaClass/getOnlySpecificMethods/excludedNames"/>
+ </genOperations>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/getPublicMethod">
+ <genParameters ecoreParameter="javaModel.ecore#//JavaClass/getPublicMethod/methodName"/>
+ <genParameters ecoreParameter="javaModel.ecore#//JavaClass/getPublicMethod/parameterTypes"/>
+ </genOperations>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/getPublicMethods"/>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/getPublicMethodsExtended"/>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/getPublicMethodsNamed">
+ <genParameters ecoreParameter="javaModel.ecore#//JavaClass/getPublicMethodsNamed/name"/>
+ </genOperations>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/getSupertype"/>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/implementsInterface">
+ <genParameters ecoreParameter="javaModel.ecore#//JavaClass/implementsInterface/interfaceType"/>
+ </genOperations>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/infoString"/>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/inheritsFrom">
+ <genParameters ecoreParameter="javaModel.ecore#//JavaClass/inheritsFrom/javaClass"/>
+ </genOperations>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/isExistingType"/>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/isInterface"/>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaClass/setSupertype">
+ <genParameters ecoreParameter="javaModel.ecore#//JavaClass/setSupertype/javaclass"/>
+ </genOperations>
+ </genClasses>
+ <genClasses ecoreClass="javaModel.ecore#//Initializer">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//Initializer/isStatic"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference javaModel.ecore#//Initializer/javaClass"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference javaModel.ecore#//Initializer/source"/>
+ </genClasses>
+ <genClasses ecoreClass="javaModel.ecore#//JavaParameter">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//JavaParameter/final"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//JavaParameter/parameterKind"/>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaParameter/isArray"/>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaParameter/isReturn"/>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaParameter/getJavaType"/>
+ <genOperations ecoreOperation="javaModel.ecore#//JavaParameter/getQualifiedName"/>
+ </genClasses>
+ <genClasses ecoreClass="javaModel.ecore#//Method">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//Method/abstract"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//Method/native"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//Method/synchronized"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//Method/final"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//Method/constructor"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//Method/static"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//Method/javaVisibility"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference javaModel.ecore#//Method/parameters"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference javaModel.ecore#//Method/javaExceptions"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference javaModel.ecore#//Method/javaClass"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference javaModel.ecore#//Method/source"/>
+ <genOperations ecoreOperation="javaModel.ecore#//Method/getContainingJavaClass"/>
+ <genOperations ecoreOperation="javaModel.ecore#//Method/getMethodElementSignature"/>
+ <genOperations ecoreOperation="javaModel.ecore#//Method/getParameter">
+ <genParameters ecoreParameter="javaModel.ecore#//Method/getParameter/parameterName"/>
+ </genOperations>
+ <genOperations ecoreOperation="javaModel.ecore#//Method/getReturnType"/>
+ <genOperations ecoreOperation="javaModel.ecore#//Method/setReturnType">
+ <genParameters ecoreParameter="javaModel.ecore#//Method/setReturnType/type"/>
+ </genOperations>
+ <genOperations ecoreOperation="javaModel.ecore#//Method/getSignature"/>
+ <genOperations ecoreOperation="javaModel.ecore#//Method/isGenerated"/>
+ <genOperations ecoreOperation="javaModel.ecore#//Method/setIsGenerated">
+ <genParameters ecoreParameter="javaModel.ecore#//Method/setIsGenerated/generated"/>
+ </genOperations>
+ <genOperations ecoreOperation="javaModel.ecore#//Method/isVoid"/>
+ </genClasses>
+ <genClasses ecoreClass="javaModel.ecore#//Field">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//Field/final"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//Field/static"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//Field/javaVisibility"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//Field/transient"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//Field/volatile"/>
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference javaModel.ecore#//Field/javaClass"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference javaModel.ecore#//Field/initializer"/>
+ <genOperations ecoreOperation="javaModel.ecore#//Field/getContainingJavaClass"/>
+ <genOperations ecoreOperation="javaModel.ecore#//Field/isArray"/>
+ </genClasses>
+ <genClasses ecoreClass="javaModel.ecore#//Block">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//Block/source"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//Block/name"/>
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference javaModel.ecore#//Block/contents"/>
+ </genClasses>
+ <genClasses ecoreClass="javaModel.ecore#//Comment"/>
+ <genClasses ecoreClass="javaModel.ecore#//Statement"/>
+ <genClasses ecoreClass="javaModel.ecore#//JavaPackage">
+ <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference javaModel.ecore#//JavaPackage/javaClasses"/>
+ </genClasses>
+ <genClasses ecoreClass="javaModel.ecore#//JavaDataType">
+ <genOperations ecoreOperation="javaModel.ecore#//JavaDataType/getDefaultValueString"/>
+ </genClasses>
+ <genClasses ecoreClass="javaModel.ecore#//ArrayType">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute javaModel.ecore#//ArrayType/arrayDimensions"/>
+ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference javaModel.ecore#//ArrayType/componentType"/>
+ <genOperations ecoreOperation="javaModel.ecore#//ArrayType/getFinalComponentType"/>
+ <genOperations ecoreOperation="javaModel.ecore#//ArrayType/getComponentTypeAsHelper"/>
+ <genOperations ecoreOperation="javaModel.ecore#//ArrayType/isPrimitiveArray"/>
+ <genOperations ecoreOperation="javaModel.ecore#//ArrayType/setComponentType">
+ <genParameters ecoreParameter="javaModel.ecore#//ArrayType/setComponentType/helperComponentType"/>
+ </genOperations>
+ </genClasses>
+ <genClasses ecoreClass="javaModel.ecore#//JavaEvent"/>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/jpa/plugins/org.eclipse.jpt.core/model/orm.ecore b/jpa/plugins/org.eclipse.jpt.core/model/orm.ecore
new file mode 100644
index 0000000000..2d3a575788
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/model/orm.ecore
@@ -0,0 +1,270 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="orm"
+ nsURI="jpt.orm.xmi" nsPrefix="org.eclipse.jpt.core.content.orm">
+ <eClassifiers xsi:type="ecore:EClass" name="XmlRootContentNode" eSuperTypes="core.ecore#//XmlEObject core.ecore#//IJpaRootContentNode">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="entityMappings" ordered="false"
+ unique="false" lowerBound="1" eType="#//EntityMappingsInternal" resolveProxies="false"
+ eOpposite="#//EntityMappingsInternal/root"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EntityMappingsInternal" eSuperTypes="core.ecore#//XmlEObject core.ecore#//IJpaContentNode #//EntityMappingsForXml #//EntityMappings">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="root" ordered="false" unique="false"
+ lowerBound="1" eType="#//XmlRootContentNode" defaultValueLiteral="" resolveProxies="false"
+ eOpposite="#//XmlRootContentNode/entityMappings"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="version" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="persistenceUnitMetadataInternal"
+ lowerBound="1" eType="#//PersistenceUnitMetadataInternal" changeable="false"
+ defaultValueLiteral="" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="packageInternal" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultSchema" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedSchema" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="schema" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" transient="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultCatalog" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedCatalog" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="catalog" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ changeable="false" volatile="true" transient="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultAccess" eType="ecore:EEnum core.ecore#//AccessType"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedAccess" eType="ecore:EEnum core.ecore#//AccessType"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="access" eType="ecore:EEnum core.ecore#//AccessType"
+ changeable="false" volatile="true" transient="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="typeMappings" upperBound="-1"
+ eType="#//XmlTypeMapping" defaultValueLiteral="" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="persistentTypes" upperBound="-1"
+ eType="#//XmlPersistentType" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="sequenceGenerators" upperBound="-1"
+ eType="#//XmlSequenceGenerator" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="tableGenerators" upperBound="-1"
+ eType="#//XmlTableGenerator" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="namedQueries" upperBound="-1"
+ eType="#//XmlNamedQuery" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="namedNativeQueries" upperBound="-1"
+ eType="#//XmlNamedNativeQuery" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EntityMappings" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="persistenceUnitMetadata"
+ eType="#//PersistenceUnitMetadata" changeable="false" volatile="true" defaultValueLiteral=""
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="package" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ volatile="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EntityMappingsForXml" abstract="true"
+ interface="true">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="persistenceUnitMetadataForXml"
+ eType="#//PersistenceUnitMetadataForXml" volatile="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="packageForXml" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ volatile="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlTypeMapping" abstract="true" eSuperTypes="core.ecore#//XmlEObject core.ecore#//ITypeMapping">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultAccess" eType="ecore:EEnum core.ecore#//AccessType"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedAccess" eType="ecore:EEnum core.ecore#//AccessType"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="access" eType="ecore:EEnum core.ecore#//AccessType"
+ changeable="false" volatile="true" transient="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="metadataComplete" eType="ecore:EEnum core.ecore#//mappings/DefaultFalseBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="persistentType" lowerBound="1"
+ eType="#//XmlPersistentType" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlPersistentType" eSuperTypes="core.ecore#//XmlEObject core.ecore#//IPersistentType">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="class" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="attributeMappings" upperBound="-1"
+ eType="#//XmlAttributeMapping" changeable="false" volatile="true" transient="true"
+ containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="specifiedAttributeMappings"
+ upperBound="-1" eType="#//XmlAttributeMapping" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="virtualAttributeMappings"
+ upperBound="-1" eType="#//XmlAttributeMapping" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="persistentAttributes" upperBound="-1"
+ eType="#//XmlPersistentAttribute" changeable="false" volatile="true" transient="true"
+ resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="specifiedPersistentAttributes"
+ upperBound="-1" eType="#//XmlPersistentAttribute" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="virtualPersistentAttributes"
+ upperBound="-1" eType="#//XmlPersistentAttribute" resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlMappedSuperclass" eSuperTypes="#//XmlTypeMapping core.ecore#//mappings/IMappedSuperclass"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlEntityInternal" eSuperTypes="#//XmlTypeMapping #//XmlEntityForXml #//XmlEntity"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlEntityForXml" abstract="true" interface="true">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="tableForXml" eType="#//XmlTable"
+ volatile="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="discriminatorColumnForXml"
+ eType="#//XmlDiscriminatorColumn" volatile="true" resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlEntity" abstract="true" interface="true"
+ eSuperTypes="core.ecore#//mappings/IEntity">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="secondaryTables" upperBound="-1"
+ eType="ecore:EClass core.ecore#//mappings/ISecondaryTable" changeable="false"
+ volatile="true" transient="true" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="specifiedSecondaryTables"
+ upperBound="-1" eType="ecore:EClass core.ecore#//mappings/ISecondaryTable"
+ containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="defaultSecondaryTables"
+ upperBound="-1" eType="ecore:EClass core.ecore#//mappings/ISecondaryTable"
+ containment="true" resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlEmbeddable" eSuperTypes="#//XmlTypeMapping core.ecore#//mappings/IEmbeddable"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlAttributeMapping" abstract="true"
+ eSuperTypes="core.ecore#//XmlEObject core.ecore#//IAttributeMapping">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="persistentAttribute" lowerBound="1"
+ eType="#//XmlPersistentAttribute" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlNullAttributeMapping" eSuperTypes="#//XmlAttributeMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlBasic" eSuperTypes="#//XmlAttributeMapping core.ecore#//mappings/IBasic #//IXmlColumnMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlId" eSuperTypes="#//XmlAttributeMapping core.ecore#//mappings/IId #//IXmlColumnMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlTransient" eSuperTypes="#//XmlAttributeMapping core.ecore#//mappings/ITransient"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlEmbedded" eSuperTypes="#//XmlAttributeMapping core.ecore#//mappings/IEmbedded"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlEmbeddedId" eSuperTypes="#//XmlAttributeMapping core.ecore#//mappings/IEmbeddedId"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlVersion" eSuperTypes="#//XmlAttributeMapping core.ecore#//mappings/IVersion #//IXmlColumnMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlMultiRelationshipMappingInternal"
+ abstract="true" eSuperTypes="#//XmlRelationshipMapping core.ecore#//mappings/IMultiRelationshipMapping #//XmlMultiRelationshipMappingForXml #//XmlMultiRelationshipMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlMultiRelationshipMappingForXml" abstract="true"
+ interface="true">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="joinTableForXml" eType="#//XmlJoinTable"
+ volatile="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="orderByForXml" eType="#//XmlOrderBy"
+ volatile="true" resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlMultiRelationshipMapping" abstract="true"
+ interface="true" eSuperTypes="core.ecore#//mappings/IMultiRelationshipMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlOneToMany" eSuperTypes="#//XmlMultiRelationshipMappingInternal core.ecore#//mappings/IOneToMany"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlManyToMany" eSuperTypes="#//XmlMultiRelationshipMappingInternal core.ecore#//mappings/IManyToMany"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlPersistentAttribute" eSuperTypes="core.ecore#//XmlEObject core.ecore#//IPersistentAttribute">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PersistenceUnitMetadataInternal" eSuperTypes="core.ecore#//XmlEObject #//PersistenceUnitMetadataForXml #//PersistenceUnitMetadata">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="xmlMappingMetadataCompleteInternal"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="persistenceUnitDefaultsInternal"
+ lowerBound="1" eType="#//PersistenceUnitDefaultsInternal" changeable="false"
+ defaultValueLiteral="" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PersistenceUnitMetadata" abstract="true"
+ interface="true" eSuperTypes="core.ecore#//IXmlEObject">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="xmlMappingMetadataComplete"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="persistenceUnitDefaults"
+ eType="#//PersistenceUnitDefaults" changeable="false" volatile="true" defaultValueLiteral=""
+ resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PersistenceUnitMetadataForXml" abstract="true"
+ interface="true" eSuperTypes="core.ecore#//IXmlEObject">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="xmlMappingMetadataCompleteForXml"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="persistenceUnitDefaultsForXml"
+ eType="#//PersistenceUnitDefaultsForXml" volatile="true" defaultValueLiteral=""
+ resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PersistenceUnitDefaultsInternal" eSuperTypes="core.ecore#//XmlEObject #//PersistenceUnitDefaults #//PersistenceUnitDefaultsForXml">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="schemaInternal" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="catalogInternal" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="accessInternal" eType="ecore:EEnum core.ecore#//AccessType"
+ defaultValueLiteral=""/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="cascadePersistInternal"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PersistenceUnitDefaults" abstract="true"
+ interface="true" eSuperTypes="core.ecore#//IXmlEObject">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="schema" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="catalog" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="access" eType="ecore:EEnum core.ecore#//AccessType"
+ volatile="true" defaultValueLiteral=""/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="cascadePersist" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ volatile="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PersistenceUnitDefaultsForXml" abstract="true"
+ interface="true" eSuperTypes="core.ecore#//IXmlEObject">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="schemaForXml" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="catalogForXml" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="accessForXml" eType="ecore:EEnum core.ecore#//AccessType"
+ volatile="true" defaultValueLiteral=""/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="cascadePersistForXml" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+ volatile="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlTable" eSuperTypes="#//AbstractXmlTable core.ecore#//mappings/ITable"/>
+ <eClassifiers xsi:type="ecore:EClass" name="AbstractXmlNamedColumn" abstract="true"
+ eSuperTypes="core.ecore#//XmlEObject core.ecore#//mappings/INamedColumn">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedNameForXml" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="columnDefinitionForXml"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" volatile="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AbstractXmlColumn" abstract="true" eSuperTypes="#//AbstractXmlNamedColumn core.ecore#//mappings/IAbstractColumn">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="uniqueForXml" eType="ecore:EEnum core.ecore#//mappings/DefaultFalseBoolean"
+ volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="nullableForXml" eType="ecore:EEnum core.ecore#//mappings/DefaultTrueBoolean"
+ volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="insertableForXml" eType="ecore:EEnum core.ecore#//mappings/DefaultTrueBoolean"
+ volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="updatableForXml" eType="ecore:EEnum core.ecore#//mappings/DefaultTrueBoolean"
+ volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedTableForXml" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ volatile="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlColumn" eSuperTypes="#//AbstractXmlColumn core.ecore#//mappings/IColumn">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="lengthForXml" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ volatile="true" defaultValueLiteral="255"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="precisionForXml" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="scaleForXml" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+ volatile="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlJoinColumn" eSuperTypes="#//AbstractXmlColumn core.ecore#//mappings/IJoinColumn">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedReferencedColumnNameForXml"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" volatile="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IXmlColumnMapping" abstract="true" interface="true"
+ eSuperTypes="core.ecore#//mappings/IColumnMapping">
+ <eOperations name="makeColumnForXmlNonNull"/>
+ <eOperations name="makeColumnForXmlNull"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="columnForXml" eType="#//XmlColumn"
+ volatile="true" resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlManyToOne" eSuperTypes="#//XmlSingleRelationshipMapping core.ecore#//mappings/IManyToOne"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlOneToOne" eSuperTypes="#//XmlSingleRelationshipMapping core.ecore#//mappings/IOneToOne"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlSingleRelationshipMapping" abstract="true"
+ eSuperTypes="#//XmlRelationshipMapping core.ecore#//mappings/ISingleRelationshipMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlRelationshipMapping" abstract="true"
+ eSuperTypes="#//XmlAttributeMapping core.ecore#//mappings/IRelationshipMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlJoinTable" eSuperTypes="#//AbstractXmlTable core.ecore#//mappings/IJoinTable"/>
+ <eClassifiers xsi:type="ecore:EClass" name="AbstractXmlTable" abstract="true" eSuperTypes="core.ecore#//XmlEObject core.ecore#//mappings/ITable">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedNameForXml" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedCatalogForXml"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedSchemaForXml"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" volatile="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlOverride" abstract="true" eSuperTypes="core.ecore#//XmlEObject core.ecore#//mappings/IOverride"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlAttributeOverride" eSuperTypes="#//XmlOverride core.ecore#//mappings/IAttributeOverride #//IXmlColumnMapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlAssociationOverride" eSuperTypes="#//XmlOverride core.ecore#//mappings/IAssociationOverride"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlDiscriminatorColumn" eSuperTypes="core.ecore#//XmlEObject core.ecore#//mappings/IDiscriminatorColumn">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedNameForXml" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+ volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="discriminatorTypeForXml"
+ eType="ecore:EEnum core.ecore#//mappings/DiscriminatorType" volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="columnDefinitionForXml"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" volatile="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedLengthForXml"
+ eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"
+ volatile="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlSecondaryTable" eSuperTypes="#//AbstractXmlTable core.ecore#//mappings/ISecondaryTable"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlPrimaryKeyJoinColumn" eSuperTypes="#//AbstractXmlNamedColumn core.ecore#//mappings/IPrimaryKeyJoinColumn">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="specifiedReferencedColumnNameForXml"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" volatile="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlGeneratedValue" eSuperTypes="core.ecore#//XmlEObject core.ecore#//mappings/IGeneratedValue"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlGenerator" abstract="true" eSuperTypes="core.ecore#//XmlEObject core.ecore#//mappings/IGenerator"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlSequenceGenerator" eSuperTypes="#//XmlGenerator core.ecore#//mappings/ISequenceGenerator"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlTableGenerator" eSuperTypes="#//XmlGenerator core.ecore#//mappings/ITableGenerator"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlOrderBy" eSuperTypes="core.ecore#//XmlEObject core.ecore#//mappings/IOrderBy"/>
+ <eClassifiers xsi:type="ecore:EClass" name="AbstractXmlQuery" abstract="true" eSuperTypes="core.ecore#//XmlEObject core.ecore#//mappings/IQuery"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlNamedQuery" eSuperTypes="#//AbstractXmlQuery core.ecore#//mappings/INamedQuery"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlNamedNativeQuery" eSuperTypes="#//AbstractXmlQuery core.ecore#//mappings/INamedNativeQuery"/>
+ <eClassifiers xsi:type="ecore:EClass" name="XmlQueryHint" eSuperTypes="core.ecore#//XmlEObject core.ecore#//mappings/IQueryHint"/>
+</ecore:EPackage>
diff --git a/jpa/plugins/org.eclipse.jpt.core/model/persistence.ecore b/jpa/plugins/org.eclipse.jpt.core/model/persistence.ecore
new file mode 100644
index 0000000000..628ffd690f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/model/persistence.ecore
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="persistence"
+ nsURI="persistence.xmi" nsPrefix="org.eclipse.jpt.core.content.persistence">
+ <eClassifiers xsi:type="ecore:EClass" name="PersistenceXmlRootContentNode" eSuperTypes="core.ecore#//XmlEObject core.ecore#//IJpaRootContentNode">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="persistence" eType="#//Persistence"
+ eOpposite="#//Persistence/root"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Persistence" eSuperTypes="core.ecore#//XmlEObject">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="persistenceUnits" upperBound="-1"
+ eType="#//PersistenceUnit" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="version" unique="false"
+ lowerBound="1" eType="#//Version"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="root" ordered="false" unique="false"
+ lowerBound="1" eType="#//PersistenceXmlRootContentNode" resolveProxies="false"
+ eOpposite="#//PersistenceXmlRootContentNode/persistence"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PersistenceUnit" eSuperTypes="core.ecore#//XmlEObject">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" unique="false"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="provider" unique="false"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="jtaDataSource" unique="false"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="nonJtaDataSource" unique="false"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="mappingFiles" unique="false"
+ upperBound="-1" eType="#//MappingFileRef" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="jarFiles" unique="false"
+ upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="classes" unique="false"
+ upperBound="-1" eType="#//JavaClassRef" containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="excludeUnlistedClasses"
+ unique="false" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//Boolean"
+ defaultValueLiteral="false" unsettable="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="properties" eType="#//Properties"
+ containment="true" resolveProxies="false"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" unique="false" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="transactionType" unique="false"
+ eType="#//PersistenceUnitTransactionType" defaultValueLiteral="JTA" unsettable="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="MappingFileRef" eSuperTypes="core.ecore#//XmlEObject">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="fileName" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaClassRef" eSuperTypes="core.ecore#//XmlEObject">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="javaClass" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass javaModel.ecore#//JavaClass"
+ resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Properties" eSuperTypes="core.ecore#//XmlEObject">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="properties" upperBound="-1"
+ eType="#//Property" containment="true" resolveProxies="false"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Property" eSuperTypes="core.ecore#//XmlEObject">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" unique="false" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" unique="false" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="PersistenceUnitTransactionType">
+ <eLiterals name="JTA"/>
+ <eLiterals name="RESOURCE_LOCAL" value="1"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EDataType" name="PersistenceUnitTransactionTypeObject"
+ instanceClassName="org.eclipse.emf.common.util.Enumerator"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="Version" instanceClassName="java.lang.String"/>
+</ecore:EPackage>
diff --git a/jpa/plugins/org.eclipse.jpt.core/plugin.properties b/jpa/plugins/org.eclipse.jpt.core/plugin.properties
new file mode 100644
index 0000000000..92b7c44540
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/plugin.properties
@@ -0,0 +1,36 @@
+###############################################################################
+# Copyright (c) 2006 Oracle.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# Oracle. - initial API and implementation
+###############################################################################
+# ====================================================================
+# To code developer:
+# Do NOT change the properties between this line and the
+# "%%% END OF TRANSLATED PROPERTIES %%%" line.
+# Make a new property name, append to the end of the file and change
+# the code to use the new property.
+# ====================================================================
+
+# ====================================================================
+# %%% END OF TRANSLATED PROPERTIES %%%
+# ====================================================================
+
+pluginName = Java Persistence API Tools - Core
+providerName = Eclipse.org
+
+JPA_PLATFORM="JPA Platform"
+JPA_PROBLEM_MARKER=JPA Problem Marker
+JPA_FILE_CONTENT=JPA File Content
+
+GENERIC_PLATFORM_LABEL=Generic
+
+JPA_FACET_LABEL=Java Persistence
+JPA_FACET_DESCRIPTION=Adds support for writing persistent meta-data using Java Persistence Architecture.
+JPA_PRESET_LABEL=Utility JPA project with Java 5.0
+JPA_TEMPLATE_LABEL=JPA Project
+JPA_VALIDATOR=JPA Validator
diff --git a/jpa/plugins/org.eclipse.jpt.core/plugin.xml b/jpa/plugins/org.eclipse.jpt.core/plugin.xml
new file mode 100644
index 0000000000..31e7a5ebd3
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/plugin.xml
@@ -0,0 +1,187 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+ <extension-point
+ id="jpaPlatform" name="%JPA_PLATFORM" schema="schema/jpaPlatform.exsd"/>
+
+
+ <extension
+ point="org.eclipse.core.resources.markers"
+ id="jpaProblemMarker"
+ name="%JPA_PROBLEM_MARKER">
+ <persistent value="true"/>
+
+ <!-- Can't use text marker until we have specific models for each input type (XML, java)
+ <super type="org.eclipse.core.resources.textmarker"/>
+ -->
+
+ <super type="org.eclipse.wst.validation.problemmarker"/>
+ </extension>
+
+
+ <extension
+ point="org.eclipse.core.runtime.adapters">
+
+ <factory
+ class="org.eclipse.jpt.core.internal.JpaProjectAdapterFactory"
+ adaptableType="org.eclipse.core.resources.IProject">
+ <adapter type="org.eclipse.jpt.core.internal.IJpaProject"/>
+ </factory>
+
+ <factory
+ class="org.eclipse.jpt.core.internal.JpaProjectAdapterFactory"
+ adaptableType="org.eclipse.jdt.core.IJavaProject">
+ <adapter type="org.eclipse.jpt.core.internal.IJpaProject"/>
+ </factory>
+
+ </extension>
+
+
+ <extension
+ point="org.eclipse.core.runtime.contentTypes">
+
+ <content-type
+ base-type="org.eclipse.core.runtime.xml"
+ file-names="orm.xml"
+ id="org.eclipse.jpt.core.content.orm"
+ name="ORM XML Content"
+ priority="normal">
+ Only allowing file names of orm.xml. Extenders will have to specify a different file name.
+ Limitation with WTP translators for registering files names instead of content types
+ </content-type>
+ <content-type
+ base-type="org.eclipse.core.runtime.xml"
+ file-names="persistence.xml"
+ id="org.eclipse.jpt.core.content.persistence"
+ name="Persistence XML Content"
+ priority="normal">
+ Only allowing file names of persistence.xml.
+ </content-type>
+
+ </extension>
+
+
+ <extension
+ point="org.eclipse.core.runtime.preferences">
+
+ <initializer
+ class="org.eclipse.jpt.core.internal.prefs.JpaPreferenceInitializer"/>
+
+ </extension>
+
+
+ <extension
+ point="org.eclipse.jpt.core.jpaPlatform">
+
+ <jpaPlatform
+ id="generic"
+ label="%GENERIC_PLATFORM_LABEL"
+ class="org.eclipse.jpt.core.internal.platform.generic.GenericPlatform"/>
+
+ </extension>
+
+
+ <extension
+ point="org.eclipse.wst.common.project.facet.core.facets">
+
+ <project-facet id="jpt.jpa">
+ <label>%JPA_FACET_LABEL</label>
+ <description>%JPA_FACET_DESCRIPTION</description>
+ </project-facet>
+
+ <project-facet-version facet="jpt.jpa" version="1.0">
+ <constraint>
+ <and>
+ <requires facet="jst.java" version="[5.0"/>
+ <or>
+ <requires facet="jst.utility" version="[1.0"/>
+ <requires facet="jst.appclient" version="[1.2"/>
+ <requires facet="jst.ejb" version="[1.1"/>
+ <requires facet="jst.connector" version="[1.0"/>
+ <requires facet="jst.web" version="[2.2"/>
+ </or>
+ </and>
+ </constraint>
+ </project-facet-version>
+
+ <preset id="jpt.jpa.preset">
+ <label>%JPA_PRESET_LABEL</label>
+ <facet id="jst.java" version="5.0"/>
+ <facet id="jst.utility" version="1.0"/>
+ <facet id="jpt.jpa" version="1.0"/>
+ </preset>
+
+ <template id="jpt.jpa.template">
+ <label>%JPA_TEMPLATE_LABEL</label>
+ <fixed facet="jst.java"/>
+ <fixed facet="jst.utility"/>
+ <fixed facet="jpt.jpa"/>
+ <preset id="jpt.jpa.preset"/>
+ </template>
+
+ <action facet="jpt.jpa" type="INSTALL" id="jpt.jpa.install">
+ <config-factory class="org.eclipse.jpt.core.internal.facet.JpaFacetDataModelProvider"/>
+ <delegate class="org.eclipse.jpt.core.internal.facet.JpaFacetInstallDelegate"/>
+ </action>
+
+ <action facet="jpt.jpa" type="UNINSTALL" id="jpt.jpa.uninstall">
+ <delegate class="org.eclipse.jpt.core.internal.facet.JpaFacetUninstallDelegate"/>
+ </action>
+
+ <event-handler facet="jpt.jpa" type="POST_INSTALL">
+ <delegate class="org.eclipse.jpt.core.internal.facet.JpaFacetPostInstallDelegate"/>
+ </event-handler>
+
+ </extension>
+
+
+ <extension
+ point="org.eclipse.wst.common.project.facet.core.runtimes">
+
+ <supported>
+ <runtime-component any="true"/>
+ <facet id="jpt.jpa"/>
+ </supported>
+
+ </extension>
+
+
+ <extension
+ point="org.eclipse.wst.validation.validator"
+ id="jpaValidator"
+ name="%JPA_VALIDATOR">
+
+ <validator>
+ <enablement>
+ <and>
+ <test property="org.eclipse.wst.common.project.facet.core.projectFacet" value="jpt.jpa"/>
+ </and>
+ </enablement>
+
+ <filter
+ objectClass="org.eclipse.core.resources.IFile"
+ nameFilter="orm.xml"/>
+ <filter
+ objectClass="org.eclipse.core.resources.IFile"
+ nameFilter="persistence.xml"/>
+ <filter
+ objectClass="org.eclipse.core.resources.IFile"
+ nameFilter="*.java"/>
+
+ <run class="org.eclipse.jpt.core.internal.validation.JpaValidator"/>
+ <helper class="org.eclipse.jpt.core.internal.validation.JpaHelper"/>
+
+ <markerId markerIdValue="jpaProblemMarker"/>
+
+
+ <!-- don't know what this does
+ <dependentValidator depValValue="true"/>
+ -->
+
+ </validator>
+
+ </extension>
+
+
+</plugin>
diff --git a/jpa/plugins/org.eclipse.jpt.core/property_files/jpa_core.properties b/jpa/plugins/org.eclipse.jpt.core/property_files/jpa_core.properties
new file mode 100644
index 0000000000..8a59a2cb7d
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/property_files/jpa_core.properties
@@ -0,0 +1,18 @@
+###############################################################################
+# Copyright (c) 2007 Oracle.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# Oracle. - initial API and implementation
+###############################################################################
+
+VALIDATE_PLATFORM_NOT_SPECIFIED=Platform must be specified
+VALIDATE_CONNECTION_NOT_SPECIFIED=Connection must be specified
+VALIDATE_CONNECTION_NOT_CONNECTED=Connection must be active to get data source specific help and validation.
+SYNCHRONIZE_CLASSES_JOB=Synchronizing classes
+SYNCHRONIZING_CLASSES_TASK=Synchronizing classes ...
+INVALID_PERSISTENCE_XML_CONTENT=Invalid persistence.xml content
+ERROR_WRITING_FILE=Could not write to persistence.xml \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/property_files/jpa_validation.properties b/jpa/plugins/org.eclipse.jpt.core/property_files/jpa_validation.properties
new file mode 100644
index 0000000000..bcec2fa7f6
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/property_files/jpa_validation.properties
@@ -0,0 +1,55 @@
+###############################################################################
+# Copyright (c) 2007 Oracle.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# Oracle. - initial API and implementation
+###############################################################################
+
+PROJECT_NO_CONNECTION=No connection specified for project. No data-specific validation will be performed.
+PROJECT_INACTIVE_CONNECTION=Connection \"{0}\" is not active. No validation will be done against the data source.
+PROJECT_NO_PERSISTENCE_XML=No persistence.xml file in project
+PROJECT_MULTIPLE_PERSISTENCE_XML=Multiple persistence.xml files in project
+PERSISTENCE_XML_INVALID_CONTENT=Invalid content (no root node)
+PERSISTENCE_NO_PERSISTENCE_UNIT=No persistence unit defined
+PERSISTENCE_MULTIPLE_PERSISTENCE_UNITS=Multiple persistence units defined
+PERSISTENCE_UNIT_UNSPECIFIED_MAPPING_FILE=Unspecified mapping file
+PERSISTENCE_UNIT_NONEXISTENT_MAPPING_FILE=Mapping file \"{0}\" cannot be resolved
+PERSISTENCE_UNIT_INVALID_MAPPING_FILE=Mapping file \"{0}\" does not have ORM content
+PERSISTENCE_UNIT_DUPLICATE_MAPPING_FILE=Duplicate mapping file \"{0}\"
+PERSISTENCE_UNIT_UNSPECIFIED_CLASS=Unspecified class
+PERSISTENCE_UNIT_NONEXISTENT_CLASS=Class \"{0}\" cannot be resolved
+PERSISTENCE_UNIT_INVALID_CLASS=Class \"{0}\" is not annotated as a persistent class
+PERSISTENCE_UNIT_DUPLICATE_CLASS=Duplicate class \"{0}\"
+ENTITY_MAPPINGS_MULTIPLE_METADATA=Metadata for persistence unit \"{0}\" specified in multiple mapping files
+PERSISTENT_TYPE_UNSPECIFIED_CLASS=Unspecified class
+PERSISTENT_TYPE_UNRESOLVED_CLASS=Class \"{0}\" cannot be resolved
+ENTITY_NO_ID=Entity \"{0}\" has no Id or EmbeddedId
+PERSISTENT_ATTRIBUTE_UNSPECIFIED_NAME=Unspecified name
+PERSISTENT_ATTRIBUTE_UNRESOLVED_NAME=Attribute \"{0}\" in class \"{1}\" cannot be resolved
+PERSISTENT_ATTRIBUTE_INVALID_MAPPING=Attribute \"{0}\" has invalid mapping type in this context
+TABLE_UNRESOLVED_SCHEMA=Schema \"{0}\" cannot be resolved for table \"{1}\"
+TABLE_UNRESOLVED_NAME=Table \"{0}\" cannot be resolved
+JOIN_TABLE_UNRESOLVED_SCHEMA=Schema \"{0}\" cannot be resolved for join table \"{1}\"
+VIRTUAL_ATTRIBUTE_JOIN_TABLE_UNRESOLVED_SCHEMA=In virtual attribute \"{0}\", schema \"{1}\" cannot be resolved for join table \"{2}\"
+JOIN_TABLE_UNRESOLVED_NAME=Join table \"{0}\" cannot be resolved
+VIRTUAL_ATTRIBUTE_JOIN_TABLE_UNRESOLVED_NAME=In virtual attribute \"{0}\",, join table \"{1}\" cannot be resolved
+COLUMN_UNRESOLVED_TABLE=Table \"{0}\" for column \"{1}\" cannot be resolved
+VIRTUAL_ATTRIBUTE_COLUMN_UNRESOLVED_TABLE=In virtual attribute \"{0}\", table \"{1}\" for column \"{2}\" cannot be resolved
+VIRTUAL_ATTRIBUTE_OVERRIDE_COLUMN_UNRESOLVED_TABLE=In virtual attribute override \"{0}\", table \"{1}\" for column \"{2}\" cannot be resolved
+COLUMN_UNRESOLVED_NAME=Column \"{0}\" cannot be resolved
+VIRTUAL_ATTRIBUTE_COLUMN_UNRESOLVED_NAME=In virtual attribute \"{0}\", column \"{1}\" cannot be resolved
+VIRTUAL_ATTRIBUTE_OVERRIDE_COLUMN_UNRESOLVED_NAME=In virtual attribute override \"{0}\", column \"{1}\" cannot be resolved
+JOIN_COLUMN_UNRESOLVED_TABLE=Table \"{0}\" for join column \"{1}\" cannot be resolved
+VIRTUAL_ATTRIBUTE_JOIN_COLUMN_UNRESOLVED_TABLE=In virtual attribute \"{0}\", table \"{1}\" for join column \"{2}\" cannot be resolved
+VIRTUAL_ASSOCIATION_OVERRIDE_JOIN_COLUMN_UNRESOLVED_TABLE=In virtual association override \"{0}\", table \"{1}\" for join column \"{2}\" cannot be resolved
+JOIN_COLUMN_UNRESOLVED_NAME=Join column \"{0}\" cannot be resolved
+VIRTUAL_ATTRIBUTE_JOIN_COLUMN_UNRESOLVED_NAME=In virtual attribute \"{0}\", join column \"{1}\" cannot be resolved
+VIRTUAL_ASSOCIATION_OVERRIDE_JOIN_COLUMN_UNRESOLVED_NAME=In virtual association override \"{0}\", join column \"{1}\" cannot be resolved
+JOIN_COLUMN_REFERENCED_COLUMN_UNRESOLVED_NAME=Referenced column \"{0}\" in join column \"{1}\" cannot be resolved
+VIRTUAL_ATTRIBUTE_JOIN_COLUMN_REFERENCED_COLUMN_UNRESOLVED_NAME=In virtual attribute \"{0}\", referenced column \"{1}\" in join column \"{2}\" cannot be resolved
+VIRTUAL_ASSOCIATION_OVERRIDE_JOIN_COLUMN_REFERENCED_COLUMN_UNRESOLVED_NAME=In virtual association override \"{0}\", referenced column \"{1}\" in join column \"{2}\" cannot be resolved
+GENERATED_VALUE_UNRESOLVED_GENERATOR=No generator named \"{0}\" is defined in persistence unit
diff --git a/jpa/plugins/org.eclipse.jpt.core/schema/jpaPlatform.exsd b/jpa/plugins/org.eclipse.jpt.core/schema/jpaPlatform.exsd
new file mode 100644
index 0000000000..dbdb3ec6f5
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/schema/jpaPlatform.exsd
@@ -0,0 +1,122 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.jpt.core">
+<annotation>
+ <appInfo>
+ <meta.schema plugin="org.eclipse.jpt.core" id="jpaPlatform" name="JPA Platform"/>
+ </appInfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <complexType>
+ <sequence>
+ <element ref="jpaPlatform" minOccurs="1" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="jpaPlatform">
+ <complexType>
+ <attribute name="id" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="label" type="string" use="required">
+ <annotation>
+ <documentation>
+ An translatable string representation of the platform.
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java" basedOn="org.eclipse.jpt.core.internal.IJpaPlatform"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="since"/>
+ </appInfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="examples"/>
+ </appInfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="apiInfo"/>
+ </appInfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="implementation"/>
+ </appInfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="copyright"/>
+ </appInfo>
+ <documentation>
+
+ </documentation>
+ </annotation>
+
+</schema>
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/AccessType.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/AccessType.java
new file mode 100644
index 0000000000..fd74cc97d5
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/AccessType.java
@@ -0,0 +1,237 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: AccessType.java,v 1.1 2007/04/25 20:09:35 pfullbright Exp $
+ */
+package org.eclipse.jpt.core.internal;
+
+import static org.eclipse.jpt.core.internal.AccessType.DEFAULT_VALUE;
+import static org.eclipse.jpt.core.internal.AccessType.FIELD_VALUE;
+import static org.eclipse.jpt.core.internal.AccessType.PROPERTY_VALUE;
+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>Access Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getAccessType()
+ * @model
+ * @generated
+ */
+public enum AccessType implements Enumerator {
+ /**
+ * The '<em><b>Default</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #DEFAULT_VALUE
+ * @generated
+ * @ordered
+ */
+ DEFAULT(0, "Default", "Default"),
+ /**
+ * The '<em><b>PROPERTY</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #PROPERTY_VALUE
+ * @generated
+ * @ordered
+ */
+ PROPERTY(1, "PROPERTY", "Property"),
+ /**
+ * The '<em><b>FIELD</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #FIELD_VALUE
+ * @generated
+ * @ordered
+ */
+ FIELD(2, "FIELD", "Field");
+ /**
+ * The '<em><b>Default</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Default</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #DEFAULT
+ * @model name="Default"
+ * @generated
+ * @ordered
+ */
+ public static final int DEFAULT_VALUE = 0;
+
+ /**
+ * The '<em><b>PROPERTY</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>PROPERTY</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #PROPERTY
+ * @model literal="Property"
+ * @generated
+ * @ordered
+ */
+ public static final int PROPERTY_VALUE = 1;
+
+ /**
+ * The '<em><b>FIELD</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>FIELD</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #FIELD
+ * @model literal="Field"
+ * @generated
+ * @ordered
+ */
+ public static final int FIELD_VALUE = 2;
+
+ /**
+ * An array of all the '<em><b>Access Type</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final AccessType[] VALUES_ARRAY = new AccessType[] {
+ DEFAULT, PROPERTY, FIELD,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Access Type</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<AccessType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Access Type</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static AccessType get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ AccessType result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Access Type</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static AccessType getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ AccessType result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Access Type</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static AccessType get(int value) {
+ switch (value) {
+ case DEFAULT_VALUE :
+ return DEFAULT;
+ case PROPERTY_VALUE :
+ return PROPERTY;
+ case FIELD_VALUE :
+ return FIELD;
+ }
+ 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 AccessType(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;
+ }
+} //AccessType
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IAttributeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IAttributeMapping.java
new file mode 100644
index 0000000000..82dc9123c7
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IAttributeMapping.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IAttribute Mapping</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIAttributeMapping()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IAttributeMapping extends IJpaSourceObject
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation" required="true"
+ * @generated
+ */
+ IPersistentAttribute getPersistentAttribute();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * @generated
+ */
+ boolean isDefault();
+
+ /**
+ * Return a unique key for the IPersistentAttributeMapping. If this is defined in
+ * an extension they should be equal.
+ */
+ String getKey();
+
+ /**
+ * If the mapping is for a primary key column, return the column's name,
+ * otherwise return null.
+ */
+ String primaryKeyColumnName();
+
+ /**
+ * Return the mapping for the attribute mapping's attribute's type.
+ */
+ ITypeMapping typeMapping();
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaContentNode.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaContentNode.java
new file mode 100644
index 0000000000..e6fdeefa45
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaContentNode.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IJpa Content Node</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaContentNode()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IJpaContentNode extends IJpaSourceObject
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation" required="true"
+ * @generated
+ */
+ IJpaFile getJpaFile();
+
+ /**
+ * Return a unique identifier for all of this class of content nodes
+ */
+ Object getId();
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaCoreConstants.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaCoreConstants.java
new file mode 100644
index 0000000000..e1ed7f74d9
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaCoreConstants.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2007 Oracle. All rights reserved. This program and
+ * the accompanying materials are made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal;
+
+public interface IJpaCoreConstants
+{
+ /**
+ * Possible configuration option
+ */
+ public static final String JPA_PLATFORM = JpaCorePlugin.PLUGIN_ID + ".platform"; //$NON-NLS-1$
+
+ /**
+ * Possible configuration option
+ */
+ public static final String DATA_SOURCE_CONNECTION_NAME = JpaCorePlugin.PLUGIN_ID + ".dataSource.connectionName"; //$NON-NLS-1$
+
+ /**
+ * Name of META-INF directory
+ */
+ public static final String META_INF = "META-INF";
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaDataSource.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaDataSource.java
new file mode 100644
index 0000000000..889ff5109f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaDataSource.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal;
+
+import org.eclipse.jpt.db.internal.Connection;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IJpa Data Source</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaDataSource()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IJpaDataSource extends IJpaEObject
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation" unique="false" required="true" ordered="false"
+ * @generated
+ */
+ String getConnectionProfileName();
+
+ Connection getConnection();
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaEObject.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaEObject.java
new file mode 100644
index 0000000000..ac28dc1c7d
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaEObject.java
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal;
+
+import org.eclipse.core.resources.IResource;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IPersistence Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaEObject()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IJpaEObject extends EObject
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * @generated
+ */
+ IJpaProject getJpaProject();
+
+ /**
+ * Return the resource that most directly contains this object
+ */
+ IResource getResource();
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaFile.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaFile.java
new file mode 100644
index 0000000000..842ec08a00
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaFile.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal;
+
+import org.eclipse.core.resources.IFile;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IPersistence File</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaFile()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IJpaFile extends IJpaEObject
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Content</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * @generated
+ */
+ IJpaRootContentNode getContent();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation" required="true"
+ * @generated
+ */
+ String getContentId();
+
+ /**
+ * Return the IFile associated with this JPA file
+ */
+ IFile getFile();
+
+ /**
+ * Return the content node corresponding to the given offset in the source.
+ * This may (and often will) be <code>null</code>.
+ */
+ IJpaContentNode getContentNode(int offset);
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaFileContentProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaFileContentProvider.java
new file mode 100644
index 0000000000..846217ebc7
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaFileContentProvider.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal;
+
+import org.eclipse.core.resources.IFile;
+
+/**
+ * A JpaProject corresponds to an IProject and containts of JpaFiles.
+ * A JpaFile corresponds to a file resource in the project and contains
+ * an IJpaRootContentNode. Specify an IJpaFileContentProvider for each
+ * file contentType to be included in the JpaProject.
+ *
+ * See IJpaPlatform
+ *
+ */
+public interface IJpaFileContentProvider
+{
+ /**
+ * Create the IJpaRootContentNode for the given IFile.
+ * This will be set on the corresponding JpaFile in the JpaProject.
+ * The file passed in will have a contentType that matches
+ * the one returned by the contentType() method.
+ */
+ IJpaRootContentNode buildRootContent(IFile file);
+
+ /**
+ * Return the contentType of the file to be included in the JpaProject.
+ * This contentType should correspond to one specified through the
+ * org.eclipse.core.runtime.contentTypes extension point.
+ * @return
+ */
+ String contentType();
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaModel.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaModel.java
new file mode 100644
index 0000000000..343ded1f2c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaModel.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal;
+
+import java.util.Iterator;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IJpa Model</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaModel()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IJpaModel extends EObject
+{
+ /**
+ * Returns the IJpaProject corresponding to the given IProject.
+ * Returns <code>null</code> if unable to associate the given IProject
+ * with an IJpaProject.
+ */
+ IJpaProject getJpaProject(IProject project) throws CoreException;
+
+ /**
+ * Returns a (non-modifiable) Iterator on all the IJpaProjects in the model.
+ */
+ Iterator<IJpaProject> jpaProjects();
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaPlatform.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaPlatform.java
new file mode 100644
index 0000000000..41f5632d9b
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaPlatform.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse
+ * Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal;
+
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMapping;
+import org.eclipse.jpt.core.internal.content.java.IJavaTypeMapping;
+import org.eclipse.jpt.core.internal.platform.IContext;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+/**
+ * This interface is to be implemented by a JPA vendor to provide extensions to
+ * the core JPA model. The core JPA model will provide functinality for JPA
+ * spec annotations in java and the orm.xml mapping file.
+ * The org.eclipse.jpt.core.genericPlatform extension supplies
+ * IJpaFileContentProvider for those file types. As another vendor option you
+ * will have to supply those IJpaFileContentProviders as well or different ones
+ * as necessary.
+ *
+ * See the org.eclipse.jpt.core.jpaPlatform extension point
+ */
+public interface IJpaPlatform
+{
+ /**
+ * Get the ID for this platform
+ */
+ String getId();
+
+ /**
+ * Set the ID for this platform
+ *
+ * *************
+ * * IMPORTANT * For INTERNAL use only!!
+ * *************
+ */
+ void setId(String theId);
+
+ /**
+ * Get the IJpaProject for this platform
+ */
+ IJpaProject getProject();
+
+ /**
+ * Set the IJpaProject on this platform
+ */
+ void setProject(IJpaProject jpaProject);
+
+ /**
+ * Return a collection of IJpaFileContentProviders. These will be used to
+ * determine which files will be read from an IProject based on contentType.
+ * These contentProviders should have unique contentTypes.
+ * @return
+ */
+ Collection<IJpaFileContentProvider> jpaFileContentProviders();
+
+ /**
+ * Build a project context to be used when resynching the intra-model
+ * references and creating validation problems.
+ * The JPA model containment hierarchy is inappropriate to use as a context
+ * for defaults because it is based on the IJpaProject containing files.
+ * The defaults context for the jpa model is based on the persistence.xml
+ * and the mapping files and classes it contains.
+ *
+ * @see refreshDefaults(Object)
+ * @return
+ */
+ IContext buildProjectContext();
+
+ /**
+ * Build a type context to be used when resynching the intra-model
+ * references and creating validation problems.
+ * The JPA model containment hierarchy is inappropriate to use as a context
+ * for defaults because it is based on the IJpaProject containing files.
+ * The defaults context for the jpa model is based on the persistence.xml
+ * and the mapping files and classes it contains.
+ *
+ * @see refreshDefaults(Object)
+ * @return
+ */
+ IContext buildJavaTypeContext(IContext parentContext, IJavaTypeMapping typeMapping);
+
+ /**
+ * Build an attribute context to be used when resynching the intra-model
+ * references and creating validation problems.
+ * The JPA model containment hierarchy is inappropriate to use as a context
+ * for defaults because it is based on the IJpaProject containing files.
+ * The defaults context for the jpa model is based on the persistence.xml
+ * and the mapping files and classes it contains.
+ *
+ * @see refreshDefaults(Object)
+ * @return
+ */
+ IContext buildJavaAttributeContext(IContext parentContext, IJavaAttributeMapping attributeMapping);
+
+ /**
+ * Resynchronize intra-model connections given the context hierarchy the
+ * IJpaPlatform built in buildContextHierarchy().
+ * This will be called each time an update to the jpa model occurs. If an
+ * update occurs while the resynch() job is in process, another resynch()
+ * will be started upon completion.
+ * @param contextHierarchy
+ */
+ void resynch(IContext contextHierarchy);
+
+ /**
+ * Adds validation messages to the growing list of messages
+ */
+ void addToMessages(List<IMessage> messages);
+ /**
+ * Returns the IGeneratorRepository for the persistence unit of the
+ * given IPersistentType. A NullGeneratorRepository should be returned
+ * if the IPersistentType is not part of a persistence unit
+ * @param persistentType
+ * @return
+ */
+ // IGeneratorRepository generatorRepository(IPersistentType persistentType);
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaProject.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaProject.java
new file mode 100644
index 0000000000..cb8490c3c5
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaProject.java
@@ -0,0 +1,113 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal;
+
+import java.util.Collection;
+import java.util.Iterator;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jpt.core.internal.content.java.JavaPersistentType;
+import org.eclipse.jpt.db.internal.ConnectionProfile;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IJpa Project</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaProject()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IJpaProject extends IJpaEObject
+{
+ /**
+ * Return the IProject associated with this JPA project
+ */
+ IProject getProject();
+
+ /**
+ * Return the IJavaProject associated with the JPA project
+ */
+ IJavaProject getJavaProject();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation" required="true"
+ * @generated
+ */
+ IJpaModel getModel();
+
+ IJpaPlatform getPlatform();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model platformIdRequired="true" platformIdOrdered="false"
+ * @generated
+ */
+ void setPlatform(String platformId);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation" required="true"
+ * @generated
+ */
+ IJpaDataSource getDataSource();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model connectionProfileNameUnique="false" connectionProfileNameRequired="true" connectionProfileNameOrdered="false"
+ * @generated
+ */
+ void setDataSource(String connectionProfileName);
+
+ /**
+ * Returns the IJpaFile corresponding to the given IFile.
+ * Returns <code>null</code> if unable to associate the given IFile
+ * with an IJpaFile.
+ */
+ IJpaFile getJpaFile(IFile file) throws CoreException;
+
+ /**
+ * Return a Collection of IJpaFiles for the given contentType.
+ * The contentType should match that given in the IJpaFileContentProvider
+ */
+ Collection<IJpaFile> jpaFiles(String contentType);
+
+ /**
+ * Returns a (non-modifiable) Iterator on all the IJpaFiles in the project.
+ */
+ Iterator<IJpaFile> jpaFiles();
+
+ /**
+ * Return a JavaPersistentType for the IType, if it exists, null otherwise.
+ */
+ JavaPersistentType findJavaPersistentType(IType type);
+
+ /**
+ * Reconnect the model together, recalculating default values as needed
+ */
+ void resynch();
+
+ /**
+ * Returns all the validation messages for this project
+ */
+ Iterator<IMessage> validationMessages();
+
+ ConnectionProfile connectionProfile();
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaRootContentNode.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaRootContentNode.java
new file mode 100644
index 0000000000..763e65e7ca
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaRootContentNode.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal;
+
+import org.eclipse.jdt.core.ElementChangedEvent;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IJpa Root Content Node</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.IJpaRootContentNode#getJpaFile <em>Jpa File</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaRootContentNode()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IJpaRootContentNode extends IJpaContentNode
+{
+ /**
+ * Returns the value of the '<em><b>Jpa File</b></em>' container reference.
+ * The default value is <code>""</code>.
+ * It is bidirectional and its opposite is '{@link org.eclipse.jpt.core.internal.JpaFile#getContent <em>Content</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Jpa File</em>' container reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Jpa File</em>' container reference.
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaRootContentNode_JpaFile()
+ * @see org.eclipse.jpt.core.internal.JpaFile#getContent
+ * @model opposite="content" changeable="false"
+ * @generated
+ */
+ IJpaFile getJpaFile();
+
+ /**
+ * Return the content node corresponding to the given offset in the source.
+ * This may (and often will) be <code>null</code>.
+ */
+ IJpaContentNode getContentNode(int offset);
+
+ /**
+ * Handle java change as befits this file content
+ */
+ void handleJavaElementChangedEvent(ElementChangedEvent event);
+
+ /**
+ * Dispose before removed from model
+ */
+ void dispose();
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaSourceObject.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaSourceObject.java
new file mode 100644
index 0000000000..4cb58e7ee8
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IJpaSourceObject.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This program and
+ * the accompanying materials are made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal;
+
+/**
+ * A JPA object that can be mapped to a source location, contained within a
+ * JPA file.
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaSourceObject()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IJpaSourceObject extends IJpaEObject
+{
+ /**
+ * Return the JPA file containing this object.
+ */
+ IJpaFile getJpaFile();
+
+ /**
+ * Return the source location for this object.
+ */
+ ITextRange getTextRange();
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IMappingKeys.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IMappingKeys.java
new file mode 100644
index 0000000000..f219fb0a6e
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IMappingKeys.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal;
+
+public interface IMappingKeys
+{
+ String ENTITY_TYPE_MAPPING_KEY = "entity";
+ String MAPPED_SUPERCLASS_TYPE_MAPPING_KEY = "mappedSuperclass";
+ String EMBEDDABLE_TYPE_MAPPING_KEY = "embeddable";
+ String NULL_TYPE_MAPPING_KEY = null;
+
+ String BASIC_ATTRIBUTE_MAPPING_KEY = "basic";
+ String ID_ATTRIBUTE_MAPPING_KEY = "id";
+ String MANY_TO_MANY_ATTRIBUTE_MAPPING_KEY = "manyToMany";
+ String MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY = "manyToOne";
+ String ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY = "oneToOne";
+ String ONE_TO_MANY_ATTRIBUTE_MAPPING_KEY = "oneToMany";
+ String EMBEDDED_ATTRIBUTE_MAPPING_KEY = "embedded";
+ String EMBEDDED_ID_ATTRIBUTE_MAPPING_KEY = "embeddedId";
+ String TRANSIENT_ATTRIBUTE_MAPPING_KEY = "transient";
+ String VERSION_ATTRIBUTE_MAPPING_KEY = "version";
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IPersistentAttribute.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IPersistentAttribute.java
new file mode 100644
index 0000000000..39bfb346f1
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IPersistentAttribute.java
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal;
+
+import java.util.Iterator;
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IPersistent Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.IPersistentAttribute#getMappingKey <em>Mapping Key</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIPersistentAttribute()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IPersistentAttribute extends IJpaContentNode
+{
+ /**
+ * Returns the value of the '<em><b>Mapping Key</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Mapping Key</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Mapping Key</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIPersistentAttribute_MappingKey()
+ * @model required="true" changeable="false"
+ * @generated
+ */
+ String getMappingKey();
+
+ void setMappingKey(String value, boolean default_);
+
+ /**
+ * Returns an iterator on all mapping keys that are available for this attribute.
+ */
+ Iterator candidateMappingKeys();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation" required="true"
+ * @generated
+ */
+ IAttributeMapping getMapping();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model required="true"
+ * @generated
+ */
+ ITypeMapping typeMapping();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Return the java Attribute that this IPersistentAttribute is associated with
+ * @return
+ */
+ Attribute getAttribute();
+
+ String defaultKey();
+
+ /**
+ * If the attribute is mapped to a primary key column, return the
+ * column's name, otherwise return null.
+ */
+ String primaryKeyColumnName();
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IPersistentType.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IPersistentType.java
new file mode 100644
index 0000000000..324f0c79b6
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IPersistentType.java
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal;
+
+import java.util.Iterator;
+import org.eclipse.jdt.core.IType;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IPersistent Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.IPersistentType#getMappingKey <em>Mapping Key</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIPersistentType()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IPersistentType extends IJpaContentNode
+{
+ /**
+ * Returns the value of the '<em><b>Mapping Key</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Mapping Key</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Mapping Key</em>' attribute.
+ * @see #setMappingKey(String)
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIPersistentType_MappingKey()
+ * @model required="true"
+ * @generated
+ */
+ String getMappingKey();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.IPersistentType#getMappingKey <em>Mapping Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Mapping Key</em>' attribute.
+ * @see #getMappingKey()
+ * @generated
+ */
+ void setMappingKey(String value);
+
+ /**
+ * Returns an iterator on all mapping keys that are available for this type.
+ */
+ Iterator<String> candidateMappingKeys();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Mapping</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @model kind="operation" required="true"
+ * @generated
+ */
+ ITypeMapping getMapping();
+
+ /**
+ * Return the parent IPersistentType from the inheritance hierarchy.
+ * If the java inheritance parent is not a IPersistentType then continue
+ * up the hierarchy. Return null if this persistentType is the root
+ * persistent type.
+ * @model
+ * @generated
+ */
+ IPersistentType parentPersistentType();
+
+ /**
+ * Return a read-only iterator of the contained IPersistentAttributes
+ * @return
+ */
+ Iterator<IPersistentAttribute> attributes();
+
+ /**
+ * Return a read-only iterator of the all the IPersistentAttributes
+ * in the hierarchy
+ * @return
+ */
+ Iterator<IPersistentAttribute> allAttributes();
+
+ Iterator<IPersistentType> inheritanceHierarchy();
+
+ /**
+ * Return the corresponding JDT IType, if it resolves to a single IType
+ */
+ IType findJdtType();
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/ITextRange.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/ITextRange.java
new file mode 100644
index 0000000000..9636f5078f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/ITextRange.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal;
+
+/**
+ * A text range defines the offset into and length of a piece of text
+ * <p>
+ * This interface is not intended to be implemented by clients.
+ * </p>
+ */
+public interface ITextRange
+{
+
+ /**
+ * Returns the length of the text.
+ *
+ * @return the length of the text
+ */
+ int getLength();
+
+ /**
+ * Returns the offset of the text.
+ *
+ * @return the offset of the text
+ */
+ int getOffset();
+
+ /**
+ * Retruns the line number in the text
+ *
+ * @return line number
+ */
+ int getLineNumber();
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/ITypeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/ITypeMapping.java
new file mode 100644
index 0000000000..8329aac842
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/ITypeMapping.java
@@ -0,0 +1,128 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal;
+
+import java.util.Iterator;
+import org.eclipse.jpt.core.internal.mappings.ITable;
+import org.eclipse.jpt.db.internal.Table;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>I Type Mapping</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.ITypeMapping#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.ITypeMapping#getTableName <em>Table Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getITypeMapping()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface ITypeMapping extends IJpaSourceObject
+{
+ /**
+ * Return a unique key for the ITypeMapping. If this is defined in
+ * an extension they should be equal.
+ * @return
+ */
+ String getKey();
+
+ IPersistentType getPersistentType();
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getITypeMapping_Name()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Returns the value of the '<em><b>Table Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Table Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Table Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getITypeMapping_TableName()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated
+ */
+ String getTableName();
+
+ /**
+ * Return the type mapping's "associated" tables, which includes the
+ * primary table and the collection of secondary tables.
+ */
+ Iterator<ITable> associatedTables();
+
+ /**
+ * Return the type mapping's "associated" tables, which includes the
+ * primary table and the collection of secondary tables, as well as all
+ * inherited "associated" tables.
+ */
+ Iterator<ITable> associatedTablesIncludingInherited();
+
+ /**
+ * Return the names of the type mapping's "associated" tables,
+ * which includes the primary table and the collection of secondary
+ * tables, as well as the names of all the inherited "associated" tables.
+ */
+ Iterator<String> associatedTableNamesIncludingInherited();
+
+ /**
+ * return the resolved primary db table
+ */
+ Table primaryDbTable();
+
+ /**
+ * return the resolved associated db table with the passed in name
+ */
+ Table dbTable(String tableName);
+
+ /**
+ * Return whether the specified table is invalid for any annotations
+ * associated with the type mapping.
+ */
+ boolean tableNameIsInvalid(String tableName);
+
+ /**
+ * Return an Iterator of attribute names. The attributes must be BasicMappings or IdMappings
+ * found in any MappedSuperclass in the inheritance hierarchy
+ */
+ Iterator<String> overridableAttributeNames();
+
+ /**
+ * Return an Iterator of attribute names. The attributes must be OneToOneMappings or ManyToOneMappings
+ * found in any MappedSuperclass in the inheritance hierarchy
+ */
+ Iterator<String> overridableAssociationNames();
+
+ /**
+ * Return whether the given attribute mapping key is valid for this particular
+ * type mapping
+ * (for example, id's are not valid for an embeddable type mapping)
+ */
+ boolean attributeMappingKeyAllowed(String attributeMappingKey);
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IXmlEObject.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IXmlEObject.java
new file mode 100644
index 0000000000..9e10d438d8
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/IXmlEObject.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IXml EObject</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIXmlEObject()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IXmlEObject extends IJpaEObject, IJpaSourceObject
+{
+ boolean isAllFeaturesUnset();
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCoreFactory.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCoreFactory.java
new file mode 100644
index 0000000000..38235cd132
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCoreFactory.java
@@ -0,0 +1,209 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal;
+
+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;
+
+/**
+ * <!-- 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.jpt.core.internal.JpaCorePackage
+ * @generated
+ */
+public class JpaCoreFactory extends EFactoryImpl
+{
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final JpaCoreFactory eINSTANCE = init();
+
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static JpaCoreFactory init() {
+ try {
+ JpaCoreFactory theJpaCoreFactory = (JpaCoreFactory) EPackage.Registry.INSTANCE.getEFactory("jpt.core.xmi");
+ if (theJpaCoreFactory != null) {
+ return theJpaCoreFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new JpaCoreFactory();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JpaCoreFactory() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case JpaCorePackage.JPA_MODEL :
+ return createJpaModel();
+ case JpaCorePackage.JPA_PROJECT :
+ return createJpaProject();
+ case JpaCorePackage.JPA_DATA_SOURCE :
+ return createJpaDataSource();
+ case JpaCorePackage.JPA_FILE :
+ return createJpaFile();
+ case JpaCorePackage.NULL_TYPE_MAPPING :
+ return createNullTypeMapping();
+ default :
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object createFromString(EDataType eDataType, String initialValue) {
+ switch (eDataType.getClassifierID()) {
+ case JpaCorePackage.ACCESS_TYPE :
+ return createAccessTypeFromString(eDataType, initialValue);
+ default :
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String convertToString(EDataType eDataType, Object instanceValue) {
+ switch (eDataType.getClassifierID()) {
+ case JpaCorePackage.ACCESS_TYPE :
+ return convertAccessTypeToString(eDataType, instanceValue);
+ default :
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JpaModel createJpaModel() {
+ JpaModel jpaModel = new JpaModel();
+ return jpaModel;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JpaProject createJpaProject() {
+ JpaProject jpaProject = new JpaProject();
+ return jpaProject;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JpaDataSource createJpaDataSource() {
+ JpaDataSource jpaDataSource = new JpaDataSource();
+ return jpaDataSource;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JpaFile createJpaFile() {
+ JpaFile jpaFile = new JpaFile();
+ return jpaFile;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NullTypeMapping createNullTypeMapping() {
+ NullTypeMapping nullTypeMapping = new NullTypeMapping();
+ return nullTypeMapping;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AccessType createAccessTypeFromString(EDataType eDataType, String initialValue) {
+ AccessType result = AccessType.get(initialValue);
+ if (result == null)
+ throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertAccessTypeToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JpaCorePackage getJpaCorePackage() {
+ return (JpaCorePackage) getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static JpaCorePackage getPackage() {
+ return JpaCorePackage.eINSTANCE;
+ }
+} //JpaCoreFactory
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCoreMessages.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCoreMessages.java
new file mode 100644
index 0000000000..c003a6c600
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCoreMessages.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal;
+
+import org.eclipse.osgi.util.NLS;
+
+public class JpaCoreMessages extends NLS
+{
+ private static final String BUNDLE_NAME = "jpa_core"; //$NON-NLS-1$
+
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, JpaCoreMessages.class);
+ }
+
+ public static String VALIDATE_PLATFORM_NOT_SPECIFIED;
+
+ public static String VALIDATE_CONNECTION_NOT_SPECIFIED;
+
+ public static String VALIDATE_CONNECTION_NOT_CONNECTED;
+
+ public static String SYNCHRONIZE_CLASSES_JOB;
+
+ public static String SYNCHRONIZING_CLASSES_TASK;
+
+ public static String INVALID_PERSISTENCE_XML_CONTENT;
+
+ public static String ERROR_WRITING_FILE;
+
+
+ private JpaCoreMessages() {
+ throw new UnsupportedOperationException();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCorePackage.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCorePackage.java
new file mode 100644
index 0000000000..32aa468216
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCorePackage.java
@@ -0,0 +1,1783 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+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.jem.java.JavaRefPackage;
+import org.eclipse.jpt.core.internal.content.java.JpaJavaPackage;
+import org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.content.persistence.PersistencePackage;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+
+/**
+ * <!-- 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.jpt.core.internal.JpaCoreFactory
+ * @model kind="package"
+ * @generated
+ */
+public class JpaCorePackage extends EPackageImpl
+{
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNAME = "internal";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNS_URI = "jpt.core.xmi";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNS_PREFIX = "jpt.core";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final JpaCorePackage eINSTANCE = org.eclipse.jpt.core.internal.JpaCorePackage.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.IJpaModel <em>IJpa Model</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaModel
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaModel()
+ * @generated
+ */
+ public static final int IJPA_MODEL = 0;
+
+ /**
+ * The number of structural features of the '<em>IJpa Model</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJPA_MODEL_FEATURE_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.IJpaEObject <em>IJpa EObject</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaEObject
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaEObject()
+ * @generated
+ */
+ public static final int IJPA_EOBJECT = 2;
+
+ /**
+ * The number of structural features of the '<em>IJpa EObject</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJPA_EOBJECT_FEATURE_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.JpaEObject <em>Jpa EObject</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.JpaEObject
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaEObject()
+ * @generated
+ */
+ public static final int JPA_EOBJECT = 3;
+
+ /**
+ * The number of structural features of the '<em>Jpa EObject</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JPA_EOBJECT_FEATURE_COUNT = IJPA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.JpaModel <em>Jpa Model</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.JpaModel
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaModel()
+ * @generated
+ */
+ public static final int JPA_MODEL = 1;
+
+ /**
+ * The feature id for the '<em><b>Projects</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JPA_MODEL__PROJECTS = JPA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Jpa Model</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JPA_MODEL_FEATURE_COUNT = JPA_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.XmlEObject <em>Xml EObject</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.XmlEObject
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getXmlEObject()
+ * @generated
+ */
+ public static final int XML_EOBJECT = 13;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.IJpaProject <em>IJpa Project</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaProject
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaProject()
+ * @generated
+ */
+ public static final int IJPA_PROJECT = 4;
+
+ /**
+ * The number of structural features of the '<em>IJpa Project</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJPA_PROJECT_FEATURE_COUNT = IJPA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.JpaProject <em>Jpa Project</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.JpaProject
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaProject()
+ * @generated
+ */
+ public static final int JPA_PROJECT = 5;
+
+ /**
+ * The feature id for the '<em><b>Platform</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JPA_PROJECT__PLATFORM = JPA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Data Source</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JPA_PROJECT__DATA_SOURCE = JPA_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Files</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JPA_PROJECT__FILES = JPA_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Jpa Project</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JPA_PROJECT_FEATURE_COUNT = JPA_EOBJECT_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.IJpaPlatform <em>IJpa Platform</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaPlatform
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaPlatform()
+ * @generated
+ */
+ public static final int IJPA_PLATFORM = 6;
+
+ /**
+ * The number of structural features of the '<em>IJpa Platform</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJPA_PLATFORM_FEATURE_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.IJpaDataSource <em>IJpa Data Source</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaDataSource
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaDataSource()
+ * @generated
+ */
+ public static final int IJPA_DATA_SOURCE = 7;
+
+ /**
+ * The number of structural features of the '<em>IJpa Data Source</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJPA_DATA_SOURCE_FEATURE_COUNT = IJPA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.JpaDataSource <em>Jpa Data Source</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.JpaDataSource
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaDataSource()
+ * @generated
+ */
+ public static final int JPA_DATA_SOURCE = 8;
+
+ /**
+ * The feature id for the '<em><b>Connection Profile Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JPA_DATA_SOURCE__CONNECTION_PROFILE_NAME = JPA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Jpa Data Source</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JPA_DATA_SOURCE_FEATURE_COUNT = JPA_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.IJpaFile <em>IJpa File</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaFile
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaFile()
+ * @generated
+ */
+ public static final int IJPA_FILE = 9;
+
+ /**
+ * The number of structural features of the '<em>IJpa File</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJPA_FILE_FEATURE_COUNT = IJPA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.JpaFile <em>Jpa File</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.JpaFile
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaFile()
+ * @generated
+ */
+ public static final int JPA_FILE = 10;
+
+ /**
+ * The feature id for the '<em><b>Content Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JPA_FILE__CONTENT_ID = JPA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Content</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JPA_FILE__CONTENT = JPA_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Jpa File</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JPA_FILE_FEATURE_COUNT = JPA_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.IJpaSourceObject <em>IJpa Source Object</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaSourceObject
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaSourceObject()
+ * @generated
+ */
+ public static final int IJPA_SOURCE_OBJECT = 11;
+
+ /**
+ * The number of structural features of the '<em>IJpa Source Object</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJPA_SOURCE_OBJECT_FEATURE_COUNT = IJPA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.IXmlEObject <em>IXml EObject</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IXmlEObject
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIXmlEObject()
+ * @generated
+ */
+ public static final int IXML_EOBJECT = 12;
+
+ /**
+ * The number of structural features of the '<em>IXml EObject</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IXML_EOBJECT_FEATURE_COUNT = IJPA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Xml EObject</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_EOBJECT_FEATURE_COUNT = JPA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.IJpaContentNode <em>IJpa Content Node</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaContentNode
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaContentNode()
+ * @generated
+ */
+ public static final int IJPA_CONTENT_NODE = 14;
+
+ /**
+ * The number of structural features of the '<em>IJpa Content Node</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJPA_CONTENT_NODE_FEATURE_COUNT = IJPA_SOURCE_OBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.IJpaRootContentNode <em>IJpa Root Content Node</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaRootContentNode
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaRootContentNode()
+ * @generated
+ */
+ public static final int IJPA_ROOT_CONTENT_NODE = 15;
+
+ /**
+ * The feature id for the '<em><b>Jpa File</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJPA_ROOT_CONTENT_NODE__JPA_FILE = IJPA_CONTENT_NODE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>IJpa Root Content Node</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJPA_ROOT_CONTENT_NODE_FEATURE_COUNT = IJPA_CONTENT_NODE_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.IPersistentType <em>IPersistent Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IPersistentType
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIPersistentType()
+ * @generated
+ */
+ public static final int IPERSISTENT_TYPE = 16;
+
+ /**
+ * The feature id for the '<em><b>Mapping Key</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IPERSISTENT_TYPE__MAPPING_KEY = IJPA_CONTENT_NODE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>IPersistent Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IPERSISTENT_TYPE_FEATURE_COUNT = IJPA_CONTENT_NODE_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.ITypeMapping <em>IType Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.ITypeMapping
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getITypeMapping()
+ * @generated
+ */
+ public static final int ITYPE_MAPPING = 17;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITYPE_MAPPING__NAME = IJPA_SOURCE_OBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Table Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITYPE_MAPPING__TABLE_NAME = IJPA_SOURCE_OBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>IType Mapping</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITYPE_MAPPING_FEATURE_COUNT = IJPA_SOURCE_OBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.NullTypeMapping <em>Null Type Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.NullTypeMapping
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getNullTypeMapping()
+ * @generated
+ */
+ public static final int NULL_TYPE_MAPPING = 18;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int NULL_TYPE_MAPPING__NAME = JPA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Table Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int NULL_TYPE_MAPPING__TABLE_NAME = JPA_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Null Type Mapping</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int NULL_TYPE_MAPPING_FEATURE_COUNT = JPA_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.IPersistentAttribute <em>IPersistent Attribute</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IPersistentAttribute
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIPersistentAttribute()
+ * @generated
+ */
+ public static final int IPERSISTENT_ATTRIBUTE = 19;
+
+ /**
+ * The feature id for the '<em><b>Mapping Key</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IPERSISTENT_ATTRIBUTE__MAPPING_KEY = IJPA_CONTENT_NODE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>IPersistent Attribute</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IPERSISTENT_ATTRIBUTE_FEATURE_COUNT = IJPA_CONTENT_NODE_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.IAttributeMapping <em>IAttribute Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IAttributeMapping
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIAttributeMapping()
+ * @generated
+ */
+ public static final int IATTRIBUTE_MAPPING = 20;
+
+ /**
+ * The number of structural features of the '<em>IAttribute Mapping</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IATTRIBUTE_MAPPING_FEATURE_COUNT = IJPA_SOURCE_OBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.AccessType <em>Access Type</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.AccessType
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getAccessType()
+ * @generated
+ */
+ public static final int ACCESS_TYPE = 21;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iJpaModelEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass jpaModelEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iJpaEObjectEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass jpaEObjectEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlEObjectEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iJpaProjectEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass jpaProjectEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iJpaPlatformEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iJpaDataSourceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass jpaDataSourceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iJpaFileEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass jpaFileEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iJpaSourceObjectEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iXmlEObjectEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iJpaContentNodeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iJpaRootContentNodeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iPersistentTypeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iTypeMappingEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass nullTypeMappingEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iPersistentAttributeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iAttributeMappingEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum accessTypeEEnum = 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.jpt.core.internal.JpaCorePackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private JpaCorePackage() {
+ super(eNS_URI, JpaCoreFactory.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. Simple
+ * dependencies are satisfied by calling this method on all
+ * dependent packages before doing anything else. This method drives
+ * initialization for interdependent packages directly, in parallel
+ * with this package, itself.
+ * <p>Of this package and its interdependencies, all packages which
+ * have not yet been registered by their URI values are first created
+ * and registered. The packages are then initialized in two steps:
+ * meta-model objects for all of the packages are created before any
+ * are initialized, since one package's meta-model objects may refer to
+ * those of another.
+ * <p>Invocation of this method will not affect any packages that have
+ * already been initialized.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static JpaCorePackage init() {
+ if (isInited)
+ return (JpaCorePackage) EPackage.Registry.INSTANCE.getEPackage(JpaCorePackage.eNS_URI);
+ // Obtain or create and register package
+ JpaCorePackage theJpaCorePackage = (JpaCorePackage) (EPackage.Registry.INSTANCE.getEPackage(eNS_URI) instanceof JpaCorePackage ? EPackage.Registry.INSTANCE.getEPackage(eNS_URI) : new JpaCorePackage());
+ isInited = true;
+ // Initialize simple dependencies
+ EcorePackage.eINSTANCE.eClass();
+ JavaRefPackage.eINSTANCE.eClass();
+ // Obtain or create and register interdependencies
+ JpaCoreMappingsPackage theJpaCoreMappingsPackage = (JpaCoreMappingsPackage) (EPackage.Registry.INSTANCE.getEPackage(JpaCoreMappingsPackage.eNS_URI) instanceof JpaCoreMappingsPackage ? EPackage.Registry.INSTANCE.getEPackage(JpaCoreMappingsPackage.eNS_URI) : JpaCoreMappingsPackage.eINSTANCE);
+ JpaJavaPackage theJpaJavaPackage = (JpaJavaPackage) (EPackage.Registry.INSTANCE.getEPackage(JpaJavaPackage.eNS_URI) instanceof JpaJavaPackage ? EPackage.Registry.INSTANCE.getEPackage(JpaJavaPackage.eNS_URI) : JpaJavaPackage.eINSTANCE);
+ JpaJavaMappingsPackage theJpaJavaMappingsPackage = (JpaJavaMappingsPackage) (EPackage.Registry.INSTANCE.getEPackage(JpaJavaMappingsPackage.eNS_URI) instanceof JpaJavaMappingsPackage ? EPackage.Registry.INSTANCE.getEPackage(JpaJavaMappingsPackage.eNS_URI) : JpaJavaMappingsPackage.eINSTANCE);
+ OrmPackage theOrmPackage = (OrmPackage) (EPackage.Registry.INSTANCE.getEPackage(OrmPackage.eNS_URI) instanceof OrmPackage ? EPackage.Registry.INSTANCE.getEPackage(OrmPackage.eNS_URI) : OrmPackage.eINSTANCE);
+ PersistencePackage thePersistencePackage = (PersistencePackage) (EPackage.Registry.INSTANCE.getEPackage(PersistencePackage.eNS_URI) instanceof PersistencePackage ? EPackage.Registry.INSTANCE.getEPackage(PersistencePackage.eNS_URI) : PersistencePackage.eINSTANCE);
+ // Create package meta-data objects
+ theJpaCorePackage.createPackageContents();
+ theJpaCoreMappingsPackage.createPackageContents();
+ theJpaJavaPackage.createPackageContents();
+ theJpaJavaMappingsPackage.createPackageContents();
+ theOrmPackage.createPackageContents();
+ thePersistencePackage.createPackageContents();
+ // Initialize created meta-data
+ theJpaCorePackage.initializePackageContents();
+ theJpaCoreMappingsPackage.initializePackageContents();
+ theJpaJavaPackage.initializePackageContents();
+ theJpaJavaMappingsPackage.initializePackageContents();
+ theOrmPackage.initializePackageContents();
+ thePersistencePackage.initializePackageContents();
+ // Mark meta-data to indicate it can't be changed
+ theJpaCorePackage.freeze();
+ return theJpaCorePackage;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.IJpaModel <em>IJpa Model</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IJpa Model</em>'.
+ * @see org.eclipse.jpt.core.internal.IJpaModel
+ * @generated
+ */
+ public EClass getIJpaModel() {
+ return iJpaModelEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.JpaModel <em>Jpa Model</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Jpa Model</em>'.
+ * @see org.eclipse.jpt.core.internal.JpaModel
+ * @generated
+ */
+ public EClass getJpaModel() {
+ return jpaModelEClass;
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.JpaModel#getProjects <em>Projects</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Projects</em>'.
+ * @see org.eclipse.jpt.core.internal.JpaModel#getProjects()
+ * @see #getJpaModel()
+ * @generated
+ */
+ public EReference getJpaModel_Projects() {
+ return (EReference) jpaModelEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.IJpaEObject <em>IJpa EObject</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IJpa EObject</em>'.
+ * @see org.eclipse.jpt.core.internal.IJpaEObject
+ * @generated
+ */
+ public EClass getIJpaEObject() {
+ return iJpaEObjectEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.JpaEObject <em>Jpa EObject</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Jpa EObject</em>'.
+ * @see org.eclipse.jpt.core.internal.JpaEObject
+ * @generated
+ */
+ public EClass getJpaEObject() {
+ return jpaEObjectEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.XmlEObject <em>Xml EObject</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml EObject</em>'.
+ * @see org.eclipse.jpt.core.internal.XmlEObject
+ * @generated
+ */
+ public EClass getXmlEObject() {
+ return xmlEObjectEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.IJpaProject <em>IJpa Project</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IJpa Project</em>'.
+ * @see org.eclipse.jpt.core.internal.IJpaProject
+ * @generated
+ */
+ public EClass getIJpaProject() {
+ return iJpaProjectEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.JpaProject <em>Jpa Project</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Jpa Project</em>'.
+ * @see org.eclipse.jpt.core.internal.JpaProject
+ * @generated
+ */
+ public EClass getJpaProject() {
+ return jpaProjectEClass;
+ }
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.jpt.core.internal.JpaProject#getPlatform <em>Platform</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Platform</em>'.
+ * @see org.eclipse.jpt.core.internal.JpaProject#getPlatform()
+ * @see #getJpaProject()
+ * @generated
+ */
+ public EReference getJpaProject_Platform() {
+ return (EReference) jpaProjectEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.jpt.core.internal.JpaProject#getDataSource <em>Data Source</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Data Source</em>'.
+ * @see org.eclipse.jpt.core.internal.JpaProject#getDataSource()
+ * @see #getJpaProject()
+ * @generated
+ */
+ public EReference getJpaProject_DataSource() {
+ return (EReference) jpaProjectEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.JpaProject#getFiles <em>Files</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Files</em>'.
+ * @see org.eclipse.jpt.core.internal.JpaProject#getFiles()
+ * @see #getJpaProject()
+ * @generated
+ */
+ public EReference getJpaProject_Files() {
+ return (EReference) jpaProjectEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.IJpaPlatform <em>IJpa Platform</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IJpa Platform</em>'.
+ * @see org.eclipse.jpt.core.internal.IJpaPlatform
+ * @generated
+ */
+ public EClass getIJpaPlatform() {
+ return iJpaPlatformEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.IJpaDataSource <em>IJpa Data Source</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IJpa Data Source</em>'.
+ * @see org.eclipse.jpt.core.internal.IJpaDataSource
+ * @generated
+ */
+ public EClass getIJpaDataSource() {
+ return iJpaDataSourceEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.JpaDataSource <em>Jpa Data Source</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Jpa Data Source</em>'.
+ * @see org.eclipse.jpt.core.internal.JpaDataSource
+ * @generated
+ */
+ public EClass getJpaDataSource() {
+ return jpaDataSourceEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.JpaDataSource#getConnectionProfileName <em>Connection Profile Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Connection Profile Name</em>'.
+ * @see org.eclipse.jpt.core.internal.JpaDataSource#getConnectionProfileName()
+ * @see #getJpaDataSource()
+ * @generated
+ */
+ public EAttribute getJpaDataSource_ConnectionProfileName() {
+ return (EAttribute) jpaDataSourceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.IJpaFile <em>IJpa File</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IJpa File</em>'.
+ * @see org.eclipse.jpt.core.internal.IJpaFile
+ * @generated
+ */
+ public EClass getIJpaFile() {
+ return iJpaFileEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.JpaFile <em>Jpa File</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Jpa File</em>'.
+ * @see org.eclipse.jpt.core.internal.JpaFile
+ * @generated
+ */
+ public EClass getJpaFile() {
+ return jpaFileEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.JpaFile#getContentId <em>Content Id</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Content Id</em>'.
+ * @see org.eclipse.jpt.core.internal.JpaFile#getContentId()
+ * @see #getJpaFile()
+ * @generated
+ */
+ public EAttribute getJpaFile_ContentId() {
+ return (EAttribute) jpaFileEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.jpt.core.internal.JpaFile#getContent <em>Content</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Content</em>'.
+ * @see org.eclipse.jpt.core.internal.JpaFile#getContent()
+ * @see #getJpaFile()
+ * @generated
+ */
+ public EReference getJpaFile_Content() {
+ return (EReference) jpaFileEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.IJpaSourceObject <em>IJpa Source Object</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IJpa Source Object</em>'.
+ * @see org.eclipse.jpt.core.internal.IJpaSourceObject
+ * @generated
+ */
+ public EClass getIJpaSourceObject() {
+ return iJpaSourceObjectEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.IXmlEObject <em>IXml EObject</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IXml EObject</em>'.
+ * @see org.eclipse.jpt.core.internal.IXmlEObject
+ * @generated
+ */
+ public EClass getIXmlEObject() {
+ return iXmlEObjectEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.IJpaContentNode <em>IJpa Content Node</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IJpa Content Node</em>'.
+ * @see org.eclipse.jpt.core.internal.IJpaContentNode
+ * @generated
+ */
+ public EClass getIJpaContentNode() {
+ return iJpaContentNodeEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.IJpaRootContentNode <em>IJpa Root Content Node</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IJpa Root Content Node</em>'.
+ * @see org.eclipse.jpt.core.internal.IJpaRootContentNode
+ * @generated
+ */
+ public EClass getIJpaRootContentNode() {
+ return iJpaRootContentNodeEClass;
+ }
+
+ /**
+ * Returns the meta object for the container reference '{@link org.eclipse.jpt.core.internal.IJpaRootContentNode#getJpaFile <em>Jpa File</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the container reference '<em>Jpa File</em>'.
+ * @see org.eclipse.jpt.core.internal.IJpaRootContentNode#getJpaFile()
+ * @see #getIJpaRootContentNode()
+ * @generated
+ */
+ public EReference getIJpaRootContentNode_JpaFile() {
+ return (EReference) iJpaRootContentNodeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.IPersistentType <em>IPersistent Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IPersistent Type</em>'.
+ * @see org.eclipse.jpt.core.internal.IPersistentType
+ * @generated
+ */
+ public EClass getIPersistentType() {
+ return iPersistentTypeEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.IPersistentType#getMappingKey <em>Mapping Key</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Mapping Key</em>'.
+ * @see org.eclipse.jpt.core.internal.IPersistentType#getMappingKey()
+ * @see #getIPersistentType()
+ * @generated
+ */
+ public EAttribute getIPersistentType_MappingKey() {
+ return (EAttribute) iPersistentTypeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.ITypeMapping <em>IType Mapping</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IType Mapping</em>'.
+ * @see org.eclipse.jpt.core.internal.ITypeMapping
+ * @generated
+ */
+ public EClass getITypeMapping() {
+ return iTypeMappingEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.ITypeMapping#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.jpt.core.internal.ITypeMapping#getName()
+ * @see #getITypeMapping()
+ * @generated
+ */
+ public EAttribute getITypeMapping_Name() {
+ return (EAttribute) iTypeMappingEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.ITypeMapping#getTableName <em>Table Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Table Name</em>'.
+ * @see org.eclipse.jpt.core.internal.ITypeMapping#getTableName()
+ * @see #getITypeMapping()
+ * @generated
+ */
+ public EAttribute getITypeMapping_TableName() {
+ return (EAttribute) iTypeMappingEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.NullTypeMapping <em>Null Type Mapping</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Null Type Mapping</em>'.
+ * @see org.eclipse.jpt.core.internal.NullTypeMapping
+ * @generated
+ */
+ public EClass getNullTypeMapping() {
+ return nullTypeMappingEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.IPersistentAttribute <em>IPersistent Attribute</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IPersistent Attribute</em>'.
+ * @see org.eclipse.jpt.core.internal.IPersistentAttribute
+ * @generated
+ */
+ public EClass getIPersistentAttribute() {
+ return iPersistentAttributeEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.IPersistentAttribute#getMappingKey <em>Mapping Key</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Mapping Key</em>'.
+ * @see org.eclipse.jpt.core.internal.IPersistentAttribute#getMappingKey()
+ * @see #getIPersistentAttribute()
+ * @generated
+ */
+ public EAttribute getIPersistentAttribute_MappingKey() {
+ return (EAttribute) iPersistentAttributeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.IAttributeMapping <em>IAttribute Mapping</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IAttribute Mapping</em>'.
+ * @see org.eclipse.jpt.core.internal.IAttributeMapping
+ * @generated
+ */
+ public EClass getIAttributeMapping() {
+ return iAttributeMappingEClass;
+ }
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.jpt.core.internal.AccessType <em>Access Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Access Type</em>'.
+ * @see org.eclipse.jpt.core.internal.AccessType
+ * @generated
+ */
+ public EEnum getAccessType() {
+ return accessTypeEEnum;
+ }
+
+ /**
+ * 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
+ */
+ public JpaCoreFactory getJpaCoreFactory() {
+ return (JpaCoreFactory) 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
+ iJpaModelEClass = createEClass(IJPA_MODEL);
+ jpaModelEClass = createEClass(JPA_MODEL);
+ createEReference(jpaModelEClass, JPA_MODEL__PROJECTS);
+ iJpaEObjectEClass = createEClass(IJPA_EOBJECT);
+ jpaEObjectEClass = createEClass(JPA_EOBJECT);
+ iJpaProjectEClass = createEClass(IJPA_PROJECT);
+ jpaProjectEClass = createEClass(JPA_PROJECT);
+ createEReference(jpaProjectEClass, JPA_PROJECT__PLATFORM);
+ createEReference(jpaProjectEClass, JPA_PROJECT__DATA_SOURCE);
+ createEReference(jpaProjectEClass, JPA_PROJECT__FILES);
+ iJpaPlatformEClass = createEClass(IJPA_PLATFORM);
+ iJpaDataSourceEClass = createEClass(IJPA_DATA_SOURCE);
+ jpaDataSourceEClass = createEClass(JPA_DATA_SOURCE);
+ createEAttribute(jpaDataSourceEClass, JPA_DATA_SOURCE__CONNECTION_PROFILE_NAME);
+ iJpaFileEClass = createEClass(IJPA_FILE);
+ jpaFileEClass = createEClass(JPA_FILE);
+ createEAttribute(jpaFileEClass, JPA_FILE__CONTENT_ID);
+ createEReference(jpaFileEClass, JPA_FILE__CONTENT);
+ iJpaSourceObjectEClass = createEClass(IJPA_SOURCE_OBJECT);
+ iXmlEObjectEClass = createEClass(IXML_EOBJECT);
+ xmlEObjectEClass = createEClass(XML_EOBJECT);
+ iJpaContentNodeEClass = createEClass(IJPA_CONTENT_NODE);
+ iJpaRootContentNodeEClass = createEClass(IJPA_ROOT_CONTENT_NODE);
+ createEReference(iJpaRootContentNodeEClass, IJPA_ROOT_CONTENT_NODE__JPA_FILE);
+ iPersistentTypeEClass = createEClass(IPERSISTENT_TYPE);
+ createEAttribute(iPersistentTypeEClass, IPERSISTENT_TYPE__MAPPING_KEY);
+ iTypeMappingEClass = createEClass(ITYPE_MAPPING);
+ createEAttribute(iTypeMappingEClass, ITYPE_MAPPING__NAME);
+ createEAttribute(iTypeMappingEClass, ITYPE_MAPPING__TABLE_NAME);
+ nullTypeMappingEClass = createEClass(NULL_TYPE_MAPPING);
+ iPersistentAttributeEClass = createEClass(IPERSISTENT_ATTRIBUTE);
+ createEAttribute(iPersistentAttributeEClass, IPERSISTENT_ATTRIBUTE__MAPPING_KEY);
+ iAttributeMappingEClass = createEClass(IATTRIBUTE_MAPPING);
+ // Create enums
+ accessTypeEEnum = createEEnum(ACCESS_TYPE);
+ }
+
+ /**
+ * <!-- 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
+ JpaCoreMappingsPackage theJpaCoreMappingsPackage = (JpaCoreMappingsPackage) EPackage.Registry.INSTANCE.getEPackage(JpaCoreMappingsPackage.eNS_URI);
+ EcorePackage theEcorePackage = (EcorePackage) EPackage.Registry.INSTANCE.getEPackage(EcorePackage.eNS_URI);
+ // Add subpackages
+ getESubpackages().add(theJpaCoreMappingsPackage);
+ // Create type parameters
+ // Set bounds for type parameters
+ // Add supertypes to classes
+ jpaModelEClass.getESuperTypes().add(this.getJpaEObject());
+ jpaModelEClass.getESuperTypes().add(this.getIJpaModel());
+ jpaEObjectEClass.getESuperTypes().add(this.getIJpaEObject());
+ iJpaProjectEClass.getESuperTypes().add(this.getIJpaEObject());
+ jpaProjectEClass.getESuperTypes().add(this.getJpaEObject());
+ jpaProjectEClass.getESuperTypes().add(this.getIJpaProject());
+ iJpaDataSourceEClass.getESuperTypes().add(this.getIJpaEObject());
+ jpaDataSourceEClass.getESuperTypes().add(this.getJpaEObject());
+ jpaDataSourceEClass.getESuperTypes().add(this.getIJpaDataSource());
+ iJpaFileEClass.getESuperTypes().add(this.getIJpaEObject());
+ jpaFileEClass.getESuperTypes().add(this.getJpaEObject());
+ jpaFileEClass.getESuperTypes().add(this.getIJpaFile());
+ iJpaSourceObjectEClass.getESuperTypes().add(this.getIJpaEObject());
+ iXmlEObjectEClass.getESuperTypes().add(this.getIJpaEObject());
+ iXmlEObjectEClass.getESuperTypes().add(this.getIJpaSourceObject());
+ xmlEObjectEClass.getESuperTypes().add(this.getJpaEObject());
+ xmlEObjectEClass.getESuperTypes().add(this.getIXmlEObject());
+ iJpaContentNodeEClass.getESuperTypes().add(this.getIJpaSourceObject());
+ iJpaRootContentNodeEClass.getESuperTypes().add(this.getIJpaContentNode());
+ iPersistentTypeEClass.getESuperTypes().add(this.getIJpaContentNode());
+ iTypeMappingEClass.getESuperTypes().add(this.getIJpaSourceObject());
+ nullTypeMappingEClass.getESuperTypes().add(this.getJpaEObject());
+ nullTypeMappingEClass.getESuperTypes().add(this.getITypeMapping());
+ nullTypeMappingEClass.getESuperTypes().add(this.getIJpaSourceObject());
+ iPersistentAttributeEClass.getESuperTypes().add(this.getIJpaContentNode());
+ iAttributeMappingEClass.getESuperTypes().add(this.getIJpaSourceObject());
+ // Initialize classes and features; add operations and parameters
+ initEClass(iJpaModelEClass, IJpaModel.class, "IJpaModel", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(jpaModelEClass, JpaModel.class, "JpaModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getJpaModel_Projects(), this.getIJpaProject(), null, "projects", null, 0, -1, JpaModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(iJpaEObjectEClass, IJpaEObject.class, "IJpaEObject", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ addEOperation(iJpaEObjectEClass, this.getIJpaProject(), "getJpaProject", 0, 1);
+ initEClass(jpaEObjectEClass, JpaEObject.class, "JpaEObject", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(iJpaProjectEClass, IJpaProject.class, "IJpaProject", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ addEOperation(iJpaProjectEClass, this.getIJpaModel(), "getModel", 1, 1);
+ addEOperation(iJpaProjectEClass, this.getIJpaPlatform(), "getPlatform", 1, 1);
+ EOperation op = addEOperation(iJpaProjectEClass, null, "setPlatform");
+ addEParameter(op, theEcorePackage.getEString(), "platformId", 1, 1);
+ addEOperation(iJpaProjectEClass, this.getIJpaDataSource(), "getDataSource", 1, 1);
+ op = addEOperation(iJpaProjectEClass, null, "setDataSource");
+ addEParameter(op, theEcorePackage.getEString(), "connectionProfileName", 1, 1);
+ initEClass(jpaProjectEClass, JpaProject.class, "JpaProject", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getJpaProject_Platform(), this.getIJpaPlatform(), null, "platform", null, 1, 1, JpaProject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getJpaProject_DataSource(), this.getIJpaDataSource(), null, "dataSource", null, 0, 1, JpaProject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getJpaProject_Files(), this.getIJpaFile(), null, "files", null, 0, -1, JpaProject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(iJpaPlatformEClass, IJpaPlatform.class, "IJpaPlatform", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(iJpaDataSourceEClass, IJpaDataSource.class, "IJpaDataSource", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ addEOperation(iJpaDataSourceEClass, theEcorePackage.getEString(), "getConnectionProfileName", 1, 1);
+ initEClass(jpaDataSourceEClass, JpaDataSource.class, "JpaDataSource", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getJpaDataSource_ConnectionProfileName(), ecorePackage.getEString(), "connectionProfileName", null, 1, 1, JpaDataSource.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEClass(iJpaFileEClass, IJpaFile.class, "IJpaFile", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ addEOperation(iJpaFileEClass, ecorePackage.getEString(), "getContentId", 1, 1);
+ addEOperation(iJpaFileEClass, this.getIJpaRootContentNode(), "getContent", 0, 1);
+ initEClass(jpaFileEClass, JpaFile.class, "JpaFile", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getJpaFile_ContentId(), ecorePackage.getEString(), "contentId", null, 1, 1, JpaFile.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getJpaFile_Content(), this.getIJpaRootContentNode(), this.getIJpaRootContentNode_JpaFile(), "content", null, 0, 1, JpaFile.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(iJpaSourceObjectEClass, IJpaSourceObject.class, "IJpaSourceObject", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ addEOperation(iJpaSourceObjectEClass, this.getIJpaFile(), "getJpaFile", 0, 1);
+ initEClass(iXmlEObjectEClass, IXmlEObject.class, "IXmlEObject", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(xmlEObjectEClass, XmlEObject.class, "XmlEObject", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(iJpaContentNodeEClass, IJpaContentNode.class, "IJpaContentNode", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ addEOperation(iJpaContentNodeEClass, this.getIJpaFile(), "getJpaFile", 1, 1);
+ initEClass(iJpaRootContentNodeEClass, IJpaRootContentNode.class, "IJpaRootContentNode", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getIJpaRootContentNode_JpaFile(), this.getIJpaFile(), this.getJpaFile_Content(), "jpaFile", "", 0, 1, IJpaRootContentNode.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(iPersistentTypeEClass, IPersistentType.class, "IPersistentType", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getIPersistentType_MappingKey(), ecorePackage.getEString(), "mappingKey", null, 1, 1, IPersistentType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ addEOperation(iPersistentTypeEClass, this.getITypeMapping(), "getMapping", 1, 1);
+ addEOperation(iPersistentTypeEClass, this.getIPersistentType(), "parentPersistentType", 0, 1);
+ initEClass(iTypeMappingEClass, ITypeMapping.class, "ITypeMapping", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getITypeMapping_Name(), ecorePackage.getEString(), "name", null, 0, 1, ITypeMapping.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEAttribute(getITypeMapping_TableName(), ecorePackage.getEString(), "tableName", null, 0, 1, ITypeMapping.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ addEOperation(iTypeMappingEClass, this.getIPersistentType(), "getPersistentType", 1, 1);
+ initEClass(nullTypeMappingEClass, NullTypeMapping.class, "NullTypeMapping", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(iPersistentAttributeEClass, IPersistentAttribute.class, "IPersistentAttribute", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getIPersistentAttribute_MappingKey(), ecorePackage.getEString(), "mappingKey", null, 1, 1, IPersistentAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ addEOperation(iPersistentAttributeEClass, this.getIAttributeMapping(), "getMapping", 1, 1);
+ addEOperation(iPersistentAttributeEClass, this.getITypeMapping(), "typeMapping", 1, 1);
+ addEOperation(iPersistentAttributeEClass, theEcorePackage.getEString(), "getName", 0, 1);
+ initEClass(iAttributeMappingEClass, IAttributeMapping.class, "IAttributeMapping", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ addEOperation(iAttributeMappingEClass, this.getIPersistentAttribute(), "getPersistentAttribute", 1, 1);
+ addEOperation(iAttributeMappingEClass, theEcorePackage.getEBoolean(), "isDefault", 0, 1);
+ // Initialize enums and add enum literals
+ initEEnum(accessTypeEEnum, AccessType.class, "AccessType");
+ addEEnumLiteral(accessTypeEEnum, AccessType.DEFAULT);
+ addEEnumLiteral(accessTypeEEnum, AccessType.PROPERTY);
+ addEEnumLiteral(accessTypeEEnum, AccessType.FIELD);
+ // Create resource
+ createResource(eNS_URI);
+ }
+ /**
+ * <!-- 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
+ */
+ public interface Literals
+ {
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.IJpaModel <em>IJpa Model</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaModel
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaModel()
+ * @generated
+ */
+ public static final EClass IJPA_MODEL = eINSTANCE.getIJpaModel();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.JpaModel <em>Jpa Model</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.JpaModel
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaModel()
+ * @generated
+ */
+ public static final EClass JPA_MODEL = eINSTANCE.getJpaModel();
+
+ /**
+ * The meta object literal for the '<em><b>Projects</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference JPA_MODEL__PROJECTS = eINSTANCE.getJpaModel_Projects();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.IJpaEObject <em>IJpa EObject</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaEObject
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaEObject()
+ * @generated
+ */
+ public static final EClass IJPA_EOBJECT = eINSTANCE.getIJpaEObject();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.JpaEObject <em>Jpa EObject</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.JpaEObject
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaEObject()
+ * @generated
+ */
+ public static final EClass JPA_EOBJECT = eINSTANCE.getJpaEObject();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.XmlEObject <em>Xml EObject</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.XmlEObject
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getXmlEObject()
+ * @generated
+ */
+ public static final EClass XML_EOBJECT = eINSTANCE.getXmlEObject();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.IJpaProject <em>IJpa Project</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaProject
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaProject()
+ * @generated
+ */
+ public static final EClass IJPA_PROJECT = eINSTANCE.getIJpaProject();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.JpaProject <em>Jpa Project</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.JpaProject
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaProject()
+ * @generated
+ */
+ public static final EClass JPA_PROJECT = eINSTANCE.getJpaProject();
+
+ /**
+ * The meta object literal for the '<em><b>Platform</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference JPA_PROJECT__PLATFORM = eINSTANCE.getJpaProject_Platform();
+
+ /**
+ * The meta object literal for the '<em><b>Data Source</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference JPA_PROJECT__DATA_SOURCE = eINSTANCE.getJpaProject_DataSource();
+
+ /**
+ * The meta object literal for the '<em><b>Files</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference JPA_PROJECT__FILES = eINSTANCE.getJpaProject_Files();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.IJpaPlatform <em>IJpa Platform</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaPlatform
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaPlatform()
+ * @generated
+ */
+ public static final EClass IJPA_PLATFORM = eINSTANCE.getIJpaPlatform();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.IJpaDataSource <em>IJpa Data Source</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaDataSource
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaDataSource()
+ * @generated
+ */
+ public static final EClass IJPA_DATA_SOURCE = eINSTANCE.getIJpaDataSource();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.JpaDataSource <em>Jpa Data Source</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.JpaDataSource
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaDataSource()
+ * @generated
+ */
+ public static final EClass JPA_DATA_SOURCE = eINSTANCE.getJpaDataSource();
+
+ /**
+ * The meta object literal for the '<em><b>Connection Profile Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute JPA_DATA_SOURCE__CONNECTION_PROFILE_NAME = eINSTANCE.getJpaDataSource_ConnectionProfileName();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.IJpaFile <em>IJpa File</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaFile
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaFile()
+ * @generated
+ */
+ public static final EClass IJPA_FILE = eINSTANCE.getIJpaFile();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.JpaFile <em>Jpa File</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.JpaFile
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaFile()
+ * @generated
+ */
+ public static final EClass JPA_FILE = eINSTANCE.getJpaFile();
+
+ /**
+ * The meta object literal for the '<em><b>Content Id</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute JPA_FILE__CONTENT_ID = eINSTANCE.getJpaFile_ContentId();
+
+ /**
+ * The meta object literal for the '<em><b>Content</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference JPA_FILE__CONTENT = eINSTANCE.getJpaFile_Content();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.IJpaSourceObject <em>IJpa Source Object</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaSourceObject
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaSourceObject()
+ * @generated
+ */
+ public static final EClass IJPA_SOURCE_OBJECT = eINSTANCE.getIJpaSourceObject();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.IXmlEObject <em>IXml EObject</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IXmlEObject
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIXmlEObject()
+ * @generated
+ */
+ public static final EClass IXML_EOBJECT = eINSTANCE.getIXmlEObject();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.IJpaContentNode <em>IJpa Content Node</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaContentNode
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaContentNode()
+ * @generated
+ */
+ public static final EClass IJPA_CONTENT_NODE = eINSTANCE.getIJpaContentNode();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.IJpaRootContentNode <em>IJpa Root Content Node</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IJpaRootContentNode
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIJpaRootContentNode()
+ * @generated
+ */
+ public static final EClass IJPA_ROOT_CONTENT_NODE = eINSTANCE.getIJpaRootContentNode();
+
+ /**
+ * The meta object literal for the '<em><b>Jpa File</b></em>' container reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IJPA_ROOT_CONTENT_NODE__JPA_FILE = eINSTANCE.getIJpaRootContentNode_JpaFile();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.IPersistentType <em>IPersistent Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IPersistentType
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIPersistentType()
+ * @generated
+ */
+ public static final EClass IPERSISTENT_TYPE = eINSTANCE.getIPersistentType();
+
+ /**
+ * The meta object literal for the '<em><b>Mapping Key</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IPERSISTENT_TYPE__MAPPING_KEY = eINSTANCE.getIPersistentType_MappingKey();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.ITypeMapping <em>IType Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.ITypeMapping
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getITypeMapping()
+ * @generated
+ */
+ public static final EClass ITYPE_MAPPING = eINSTANCE.getITypeMapping();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ITYPE_MAPPING__NAME = eINSTANCE.getITypeMapping_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Table Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ITYPE_MAPPING__TABLE_NAME = eINSTANCE.getITypeMapping_TableName();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.NullTypeMapping <em>Null Type Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.NullTypeMapping
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getNullTypeMapping()
+ * @generated
+ */
+ public static final EClass NULL_TYPE_MAPPING = eINSTANCE.getNullTypeMapping();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.IPersistentAttribute <em>IPersistent Attribute</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IPersistentAttribute
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIPersistentAttribute()
+ * @generated
+ */
+ public static final EClass IPERSISTENT_ATTRIBUTE = eINSTANCE.getIPersistentAttribute();
+
+ /**
+ * The meta object literal for the '<em><b>Mapping Key</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IPERSISTENT_ATTRIBUTE__MAPPING_KEY = eINSTANCE.getIPersistentAttribute_MappingKey();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.IAttributeMapping <em>IAttribute Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.IAttributeMapping
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getIAttributeMapping()
+ * @generated
+ */
+ public static final EClass IATTRIBUTE_MAPPING = eINSTANCE.getIAttributeMapping();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.AccessType <em>Access Type</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.AccessType
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getAccessType()
+ * @generated
+ */
+ public static final EEnum ACCESS_TYPE = eINSTANCE.getAccessType();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCorePlugin.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCorePlugin.java
new file mode 100644
index 0000000000..4613850c82
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaCorePlugin.java
@@ -0,0 +1,132 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Plugin;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jpt.core.internal.content.orm.OrmInit;
+import org.eclipse.jpt.core.internal.content.persistence.PersistenceInit;
+import org.osgi.framework.BundleContext;
+
+public class JpaCorePlugin extends Plugin
+{
+ private static JpaCorePlugin INSTANCE;
+
+ /**
+ * The plug-in identifier of the persistence support
+ * (value <code>"org.eclipse.jpt.core"</code>).
+ */
+ public final static String PLUGIN_ID = "org.eclipse.jpt.core"; //$NON-NLS-1$
+
+ /**
+ * The identifier for the JPA facet
+ * (value <code>"jpt.jpa"</code>).
+ */
+ public final static String FACET_ID = "jpt.jpa"; //$NON-NLS-1$
+
+ /**
+ * Value of the content-type for orm.xml mappings files. Use this value to retrieve
+ * the ORM xml content type from the content type manager, and to add new
+ * orm.xml-like extensions to this content type.
+ *
+ * @see org.eclipse.core.runtime.content.IContentTypeManager#getContentType(String)
+ */
+ public static final String ORM_XML_CONTENT_TYPE = PLUGIN_ID + ".content.orm"; //$NON-NLS-1$
+
+ public static final String PERSISTENCE_XML_CONTENT_TYPE = PLUGIN_ID + ".content.persistence"; //$NON-NLS-1$
+
+ public static final String JAVA_CONTENT_TYPE = JavaCore.JAVA_SOURCE_CONTENT_TYPE;
+
+ /**
+ * Returns the singular IJpaModel corresponding to the current workspace.
+ *
+ * @return the singular IJpaModel corresponding to the current workspace.
+ */
+ public static IJpaModel getJpaModel() {
+ return JpaModelManager.instance().getJpaModel();
+ }
+
+ /**
+ * Returns the IJpaProject corresponding to the given IProject,
+ * or <code>null</code> if unable to associate the given project with an
+ * IJpaProject.
+ *
+ * @param project the given project
+ * @return the IJpaProject corresponding to the given project,
+ * or <code>null</code> if unable to associate the given project with an
+ * IJpaProject
+ */
+ public static IJpaProject getJpaProject(IProject project) {
+ return JpaModelManager.instance().getJpaProject(project);
+ }
+
+ /**
+ * Returns the IJpaFile corresponding to the given IFile,
+ * or <code>null</code> if unable to associate the given file with an
+ * IJpaFile.
+ *
+ * @param file the given file
+ * @return the IJpaFile corresponding to the given file,
+ * or <code>null</code> if unable to associate the given file with an
+ * IJpaFile
+ */
+ public static IJpaFile getJpaFile(IFile file) {
+ return JpaModelManager.instance().getJpaFile(file);
+ }
+
+ /**
+ * Returns the singleton DaliPlugin
+ */
+ public static JpaCorePlugin getPlugin() {
+ return INSTANCE;
+ }
+
+ public static void log(IStatus status) {
+ INSTANCE.getLog().log(status);
+ }
+
+ public static void log(String msg) {
+ log(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.OK, msg, null));
+ }
+
+ public static void log(Throwable throwable) {
+ log(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.OK, throwable.getLocalizedMessage(), throwable));
+ }
+
+
+ public JpaCorePlugin() {
+ super();
+ INSTANCE = this;
+ }
+
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ JpaModelManager.instance().startup();
+ OrmInit.init();
+ PersistenceInit.init();
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ try {
+ JpaModelManager.instance().shutdown();
+ }
+ finally {
+ super.stop(context);
+ }
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaDataSource.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaDataSource.java
new file mode 100644
index 0000000000..70a2254409
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaDataSource.java
@@ -0,0 +1,185 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jpt.db.internal.Connection;
+import org.eclipse.jpt.db.internal.ConnectionProfileRepository;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Jpa Data Source</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.JpaDataSource#getConnectionProfileName <em>Connection Profile Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaDataSource()
+ * @model kind="class"
+ * @generated
+ */
+public class JpaDataSource extends JpaEObject implements IJpaDataSource
+{
+ /**
+ * The default value of the '{@link #getConnectionProfileName() <em>Connection Profile Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getConnectionProfileName()
+ * @generated
+ * @ordered
+ */
+ protected static final String CONNECTION_PROFILE_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getConnectionProfileName() <em>Connection Profile Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getConnectionProfileName()
+ * @generated
+ * @ordered
+ */
+ protected String connectionProfileName = CONNECTION_PROFILE_NAME_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected JpaDataSource() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaCorePackage.Literals.JPA_DATA_SOURCE;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Connection Profile Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Connection Profile Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Connection Profile Name</em>' attribute.
+ * @see #setConnectionProfileName(String)
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaDataSource_ConnectionProfileName()
+ * @model unique="false" required="true" ordered="false"
+ * @generated
+ */
+ public String getConnectionProfileName() {
+ return connectionProfileName;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.JpaDataSource#getConnectionProfileName <em>Connection Profile Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Connection Profile Name</em>' attribute.
+ * @see #getConnectionProfileName()
+ * @generated
+ */
+ public void setConnectionProfileName(String newConnectionProfileName) {
+ String oldConnectionProfileName = connectionProfileName;
+ connectionProfileName = newConnectionProfileName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaCorePackage.JPA_DATA_SOURCE__CONNECTION_PROFILE_NAME, oldConnectionProfileName, connectionProfileName));
+ }
+
+ public Connection getConnection() {
+ return ConnectionProfileRepository.instance().getConnectionWithProfileNamed(getConnectionProfileName());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case JpaCorePackage.JPA_DATA_SOURCE__CONNECTION_PROFILE_NAME :
+ return getConnectionProfileName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case JpaCorePackage.JPA_DATA_SOURCE__CONNECTION_PROFILE_NAME :
+ setConnectionProfileName((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaCorePackage.JPA_DATA_SOURCE__CONNECTION_PROFILE_NAME :
+ setConnectionProfileName(CONNECTION_PROFILE_NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaCorePackage.JPA_DATA_SOURCE__CONNECTION_PROFILE_NAME :
+ return CONNECTION_PROFILE_NAME_EDEFAULT == null ? connectionProfileName != null : !CONNECTION_PROFILE_NAME_EDEFAULT.equals(connectionProfileName);
+ }
+ 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(" (connectionProfileName: ");
+ result.append(connectionProfileName);
+ result.append(')');
+ return result.toString();
+ }
+} // JpaDataSource
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaEObject.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaEObject.java
new file mode 100644
index 0000000000..3ac5a1f76d
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaEObject.java
@@ -0,0 +1,128 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal;
+
+import java.util.HashSet;
+import java.util.Hashtable;
+import java.util.Map;
+import java.util.Set;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaEObject()
+ * @model kind="class" abstract="true"
+ * @generated
+ */
+public abstract class JpaEObject extends EObjectImpl implements IJpaEObject
+{
+ /**
+ * Sets of "insignificant" feature ids, keyed by class.
+ * This is built up lazily, as the objects are modified.
+ */
+ private static final Map<Class<? extends JpaEObject>, Set<Integer>> insignificantFeatureIdSets = new Hashtable<Class<? extends JpaEObject>, Set<Integer>>();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected JpaEObject() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaCorePackage.Literals.JPA_EOBJECT;
+ }
+
+ public IJpaProject getJpaProject() {
+ IJpaEObject container = (IJpaEObject) this.eContainer();
+ return (container == null) ? null : container.getJpaProject();
+ }
+
+ public IResource getResource() {
+ return this.getJpaProject().getProject();
+ }
+
+ // ********** change notification **********
+ /**
+ * override to prevent notification when the object's state is unchanged
+ */
+ @Override
+ public void eNotify(Notification notification) {
+ if (!notification.isTouch()) {
+ super.eNotify(notification);
+ this.featureChanged(notification.getFeatureID(this.getClass()));
+ }
+ }
+
+ protected void featureChanged(int featureId) {
+ if (this.featureIsSignificant(featureId)) {
+ IJpaProject project = this.getJpaProject();
+ // check that the model is fully initialized
+ if (project != null) {
+ project.resynch();
+ }
+ }
+ }
+
+ protected boolean featureIsSignificant(int featureId) {
+ return !this.featureIsInsignificant(featureId);
+ }
+
+ protected boolean featureIsInsignificant(int featureId) {
+ return this.insignificantFeatureIds().contains(featureId);
+ }
+
+ /**
+ * Return a set of the object's "insignificant" feature ids.
+ * These are the EMF features that, when they change, will NOT cause the
+ * object (or its containing tree) to be resynched, i.e. defaults calculated.
+ * If you need instance-based calculation of your "insignificant" aspects,
+ * override this method. If class-based calculation is sufficient,
+ * override #addInsignificantFeatureIdsTo(Set).
+ */
+ protected Set<Integer> insignificantFeatureIds() {
+ synchronized (insignificantFeatureIdSets) {
+ Set<Integer> insignificantFeatureIds = insignificantFeatureIdSets.get(this.getClass());
+ if (insignificantFeatureIds == null) {
+ insignificantFeatureIds = new HashSet<Integer>();
+ this.addInsignificantFeatureIdsTo(insignificantFeatureIds);
+ insignificantFeatureIdSets.put(this.getClass(), insignificantFeatureIds);
+ }
+ return insignificantFeatureIds;
+ }
+ }
+
+ /**
+ * Add the object's "insignificant" feature ids to the specified set.
+ * These are the EMF features that, when they change, will NOT cause the
+ * object (or its containing tree) to be resynched, i.e. defaults calculated.
+ * If class-based calculation of your "insignificant" features is sufficient,
+ * override this method. If you need instance-based calculation,
+ * override #insignificantFeatureIds().
+ */
+ protected void addInsignificantFeatureIdsTo(Set<Integer> insignificantFeatureIds) {
+ // when you override this method, don't forget to include:
+ // super.addInsignificantFeatureIdsTo(insignificantFeatureIds);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaFile.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaFile.java
new file mode 100644
index 0000000000..08c07ef2d3
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaFile.java
@@ -0,0 +1,337 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+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.jdt.core.ElementChangedEvent;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Persistence File</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.JpaFile#getContentId <em>Content Id</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.JpaFile#getContent <em>Content</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaFile()
+ * @model kind="class"
+ * @generated
+ */
+public class JpaFile extends JpaEObject implements IJpaFile
+{
+ /**
+ * The default value of the '{@link #getContentId() <em>Content Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getContentId()
+ * @generated
+ * @ordered
+ */
+ protected static final String CONTENT_ID_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getContentId() <em>Content Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getContentId()
+ * @generated
+ * @ordered
+ */
+ protected String contentId = CONTENT_ID_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getContent() <em>Content</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getContent()
+ * @generated
+ * @ordered
+ */
+ protected IJpaRootContentNode content;
+
+ /**
+ * The IFile associated with this JPA file
+ */
+ protected IFile file;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected JpaFile() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaCorePackage.Literals.JPA_FILE;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Content Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Content Id</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Content Id</em>' attribute.
+ * @see #setContentId(String)
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaFile_ContentId()
+ * @model required="true"
+ * @generated
+ */
+ public String getContentId() {
+ return contentId;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.JpaFile#getContentId <em>Content Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Content Id</em>' attribute.
+ * @see #getContentId()
+ * @generated
+ */
+ public void setContentId(String newContentId) {
+ String oldContentId = contentId;
+ contentId = newContentId;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaCorePackage.JPA_FILE__CONTENT_ID, oldContentId, contentId));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Content</b></em>' containment reference.
+ * It is bidirectional and its opposite is '{@link org.eclipse.jpt.core.internal.IJpaRootContentNode#getJpaFile <em>Jpa File</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Content</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Content</em>' containment reference.
+ * @see #setContent(IJpaRootContentNode)
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaFile_Content()
+ * @see org.eclipse.jpt.core.internal.IJpaRootContentNode#getJpaFile
+ * @model opposite="jpaFile" containment="true"
+ * @generated
+ */
+ public IJpaRootContentNode getContent() {
+ return content;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetContent(IJpaRootContentNode newContent, NotificationChain msgs) {
+ IJpaRootContentNode oldContent = content;
+ content = newContent;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, JpaCorePackage.JPA_FILE__CONTENT, oldContent, newContent);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.JpaFile#getContent <em>Content</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Content</em>' containment reference.
+ * @see #getContent()
+ * @generated
+ */
+ public void setContent(IJpaRootContentNode newContent) {
+ if (newContent != content) {
+ NotificationChain msgs = null;
+ if (content != null)
+ msgs = ((InternalEObject) content).eInverseRemove(this, JpaCorePackage.IJPA_ROOT_CONTENT_NODE__JPA_FILE, IJpaRootContentNode.class, msgs);
+ if (newContent != null)
+ msgs = ((InternalEObject) newContent).eInverseAdd(this, JpaCorePackage.IJPA_ROOT_CONTENT_NODE__JPA_FILE, IJpaRootContentNode.class, msgs);
+ msgs = basicSetContent(newContent, msgs);
+ if (msgs != null)
+ msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaCorePackage.JPA_FILE__CONTENT, newContent, newContent));
+ }
+
+ /**
+ * @see IJpaFile#getFile()
+ */
+ public IFile getFile() {
+ return file;
+ }
+
+ void setFile(IFile theFile) {
+ file = theFile;
+ }
+
+ /**
+ * INTERNAL ONLY
+ * Dispose of file before it is removed
+ */
+ void dispose() {
+ getContent().dispose();
+ }
+
+ /**
+ * INTERNAL ONLY
+ * Handle java element change event.
+ */
+ void handleEvent(ElementChangedEvent event) {
+ getContent().handleJavaElementChangedEvent(event);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case JpaCorePackage.JPA_FILE__CONTENT :
+ if (content != null)
+ msgs = ((InternalEObject) content).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - JpaCorePackage.JPA_FILE__CONTENT, null, msgs);
+ return basicSetContent((IJpaRootContentNode) 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 JpaCorePackage.JPA_FILE__CONTENT :
+ return basicSetContent(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 JpaCorePackage.JPA_FILE__CONTENT_ID :
+ return getContentId();
+ case JpaCorePackage.JPA_FILE__CONTENT :
+ return getContent();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case JpaCorePackage.JPA_FILE__CONTENT_ID :
+ setContentId((String) newValue);
+ return;
+ case JpaCorePackage.JPA_FILE__CONTENT :
+ setContent((IJpaRootContentNode) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaCorePackage.JPA_FILE__CONTENT_ID :
+ setContentId(CONTENT_ID_EDEFAULT);
+ return;
+ case JpaCorePackage.JPA_FILE__CONTENT :
+ setContent((IJpaRootContentNode) null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaCorePackage.JPA_FILE__CONTENT_ID :
+ return CONTENT_ID_EDEFAULT == null ? contentId != null : !CONTENT_ID_EDEFAULT.equals(contentId);
+ case JpaCorePackage.JPA_FILE__CONTENT :
+ return content != 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(" (contentId: ");
+ result.append(contentId);
+ result.append(')');
+ return result.toString();
+ }
+
+ public IJpaContentNode getContentNode(int offset) {
+ return getContent().getContentNode(offset);
+ }
+
+ @Override
+ public IResource getResource() {
+ return file;
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaFileContentRegistry.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaFileContentRegistry.java
new file mode 100644
index 0000000000..054f61261d
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaFileContentRegistry.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal;
+
+import java.io.IOException;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.content.IContentType;
+
+public class JpaFileContentRegistry
+{
+ private JpaFileContentRegistry() {
+ super();
+ }
+
+ public static IJpaFile getFile(IJpaProject jpaProject, IFile file) {
+ //attempting to get the contentType based on the file contents.
+ //have to check the file contents instead of just the file name
+ //because for xml we base it on the rootElement name
+ IContentType contentType = null;
+ try {
+ contentType = (file == null) ?
+ null :
+ Platform.getContentTypeManager().findContentTypeFor(file.getContents(), file.getName());
+ }
+ catch (IOException e) {
+ JpaCorePlugin.log(e);
+ }
+ catch (CoreException e) {
+ JpaCorePlugin.log(e);
+ }
+ if (contentType == null) {
+ return null;
+ }
+ String contentTypeId = contentType.getId();
+ IJpaRootContentNode content = buildContent(jpaProject, file, contentTypeId);
+
+ if (content == null) {
+ return null;
+ }
+ JpaFile jpaFile = JpaCoreFactory.eINSTANCE.createJpaFile();
+ jpaFile.setFile(file);
+ jpaFile.setContentId(contentTypeId);
+ jpaFile.setContent(content);
+
+ return jpaFile;
+ }
+
+ private static IJpaRootContentNode buildContent(IJpaProject jpaProject, IFile file, String contentTypeId) {
+ for (IJpaFileContentProvider provider : jpaProject.getPlatform().jpaFileContentProviders()) {
+ if (provider.contentType().equals(contentTypeId)) {
+ return provider.buildRootContent(file);
+ }
+ }
+ return null;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaModel.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaModel.java
new file mode 100644
index 0000000000..2bf6b6e688
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaModel.java
@@ -0,0 +1,264 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal;
+
+import java.util.Collection;
+import java.util.Iterator;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceProxy;
+import org.eclipse.core.resources.IResourceProxyVisitor;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+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.jdt.core.ElementChangedEvent;
+import org.eclipse.jpt.utility.internal.iterators.CloneIterator;
+import org.eclipse.jpt.utility.internal.iterators.ReadOnlyIterator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Jpa Model</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.JpaModel#getProjects <em>Projects</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaModel()
+ * @model kind="class"
+ * @generated
+ */
+public class JpaModel extends JpaEObject implements IJpaModel
+{
+ /**
+ * The cached value of the '{@link #getProjects() <em>Projects</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getProjects()
+ * @generated
+ * @ordered
+ */
+ protected EList<IJpaProject> projects;
+
+ /**
+ * Flag to indicate whether the model has been filled with projects
+ */
+ private boolean filled = false;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected JpaModel() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaCorePackage.Literals.JPA_MODEL;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Projects</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.IJpaProject}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Projects</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>Projects</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaModel_Projects()
+ * @model type="org.eclipse.jpt.core.internal.IJpaProject" containment="true"
+ * @generated
+ */
+ public EList<IJpaProject> getProjects() {
+ if (projects == null) {
+ projects = new EObjectContainmentEList<IJpaProject>(IJpaProject.class, this, JpaCorePackage.JPA_MODEL__PROJECTS);
+ }
+ return projects;
+ }
+
+ /**
+ * @see IJpaModel#getJpaProject(IProject)
+ */
+ public synchronized IJpaProject getJpaProject(IProject project) {
+ for (IJpaProject jpaProject : getProjects()) {
+ if (jpaProject.getProject().equals(project)) {
+ return jpaProject;
+ }
+ }
+ if (!this.filled) {
+ try {
+ return JpaModelManager.instance().createJpaProject(project);
+ }
+ catch (CoreException ce) {
+ JpaCorePlugin.log(ce.getStatus());
+ return null;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * @see IJpaModel#jpaProjects()
+ */
+ public Iterator<IJpaProject> jpaProjects() {
+ return new ReadOnlyIterator<IJpaProject>(getProjects().iterator());
+ }
+
+ @Override
+ public IResource getResource() {
+ return null;
+ }
+
+ /**
+ * INTERNAL ONLY
+ * Initialize model with workspace resources
+ */
+ void fill() throws CoreException {
+ if (filled)
+ return;
+ IResourceProxyVisitor visitor = new IResourceProxyVisitor() {
+ public boolean visit(IResourceProxy resourceProxy) throws CoreException {
+ if (!resourceProxy.isAccessible()) {
+ return false;
+ }
+ switch (resourceProxy.getType()) {
+ case IResource.ROOT :
+ return true;
+ case IResource.PROJECT :
+ JpaModelManager.instance().fillJpaProject((IProject) resourceProxy.requestResource());
+ default :
+ return false;
+ }
+ }
+ };
+ ResourcesPlugin.getWorkspace().getRoot().accept(visitor, IResource.NONE);
+ filled = true;
+ }
+
+ /**
+ * INTERNAL ONLY
+ * Dispose of model
+ */
+ void dispose() {
+ for (Iterator<IJpaProject> stream = new CloneIterator<IJpaProject>(getProjects()); stream.hasNext();) {
+ disposeProject((JpaProject) stream.next());
+ }
+ }
+
+ /**
+ * INTERNAL ONLY
+ * Dispose project and remove it
+ */
+ void disposeProject(JpaProject jpaProject) {
+ jpaProject.dispose();
+ getProjects().remove(jpaProject);
+ }
+
+ /**
+ * INTERNAL ONLY
+ * Handle java element change event.
+ */
+ void handleEvent(ElementChangedEvent event) {
+ for (Iterator<IJpaProject> stream = getProjects().iterator(); stream.hasNext();) {
+ ((JpaProject) stream.next()).handleEvent(event);
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case JpaCorePackage.JPA_MODEL__PROJECTS :
+ return ((InternalEList<?>) getProjects()).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 JpaCorePackage.JPA_MODEL__PROJECTS :
+ return getProjects();
+ }
+ 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 JpaCorePackage.JPA_MODEL__PROJECTS :
+ getProjects().clear();
+ getProjects().addAll((Collection<? extends IJpaProject>) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaCorePackage.JPA_MODEL__PROJECTS :
+ getProjects().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaCorePackage.JPA_MODEL__PROJECTS :
+ return projects != null && !projects.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaModelManager.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaModelManager.java
new file mode 100644
index 0000000000..ef7317dcf1
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaModelManager.java
@@ -0,0 +1,543 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.IWorkspaceRunnable;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.Preferences.IPropertyChangeListener;
+import org.eclipse.core.runtime.Preferences.PropertyChangeEvent;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jdt.core.ElementChangedEvent;
+import org.eclipse.jdt.core.IElementChangedListener;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jpt.core.internal.prefs.JpaPreferenceConstants;
+import org.eclipse.wst.common.project.facet.core.FacetedProjectFramework;
+
+public class JpaModelManager
+{
+ private static JpaModelManager INSTANCE;
+
+
+ /**
+ * Returns the singleton JpaModelManager
+ */
+ public final static JpaModelManager instance() {
+ if (INSTANCE == null) {
+ INSTANCE = new JpaModelManager();
+ }
+ return INSTANCE;
+ }
+
+
+ /**
+ * Unique handle onto the JpaModel
+ */
+ JpaModel model;
+
+ /**
+ * Processes resource changes
+ */
+ private IResourceChangeListener resourceChangeListener;
+
+ /**
+ * Process element changes
+ */
+ private IElementChangedListener elementChangeListener;
+
+ /**
+ * Process changes to preferences
+ */
+ private IPropertyChangeListener preferencesListener;
+
+
+ private JpaModelManager() {
+ super();
+ model = JpaCoreFactory.eINSTANCE.createJpaModel();
+ resourceChangeListener = new ResourceChangeListener();
+ elementChangeListener = new ElementChangeListener();
+ preferencesListener = new PreferencesListener();
+ }
+
+ public void startup() {
+ try {
+ buildWorkspace();
+ ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener);
+ JavaCore.addElementChangedListener(elementChangeListener);
+ JpaCorePlugin.getPlugin().getPluginPreferences().addPropertyChangeListener(preferencesListener);
+ }
+ catch (RuntimeException re) {
+ JpaCorePlugin.log(re);
+ shutdown();
+ }
+ }
+
+ public void shutdown() {
+ JpaCorePlugin.getPlugin().getPluginPreferences().removePropertyChangeListener(preferencesListener);
+ JavaCore.removeElementChangedListener(elementChangeListener);
+ ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener);
+ model.dispose();
+ }
+
+ private void buildWorkspace() {
+ Job workspaceBuildJob = new WorkspaceBuildJob();
+ workspaceBuildJob.schedule(5000L); //temporary delay for bundle init problem
+ }
+
+ /**
+ * Return the workspace-wide IJpaModel
+ *
+ * This IJpaProject may not be fully filled (it may not have all the correct
+ * projects added) if retrieved soon after it is created (e.g. workspace opening,
+ * project opening, facet installation ...) To ensure it is fully filled in
+ * those cases, you may instead use getFilledJpaModel().
+ * @see getFilledJpaModel()
+ */
+ public IJpaModel getJpaModel() {
+ return model;
+ }
+
+ /**
+ * Return the workspace-wide IJpaModel
+ *
+ * This IJpaModel will be fully filled (it will have all the correct projects added).
+ * @see getJpaProject(IProject)
+ */
+ public IJpaModel getFilledJpaModel()
+ throws CoreException {
+ model.fill();
+ return model;
+ }
+
+ /**
+ * Returns the IJpaProject corresponding to the given IProject.
+ * Returns <code>null</code> if unable to associate the given project
+ * with an IJpaProject.
+ *
+ * This IJpaProject may not be fully filled (it may not have all the correct
+ * files added) if retrieved soon after it is created (e.g. workspace opening,
+ * project opening, facet installation ...) To ensure it is fully filled in
+ * those cases, you may instead use getFilledJpaProject(IProject).
+ * @see getFilledJpaProject(IProject)
+ */
+ public synchronized IJpaProject getJpaProject(IProject project) {
+ if (project == null) {
+ return null;
+ }
+
+ return model.getJpaProject(project);
+ }
+
+ /**
+ * Returns the IJpaProject corresponding to the given IProject.
+ * Returns <code>null</code> if unable to associate the given project
+ * with an IJpaProject.
+ *
+ * This IJpaProject will be fully filled (it will have all the correct files added).
+ * @see getJpaProject(IProject)
+ */
+ public synchronized IJpaProject getFilledJpaProject(IProject project)
+ throws CoreException {
+ JpaProject jpaProject = (JpaProject) getJpaProject(project);
+
+ if (jpaProject != null) {
+ jpaProject.fill();
+ }
+
+ return jpaProject;
+ }
+
+ /**
+ * INTERNAL ONLY
+ *
+ * Fills the IJpaProject associated with the IProject, if it exists
+ */
+ public synchronized void fillJpaProject(IProject project)
+ throws CoreException {
+ JpaProject jpaProject = (JpaProject) getJpaProject(project);
+
+ if (jpaProject != null) {
+ jpaProject.fill();
+ }
+ }
+
+ /**
+ * INTERNAL ONLY
+ * Create an IJpaProject without files filled in
+ */
+ public synchronized IJpaProject createJpaProject(IProject project)
+ throws CoreException {
+ if (FacetedProjectFramework.hasProjectFacet(project, JpaCorePlugin.FACET_ID)) {
+ JpaProject jpaProject = JpaCoreFactory.eINSTANCE.createJpaProject();
+ jpaProject.setProject(project);
+ model.getProjects().add(jpaProject);
+ return jpaProject;
+ }
+ return null;
+ }
+
+ /**
+ * INTERNAL ONLY
+ * Create an IJpaProject with files filled in
+ */
+ public synchronized IJpaProject createFilledJpaProject(IProject project)
+ throws CoreException {
+ JpaProject jpaProject = (JpaProject) createJpaProject(project);
+
+ if (jpaProject != null) {
+ jpaProject.fill();
+ }
+
+ return jpaProject;
+ }
+
+ /**
+ * INTERNAL ONLY
+ * Dispose the IJpaProject
+ */
+ public void disposeJpaProject(IJpaProject jpaProject) {
+ model.disposeProject((JpaProject) jpaProject);
+ }
+
+ /**
+ * Returns the IJpaFile corresponding to the given IFile.
+ * Returns <code>null</code> if unable to associate the given file
+ * with an IJpaFile.
+ */
+ public synchronized IJpaFile getJpaFile(IFile file) {
+ if (file == null) {
+ return null;
+ }
+
+ IProject project = file.getProject();
+ JpaProject jpaProject = (JpaProject) getJpaProject(project);
+ if (jpaProject == null) {
+ return null;
+ }
+
+ return jpaProject.getJpaFile(file);
+ }
+
+
+
+ private class WorkspaceBuildJob extends Job
+ {
+ WorkspaceBuildJob() {
+ // TODO - Internationalize (? It *is* a system job ...)
+ super("Initializing JPA Model ...");
+ setSystem(true);
+ setPriority(SHORT);
+ }
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ final IWorkspace workspace = ResourcesPlugin.getWorkspace();
+
+ try {
+ workspace.run(
+ new IWorkspaceRunnable() {
+ public void run(IProgressMonitor progress) throws CoreException {
+ model.fill();
+ }
+ },
+ monitor);
+ }
+ catch (CoreException ce) {
+ return ce.getStatus();
+ }
+ return Status.OK_STATUS;
+ }
+
+ }
+
+
+ private static class ResourceChangeListener
+ implements IResourceChangeListener
+ {
+ ThreadLocal<ResourceChangeProcessor> resourceChangeProcessors = new ThreadLocal<ResourceChangeProcessor>();
+
+ ResourceChangeListener() {
+ super();
+ }
+
+ public void resourceChanged(IResourceChangeEvent event) {
+ getResourceChangeProcessor().resourceChanged(event);
+ }
+
+ public ResourceChangeProcessor getResourceChangeProcessor() {
+ ResourceChangeProcessor processor = this.resourceChangeProcessors.get();
+ if (processor == null) {
+ processor = new ResourceChangeProcessor();
+ this.resourceChangeProcessors.set(processor);
+ }
+ return processor;
+ }
+ }
+
+
+ private static class ResourceChangeProcessor
+ {
+ private JpaModel model;
+
+ ResourceChangeProcessor() {
+ model = JpaModelManager.instance().model;
+ }
+
+ public void resourceChanged(IResourceChangeEvent event) {
+ if (event.getSource() instanceof IWorkspace) {
+ IResource resource = event.getResource();
+ IResourceDelta delta = event.getDelta();
+
+ switch (event.getType()){
+ case IResourceChangeEvent.PRE_DELETE :
+ try {
+ if ((resource.getType() == IResource.PROJECT)
+ && (FacetedProjectFramework.hasProjectFacet(
+ (IProject) resource, JpaCorePlugin.FACET_ID))) {
+ projectBeingDeleted((IProject) resource);
+ }
+ }
+ catch (CoreException e) {
+ // project doesn't exist or is not open: ignore
+ }
+ return;
+
+ case IResourceChangeEvent.POST_CHANGE :
+ if (isApplicable(delta)) { // avoid changing due to SYNC or MARKER deltas
+ checkForProjectsBeingAddedOrRemoved(delta);
+ checkForFilesBeingAddedOrRemoved(delta);
+ }
+ return;
+
+ case IResourceChangeEvent.PRE_CLOSE :
+ return;
+ }
+ }
+ }
+
+ /**
+ * Process the given delta and look for files being added, removed, or changed
+ */
+ private void checkForFilesBeingAddedOrRemoved(IResourceDelta delta) {
+ IResource resource = delta.getResource();
+ boolean processChildren = false;
+
+ switch (resource.getType()) {
+ case IResource.ROOT :
+ processChildren = true;
+ break;
+
+ case IResource.PROJECT :
+ IProject project = (IProject) resource;
+
+ try {
+ if (FacetedProjectFramework.hasProjectFacet(project, JpaCorePlugin.FACET_ID)) {
+ JpaProject jpaProject = (JpaProject) model.getJpaProject(project);
+ if (jpaProject != null) {
+ // sometimes we receive events before the project
+ // has been fully initialized
+ jpaProject.synchInternalResources(delta);
+ }
+ }
+ }
+ catch (CoreException ex) {
+ // we can't do anything anyway
+ }
+ break;
+ }
+ if (processChildren) {
+ IResourceDelta[] children = delta.getAffectedChildren();
+ for (int i = 0; i < children.length; i++) {
+ checkForFilesBeingAddedOrRemoved(children[i]);
+ }
+ }
+
+ }
+
+ /**
+ * Process the given delta and look for projects being added, opened, or closed.
+ * Note that projects being deleted are checked in deletingProject(IProject).
+ */
+ private void checkForProjectsBeingAddedOrRemoved(IResourceDelta delta) {
+ IResource resource = delta.getResource();
+ boolean processChildren = false;
+
+ switch (resource.getType()) {
+ case IResource.ROOT :
+ processChildren = true;
+ break;
+
+ case IResource.PROJECT :
+ // NB: No need to check project's facet as if the project is not a jpa project:
+ // - if the project is added or changed this is a noop for projectsBeingDeleted
+ // - if the project is closed, it has already lost its jpa facet
+ IProject project = (IProject) resource;
+
+ // could be problems here ...
+ JpaProject jpaProject = (JpaProject) model.getJpaProject(project);
+ switch (delta.getKind()) {
+ case IResourceDelta.ADDED :
+ // shouldn't have to do anything - model should be created with facet
+ break;
+
+ case IResourceDelta.REMOVED :
+ // not really sure what should be done here ...
+ break;
+
+ case IResourceDelta.CHANGED :
+ if ((delta.getFlags() & IResourceDelta.OPEN) != 0) {
+ if (project.isOpen() && jpaProject == null) {
+ try {
+ JpaModelManager.instance().createFilledJpaProject(project);
+ }
+ catch (CoreException ce) {
+ JpaCorePlugin.log(ce);
+ }
+ }
+ else {
+ model.disposeProject(jpaProject);
+ }
+ }
+ else if ((delta.getFlags() & IResourceDelta.DESCRIPTION) != 0) {
+ // again, not sure ...
+ }
+ else {
+ // ...
+ }
+ break;
+ }
+ break;
+ }
+ if (processChildren) {
+ IResourceDelta[] children = delta.getAffectedChildren();
+ for (int i = 0; i < children.length; i++) {
+ checkForProjectsBeingAddedOrRemoved(children[i]);
+ }
+ }
+ }
+
+ /**
+ * The platform project is being deleted. Remove jpa info.
+ */
+ private void projectBeingDeleted(IProject project) {
+ // could be problems here ...
+ JpaProject jpaProject = (JpaProject) model.getJpaProject(project);
+ model.disposeProject(jpaProject);
+ }
+
+ /**
+ * Returns whether a given delta contains some information relevant to
+ * the JPA model,
+ * in particular it will not consider SYNC or MARKER only deltas.
+ */
+ private boolean isApplicable(IResourceDelta rootDelta) {
+ if (rootDelta != null) {
+ // use local exception to quickly escape from delta traversal
+ class FoundRelevantDeltaException extends RuntimeException {
+ private static final long serialVersionUID = 7137113252936111022L; // backward compatible
+ // only the class name is used (to differentiate from other RuntimeExceptions)
+ }
+ try {
+ rootDelta.accept(
+ new IResourceDeltaVisitor() {
+ public boolean visit(IResourceDelta delta) {
+ switch (delta.getKind()) {
+ case IResourceDelta.ADDED :
+ case IResourceDelta.REMOVED :
+ throw new FoundRelevantDeltaException();
+ case IResourceDelta.CHANGED :
+ // if any flag is set but SYNC or MARKER, this delta should be considered
+ if (delta.getAffectedChildren().length == 0 // only check leaf delta nodes
+ && (delta.getFlags() & ~(IResourceDelta.SYNC | IResourceDelta.MARKERS)) != 0) {
+ throw new FoundRelevantDeltaException();
+ }
+ }
+ return true;
+ }
+ }
+ );
+ }
+ catch(FoundRelevantDeltaException e) {
+ return true;
+ }
+ catch(CoreException e) { // ignore delta if not able to traverse
+ }
+ }
+ return false;
+ }
+ }
+
+
+ private static class ElementChangeListener
+ implements IElementChangedListener
+ {
+ ThreadLocal<ElementChangeProcessor> elementChangeProcessors = new ThreadLocal<ElementChangeProcessor>();
+
+ ElementChangeListener() {
+ super();
+ }
+
+ public void elementChanged(ElementChangedEvent event) {
+ getElementChangeProcessor().elementChanged(event);
+ }
+
+ public ElementChangeProcessor getElementChangeProcessor() {
+ ElementChangeProcessor processor = this.elementChangeProcessors.get();
+ if (processor == null) {
+ processor = new ElementChangeProcessor();
+ this.elementChangeProcessors.set(processor);
+ }
+ return processor;
+ }
+ }
+
+
+ private static class ElementChangeProcessor
+ {
+ ElementChangeProcessor() {
+ super();
+ }
+ public void elementChanged(ElementChangedEvent event) {
+ JpaModelManager.instance().model.handleEvent(event);
+ }
+ }
+
+
+ private static class PreferencesListener
+ implements IPropertyChangeListener
+ {
+ PreferencesListener() {
+ super();
+ }
+ public void propertyChange(PropertyChangeEvent event) {
+ if (event.getProperty() == JpaPreferenceConstants.PREF_DEFAULT_JPA_LIB) {
+ try {
+ JavaCore.setClasspathVariable("DEFAULT_JPA_LIB", new Path((String) event.getNewValue()), null);
+ }
+ catch (JavaModelException jme) {
+ JpaCorePlugin.log(jme);
+ }
+ }
+ }
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaPlatformRegistry.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaPlatformRegistry.java
new file mode 100644
index 0000000000..603da2472d
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaPlatformRegistry.java
@@ -0,0 +1,190 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jpt.utility.internal.CollectionTools;
+import org.eclipse.jpt.utility.internal.iterators.CompositeIterator;
+import org.eclipse.jpt.utility.internal.iterators.TransformationIterator;
+
+public class JpaPlatformRegistry
+{
+ public static final JpaPlatformRegistry INSTANCE = new JpaPlatformRegistry();
+
+ private static final String EXTENSION_ID =
+ "jpaPlatform"; //$NON-NLS-1$
+
+ private static final String EL_PLATFORM =
+ "jpaPlatform"; //$NON-NLS-1$
+
+ private static final String AT_ID =
+ "id"; //$NON-NLS-1$
+
+ private static final String AT_LABEL =
+ "label"; //$NON-NLS-1$
+
+ private static final String AT_CLASS =
+ "class"; //$NON-NLS-1$
+
+ // key: String jpaPlatform id value: IConfigurationElement class descriptor
+ private Map<String, IConfigurationElement> jpaPlatforms;
+
+
+ /* (non Java doc)
+ * restrict access
+ */
+ private JpaPlatformRegistry() {
+ buildJpaPlatforms();
+ }
+
+
+ private void buildJpaPlatforms() {
+ this.jpaPlatforms = new HashMap<String, IConfigurationElement>();
+
+ for (Iterator<IConfigurationElement> stream = allConfigElements(); stream.hasNext(); ) {
+ buildJpaPlatform(stream.next());
+ }
+ }
+
+ private void buildJpaPlatform(IConfigurationElement configElement) {
+ if (! configElement.getName().equals(EL_PLATFORM)) {
+ return;
+ }
+
+ String platformId = configElement.getAttribute(AT_ID);
+ String platformLabel = configElement.getAttribute(AT_LABEL);
+ String platformClass = configElement.getAttribute(AT_CLASS);
+
+ if ((platformId == null) || (platformLabel == null) || (platformClass == null)) {
+ if (platformId == null) {
+ reportMissingAttribute(configElement, AT_ID);
+ }
+ if (platformLabel == null) {
+ reportMissingAttribute(configElement, AT_LABEL);
+ }
+ if (platformClass == null) {
+ reportMissingAttribute(configElement, AT_CLASS);
+ }
+ return;
+ }
+
+ if (this.jpaPlatforms.containsKey(platformId)) {
+ IConfigurationElement otherConfigElement = this.jpaPlatforms.get(platformId);
+ reportDuplicatePlatform(configElement, otherConfigElement);
+ }
+
+ this.jpaPlatforms.put(platformId, configElement);
+ }
+
+ /**
+ * Return a new IJpaPlatform for the given id.
+ * NB: This should only be done when instantiating a platform for a given
+ * IJpaProject, either when creating the project, or when changing the
+ * platform.
+ */
+ public IJpaPlatform getJpaPlatform(String id) {
+ IConfigurationElement registeredConfigElement = this.jpaPlatforms.get(id);
+
+ if (registeredConfigElement == null) {
+ return null;
+ }
+
+ try {
+ IJpaPlatform platform =
+ (IJpaPlatform) registeredConfigElement.createExecutableExtension(AT_CLASS);
+ platform.setId(id);
+ return platform;
+ }
+ catch (CoreException ce) {
+ reportFailedInstantiation(registeredConfigElement);
+ return null;
+ }
+ }
+
+ /**
+ * Return an iterator of String ids for all registered JPA platforms.
+ * This does not load any of the platforms' plugin classes.
+ */
+ public Iterator allJpaPlatformIds() {
+ return Collections.unmodifiableMap(jpaPlatforms).keySet().iterator();
+ }
+
+ /**
+ * Return the label for the platform with the given id.
+ * This does not load the platform's plugin classes.
+ */
+ public String getJpaPlatformLabel(String id) {
+ return jpaPlatforms.get(id).getAttribute(AT_LABEL);
+ }
+
+ private Iterator<IConfigurationElement> allConfigElements() {
+ IExtensionRegistry registry = Platform.getExtensionRegistry();
+ IExtensionPoint extensionPoint =
+ registry.getExtensionPoint(JpaCorePlugin.PLUGIN_ID, EXTENSION_ID);
+ IExtension[] extensions = extensionPoint.getExtensions();
+
+ return new CompositeIterator<IConfigurationElement>(
+ new TransformationIterator<IExtension, Iterator<IConfigurationElement>>(CollectionTools.iterator(extensions)) {
+ @Override
+ protected Iterator<IConfigurationElement> transform(IExtension next) {
+ return CollectionTools.iterator(next.getConfigurationElements());
+ }
+ }
+ );
+ }
+
+ // TODO externalize strings
+ private void reportMissingAttribute(IConfigurationElement configElement, String attributeName) {
+ String message =
+ "An extension element \""
+ + configElement.getName()
+ + "\" in plugin \""
+ + configElement.getContributor().getName()
+ + "\" is missing a required attribute \""
+ + attributeName
+ + "\".";
+ JpaCorePlugin.log(message);
+ }
+
+ // TODO externalize strings
+ private void reportDuplicatePlatform(
+ IConfigurationElement oneConfigElement, IConfigurationElement otherConfigElement) {
+ String message =
+ "The plugins \""
+ + oneConfigElement.getContributor().getName()
+ + "\" and \""
+ + otherConfigElement.getContributor().getName()
+ + "\" have registered a duplicate attribute \"id\" "
+ + "for the extension element \"jpaPlatform\".";
+ JpaCorePlugin.log(message);
+ }
+
+ // TODO externalize strings
+ private void reportFailedInstantiation(IConfigurationElement configElement) {
+ String message =
+ "Could not instantiate the class \""
+ + configElement.getAttribute(AT_CLASS)
+ + "\" for the extension element \""
+ + configElement.getName()
+ + "\" in the plugin \""
+ + configElement.getContributor().getName()
+ + "\".";
+ JpaCorePlugin.log(message);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaProject.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaProject.java
new file mode 100644
index 0000000000..04ddf525fb
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaProject.java
@@ -0,0 +1,645 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.IResourceProxy;
+import org.eclipse.core.resources.IResourceProxyVisitor;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.IJobChangeEvent;
+import org.eclipse.core.runtime.jobs.IJobChangeListener;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.core.runtime.jobs.JobChangeAdapter;
+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.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.jdt.core.ElementChangedEvent;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jpt.core.internal.content.java.JavaPersistentType;
+import org.eclipse.jpt.core.internal.content.java.JpaCompilationUnit;
+import org.eclipse.jpt.core.internal.facet.JpaFacetUtils;
+import org.eclipse.jpt.core.internal.platform.IContext;
+import org.eclipse.jpt.db.internal.ConnectionProfile;
+import org.eclipse.jpt.db.internal.PersistenceDbPlugin;
+import org.eclipse.jpt.utility.internal.iterators.CloneIterator;
+import org.eclipse.jpt.utility.internal.iterators.ReadOnlyIterator;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Jpa Project</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.JpaProject#getPlatform <em>Platform</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.JpaProject#getDataSource <em>Data Source</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.JpaProject#getFiles <em>Files</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaProject()
+ * @model kind="class"
+ * @generated
+ */
+public class JpaProject extends JpaEObject implements IJpaProject
+{
+ /**
+ * The IProject associated with this JPA project
+ */
+ protected IProject project;
+
+ /**
+ * The IJpaPlatform associated with this JPA project
+ */
+ protected IJpaPlatform platform;
+
+ /**
+ * The cached value of the '{@link #getDataSource() <em>Data Source</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDataSource()
+ * @generated
+ * @ordered
+ */
+ protected IJpaDataSource dataSource;
+
+ /**
+ * The cached value of the '{@link #getFiles() <em>Files</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFiles()
+ * @generated
+ * @ordered
+ */
+ protected EList<IJpaFile> files;
+
+ /**
+ * Flag to indicate whether this project has been filled with files
+ */
+ private boolean filled = false;
+
+ /**
+ * Flag to indicate that the resynchJob has been scheduled or is running.
+ * This is set to false when that job is completed
+ */
+ boolean resynching = false;
+
+ /**
+ * Flag to indicate that the resynchJob needs to be run. This is
+ * set to true if resynching = true so that the next time the job completes
+ * it will be run again.
+ */
+ boolean needsToResynch = false;
+
+ /**
+ * Job used to reconnect the model parts throughout the project containment hierarchy
+ * @see IJpaProject#resynch()
+ */
+ Job resynchJob;
+
+ private IJobChangeListener resynchJobListener;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected JpaProject() {
+ super();
+ this.resynchJob = buildResynchJob();
+ this.resynchJobListener = buildResynchJobListener();
+ Job.getJobManager().addJobChangeListener(this.resynchJobListener);
+ }
+
+ private Job buildResynchJob() {
+ return new Job("Resynching JPA model ...") {
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ IContext contextHierarchy = getPlatform().buildProjectContext();
+ getPlatform().resynch(contextHierarchy);
+ return Status.OK_STATUS;
+ }
+ };
+ }
+
+ private IJobChangeListener buildResynchJobListener() {
+ return new JobChangeAdapter() {
+ @Override
+ public void done(IJobChangeEvent event) {
+ super.done(event);
+ if (event.getJob() == JpaProject.this.resynchJob) {
+ JpaProject.this.resynching = false;
+ if (JpaProject.this.needsToResynch) {
+ resynch();
+ }
+ }
+ }
+ };
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaCorePackage.Literals.JPA_PROJECT;
+ }
+
+ /**
+ * @see IJpaProject#getProject()
+ */
+ public IProject getProject() {
+ return project;
+ }
+
+ void setProject(IProject theProject) {
+ project = theProject;
+ }
+
+ public IJavaProject getJavaProject() {
+ return JavaCore.create(getProject());
+ }
+
+ /**
+ * @see IJpaProject#getModel()
+ */
+ public IJpaModel getModel() {
+ return (IJpaModel) eContainer();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Platform</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Platform</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Platform</em>' reference.
+ * @see #setPlatform(IJpaPlatform)
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaProject_Platform()
+ * @model resolveProxies="false" required="true" ordered="false"
+ * @generated
+ */
+ public IJpaPlatform getPlatformGen() {
+ return platform;
+ }
+
+ public IJpaPlatform getPlatform() {
+ if (platform == null) {
+ setPlatform(JpaFacetUtils.getPlatform(project));
+ }
+ return getPlatformGen();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.JpaProject#getPlatform <em>Platform</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Platform</em>' reference.
+ * @see #getPlatform()
+ * @generated
+ */
+ public void setPlatformGen(IJpaPlatform newPlatform) {
+ IJpaPlatform oldPlatform = platform;
+ platform = newPlatform;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaCorePackage.JPA_PROJECT__PLATFORM, oldPlatform, platform));
+ }
+
+ public void setPlatform(IJpaPlatform jpaPlatform) {
+ jpaPlatform.setProject(this);
+ setPlatformGen(jpaPlatform);
+ }
+
+ /**
+ * @see IJpaProject#setPlatform(String)
+ */
+ public void setPlatform(String platformId) {
+ setPlatform(JpaPlatformRegistry.INSTANCE.getJpaPlatform(platformId));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Data Source</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Data Source</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Data Source</em>' containment reference.
+ * @see #setDataSource(IJpaDataSource)
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaProject_DataSource()
+ * @model containment="true" ordered="false"
+ * @generated
+ */
+ public IJpaDataSource getDataSourceGen() {
+ return dataSource;
+ }
+
+ public IJpaDataSource getDataSource() {
+ if (dataSource == null) {
+ setDataSource(JpaFacetUtils.getConnectionName(project));
+ }
+ return getDataSourceGen();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetDataSource(IJpaDataSource newDataSource, NotificationChain msgs) {
+ IJpaDataSource oldDataSource = dataSource;
+ dataSource = newDataSource;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, JpaCorePackage.JPA_PROJECT__DATA_SOURCE, oldDataSource, newDataSource);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.JpaProject#getDataSource <em>Data Source</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Data Source</em>' containment reference.
+ * @see #getDataSource()
+ * @generated
+ */
+ public void setDataSource(IJpaDataSource newDataSource) {
+ if (newDataSource != dataSource) {
+ NotificationChain msgs = null;
+ if (dataSource != null)
+ msgs = ((InternalEObject) dataSource).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - JpaCorePackage.JPA_PROJECT__DATA_SOURCE, null, msgs);
+ if (newDataSource != null)
+ msgs = ((InternalEObject) newDataSource).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - JpaCorePackage.JPA_PROJECT__DATA_SOURCE, null, msgs);
+ msgs = basicSetDataSource(newDataSource, msgs);
+ if (msgs != null)
+ msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaCorePackage.JPA_PROJECT__DATA_SOURCE, newDataSource, newDataSource));
+ }
+
+ /**
+ * @see IJpaProject#setDataSource(String)
+ */
+ public void setDataSource(String connectionProfileName) {
+ JpaDataSource ds = JpaCoreFactory.eINSTANCE.createJpaDataSource();
+ ds.setConnectionProfileName(connectionProfileName);
+ setDataSource(ds);
+ }
+
+ @Override
+ public IJpaProject getJpaProject() {
+ return this;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Files</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.IJpaFile}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Files</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>Files</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getJpaProject_Files()
+ * @model type="org.eclipse.jpt.core.internal.IJpaFile" containment="true"
+ * @generated
+ */
+ public EList<IJpaFile> getFiles() {
+ if (files == null) {
+ files = new EObjectContainmentEList<IJpaFile>(IJpaFile.class, this, JpaCorePackage.JPA_PROJECT__FILES);
+ }
+ return files;
+ }
+
+ /**
+ * INTERNAL ONLY
+ * Fill project with file resources
+ */
+ void fill() throws CoreException {
+ if (filled) {
+ return;
+ }
+ IResourceProxyVisitor visitor = new IResourceProxyVisitor() {
+ public boolean visit(IResourceProxy resource) throws CoreException {
+ switch (resource.getType()) {
+ case IResource.PROJECT :
+ case IResource.FOLDER :
+ return true;
+ case IResource.FILE :
+ IFile file = (IFile) resource.requestResource();
+ if (getJpaFileInternal(file) == null) {
+ createJpaFile(file);
+ }
+ default :
+ return false;
+ }
+ }
+ };
+ getProject().accept(visitor, IResource.NONE);
+ resynch();
+ filled = true;
+ }
+
+ /**
+ * @see IJpaProject#getJpaFile(IFile)
+ */
+ public synchronized IJpaFile getJpaFile(IFile file) {
+ IJpaFile jpaFile = getJpaFileInternal(file);
+ if (jpaFile != null) {
+ return jpaFile;
+ }
+ else if (!filled) {
+ return createJpaFile(file);
+ }
+ else {
+ return null;
+ }
+ }
+
+ synchronized IJpaFile getJpaFileInternal(IFile file) {
+ for (IJpaFile next : this.getFiles()) {
+ if (next.getFile().equals(file)) {
+ return next;
+ }
+ }
+ return null;
+ }
+
+ public Iterator<IJpaFile> jpaFiles() {
+ return new ReadOnlyIterator<IJpaFile>(getFiles().iterator());
+ }
+
+ public Collection<IJpaFile> jpaFiles(String contentType) {
+ Collection<IJpaFile> jpaFiles = new ArrayList<IJpaFile>();
+ for (Iterator<IJpaFile> stream = jpaFiles(); stream.hasNext();) {
+ IJpaFile next = stream.next();
+ if (next.getContentId().equals(contentType)) {
+ jpaFiles.add(next);
+ }
+ }
+ return jpaFiles;
+ }
+
+ public JavaPersistentType findJavaPersistentType(IType type) {
+ if (type == null) {
+ return null;
+ }
+ Collection<IJpaFile> persistenceFiles = jpaFiles(JpaCorePlugin.JAVA_CONTENT_TYPE);
+ for (IJpaFile jpaFile : persistenceFiles) {
+ JpaCompilationUnit compilationUnit = (JpaCompilationUnit) jpaFile.getContent();
+ for (JavaPersistentType persistentType : compilationUnit.getTypes()) {
+ if (type.equals(persistentType.getType().jdtType())) {
+ return persistentType;
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * INTERNAL ONLY
+ * Dispose of project before it is removed
+ */
+ void dispose() {
+ for (Iterator<IJpaFile> stream = new CloneIterator<IJpaFile>(getFiles()); stream.hasNext();) {
+ disposeFile((JpaFile) stream.next());
+ }
+ Job.getJobManager().removeJobChangeListener(this.resynchJobListener);
+ }
+
+ /**
+ * INTERNAL ONLY
+ * Dispose file and remove it
+ */
+ void disposeFile(JpaFile jpaFile) {
+ jpaFile.dispose();
+ getFiles().remove(jpaFile);
+ }
+
+ /**
+ * INTERNAL ONLY
+ * Synch internal JPA resources.
+ */
+ void synchInternalResources(IResourceDelta delta) throws CoreException {
+ delta.accept(this.buildResourceDeltaVisitor());
+ }
+
+ private IResourceDeltaVisitor buildResourceDeltaVisitor() {
+ return new IResourceDeltaVisitor() {
+ private IResource currentResource = getProject();
+
+ public boolean visit(IResourceDelta delta) throws CoreException {
+ IResource res = delta.getResource();
+ if (res.equals(currentResource))
+ return true;
+ if (res.getType() == IResource.FILE) {
+ IFile file = (IFile) res;
+ switch (delta.getKind()) {
+ case IResourceDelta.ADDED :
+ if (getJpaFile(file) == null) {
+ createJpaFile(file);
+ JpaProject.this.resynch();//TODO different api for this?
+ }
+ break;
+ case IResourceDelta.REMOVED :
+ JpaFile jpaFile = (JpaFile) getJpaFile(file);
+ if (jpaFile != null) {
+ disposeFile(jpaFile);
+ JpaProject.this.resynch();//TODO different api for this?
+ }
+ break;
+ case IResourceDelta.CHANGED :
+ // shouldn't have to worry, since all changes we're looking for have to do with file name
+ }
+ }
+ return true;
+ }
+ };
+ }
+
+ synchronized IJpaFile createJpaFile(IFile file) {
+ if (!JavaCore.create(getProject()).isOnClasspath(file)) {
+ return null;
+ }
+ IJpaFile jpaFile = JpaFileContentRegistry.getFile(this, file);
+ // PWFTODO
+ // Return a NullPersistenceFile if no content found?
+ if (jpaFile != null) {
+ getFiles().add(jpaFile);
+ return jpaFile;
+ }
+ return null;
+ }
+
+ /**
+ * INTERNAL ONLY
+ * Handle java element change event.
+ */
+ void handleEvent(ElementChangedEvent event) {
+ if (filled) {
+ for (Iterator<IJpaFile> stream = jpaFiles(); stream.hasNext();) {
+ ((JpaFile) stream.next()).handleEvent(event);
+ }
+ resynch();
+ }
+ }
+
+ public Iterator<IMessage> validationMessages() {
+ List<IMessage> messages = new ArrayList<IMessage>();
+ getPlatform().addToMessages(messages);
+ return messages.iterator();
+ }
+
+ //leaving this at the JpaProject level for now instead of
+ //passing it on to the JpaModel. We don't currently support
+ //multiple projects having cross-references
+ public void resynch() {
+ if (!this.resynching) {
+ this.resynching = true;
+ this.needsToResynch = false;
+ this.resynchJob.schedule();
+ }
+ else {
+ this.needsToResynch = true;
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case JpaCorePackage.JPA_PROJECT__DATA_SOURCE :
+ return basicSetDataSource(null, msgs);
+ case JpaCorePackage.JPA_PROJECT__FILES :
+ return ((InternalEList<?>) getFiles()).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 JpaCorePackage.JPA_PROJECT__PLATFORM :
+ return getPlatform();
+ case JpaCorePackage.JPA_PROJECT__DATA_SOURCE :
+ return getDataSource();
+ case JpaCorePackage.JPA_PROJECT__FILES :
+ return getFiles();
+ }
+ 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 JpaCorePackage.JPA_PROJECT__PLATFORM :
+ setPlatform((IJpaPlatform) newValue);
+ return;
+ case JpaCorePackage.JPA_PROJECT__DATA_SOURCE :
+ setDataSource((IJpaDataSource) newValue);
+ return;
+ case JpaCorePackage.JPA_PROJECT__FILES :
+ getFiles().clear();
+ getFiles().addAll((Collection<? extends IJpaFile>) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaCorePackage.JPA_PROJECT__PLATFORM :
+ setPlatform((IJpaPlatform) null);
+ return;
+ case JpaCorePackage.JPA_PROJECT__DATA_SOURCE :
+ setDataSource((IJpaDataSource) null);
+ return;
+ case JpaCorePackage.JPA_PROJECT__FILES :
+ getFiles().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaCorePackage.JPA_PROJECT__PLATFORM :
+ return platform != null;
+ case JpaCorePackage.JPA_PROJECT__DATA_SOURCE :
+ return dataSource != null;
+ case JpaCorePackage.JPA_PROJECT__FILES :
+ return files != null && !files.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ public ConnectionProfile connectionProfile() {
+ String profileName = getDataSource().getConnectionProfileName();
+ return PersistenceDbPlugin.getDefault().getConnectionProfileRepository().profileNamed(profileName);
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaProjectAdapterFactory.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaProjectAdapterFactory.java
new file mode 100644
index 0000000000..e28001002b
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/JpaProjectAdapterFactory.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2007 Oracle. All rights reserved. This program and
+ * the accompanying materials are made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IAdapterFactory;
+import org.eclipse.jdt.core.IJavaProject;
+
+public class JpaProjectAdapterFactory
+ implements IAdapterFactory
+{
+ private static Class[] PROPERTIES= new Class[] {
+ IJpaProject.class
+ };
+
+ public Class[] getAdapterList() {
+ return PROPERTIES;
+ }
+
+ public Object getAdapter(Object element, Class key) {
+ IProject project;
+
+ if (element instanceof IProject) {
+ project = (IProject) element;
+ }
+ else if (element instanceof IJavaProject) {
+ project = ((IJavaProject) element).getProject();
+ }
+ else {
+ return null;
+ }
+
+ return JpaCorePlugin.getJpaProject(project);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/NullTypeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/NullTypeMapping.java
new file mode 100644
index 0000000000..67c901f31e
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/NullTypeMapping.java
@@ -0,0 +1,252 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal;
+
+import java.util.Iterator;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.jdt.core.ElementChangedEvent;
+import org.eclipse.jpt.db.internal.Table;
+import org.eclipse.jpt.utility.internal.iterators.EmptyIterator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Null Type Mapping</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getNullTypeMapping()
+ * @model kind="class"
+ * @generated
+ */
+public class NullTypeMapping extends JpaEObject
+ implements ITypeMapping, IJpaSourceObject
+{
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getTableName() <em>Table Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTableName()
+ * @generated
+ * @ordered
+ */
+ protected static final String TABLE_NAME_EDEFAULT = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected NullTypeMapping() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaCorePackage.Literals.NULL_TYPE_MAPPING;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getITypeMapping_Name()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated NOT
+ */
+ public String getName() {
+ return "";
+ }
+
+ /**
+ * Returns the value of the '<em><b>Table Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Table Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Table Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.JpaCoreackage#getITypeMapping_TableName()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated NOT
+ */
+ public String getTableName() {
+ return "";
+ }
+
+ public IPersistentType getPersistentType() {
+ throw new UnsupportedOperationException();
+ }
+
+ public IResource getResource() {
+ throw new UnsupportedOperationException("getResource()");
+ }
+
+ /**
+ * @model kind="operation"
+ * @generated NOT
+ */
+ public IJpaFile getJpaFile() {
+ throw new UnsupportedOperationException("getJpaFile()");
+ }
+
+ public ITextRange getTextRange() {
+ throw new UnsupportedOperationException("getTextRange()");
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case JpaCorePackage.NULL_TYPE_MAPPING__NAME :
+ return getName();
+ case JpaCorePackage.NULL_TYPE_MAPPING__TABLE_NAME :
+ return getTableName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaCorePackage.NULL_TYPE_MAPPING__NAME :
+ return NAME_EDEFAULT == null ? getName() != null : !NAME_EDEFAULT.equals(getName());
+ case JpaCorePackage.NULL_TYPE_MAPPING__TABLE_NAME :
+ return TABLE_NAME_EDEFAULT == null ? getTableName() != null : !TABLE_NAME_EDEFAULT.equals(getTableName());
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IJpaSourceObject.class) {
+ switch (derivedFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == ITypeMapping.class) {
+ switch (derivedFeatureID) {
+ case JpaCorePackage.NULL_TYPE_MAPPING__NAME :
+ return JpaCorePackage.ITYPE_MAPPING__NAME;
+ case JpaCorePackage.NULL_TYPE_MAPPING__TABLE_NAME :
+ return JpaCorePackage.ITYPE_MAPPING__TABLE_NAME;
+ 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 == IJpaSourceObject.class) {
+ switch (baseFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == ITypeMapping.class) {
+ switch (baseFeatureID) {
+ case JpaCorePackage.ITYPE_MAPPING__NAME :
+ return JpaCorePackage.NULL_TYPE_MAPPING__NAME;
+ case JpaCorePackage.ITYPE_MAPPING__TABLE_NAME :
+ return JpaCorePackage.NULL_TYPE_MAPPING__TABLE_NAME;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ public String getKey() {
+ return IMappingKeys.NULL_TYPE_MAPPING_KEY;
+ }
+
+ public void javaElementChanged(ElementChangedEvent event) {}
+
+ public Iterator associatedTableNamesIncludingInherited() {
+ return EmptyIterator.instance();
+ }
+
+ public Iterator associatedTables() {
+ return EmptyIterator.instance();
+ }
+
+ public Iterator associatedTablesIncludingInherited() {
+ return EmptyIterator.instance();
+ }
+
+ public Table primaryDbTable() {
+ return null;
+ }
+
+ public Table dbTable(String tableName) {
+ return null;
+ }
+
+ public boolean tableNameIsInvalid(String tableName) {
+ return false;
+ }
+
+ public Iterator<String> overridableAssociationNames() {
+ return EmptyIterator.instance();
+ }
+
+ public Iterator<String> overridableAttributeNames() {
+ return EmptyIterator.instance();
+ }
+
+ public boolean attributeMappingKeyAllowed(String attributeMappingKey) {
+ // it's not so much that all mapping keys are allowed.
+ // it's just that they're not really invalid, per se
+ return true;
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/XmlEObject.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/XmlEObject.java
new file mode 100644
index 0000000000..8ac9ab189e
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/XmlEObject.java
@@ -0,0 +1,217 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Hashtable;
+import java.util.Map;
+import java.util.Set;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.utility.internal.ClassTools;
+import org.eclipse.wst.common.internal.emf.resource.EMF2DOMAdapter;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
+import org.w3c.dom.Node;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml EObject</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.JpaCorePackage#getXmlEObject()
+ * @model kind="class" abstract="true"
+ * @generated
+ */
+public abstract class XmlEObject extends JpaEObject implements IXmlEObject
+{
+ protected IDOMNode node;
+
+ /**
+ * Sets of "insignificant" feature ids, keyed by class.
+ * This is built up lazily, as the objects are modified.
+ */
+ private static final Map<Class, Set<Integer>> insignificantXmlFeatureIdSets = new Hashtable<Class, Set<Integer>>();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XmlEObject() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaCorePackage.Literals.XML_EOBJECT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * @generated NOT
+ */
+ public IJpaFile getJpaFile() {
+ IJpaRootContentNode root = getRoot();
+ return (root == null) ? null : root.getJpaFile();
+ }
+
+ @Override
+ public EList eAdapters() {
+ if (this.eAdapters == null) {
+ this.eAdapters = new XmlEAdapterList(this);
+ }
+ return this.eAdapters;
+ }
+
+ public IDOMNode getNode() {
+ return this.node;
+ }
+ protected class XmlEAdapterList extends EAdapterList
+ {
+ public XmlEAdapterList(Notifier notifier) {
+ super(notifier);
+ }
+
+ @Override
+ protected void didAdd(int index, Object newObject) {
+ super.didAdd(index, newObject);
+ try {
+ node = (IDOMNode) ClassTools.executeMethod(newObject, "getNode");
+ }
+ catch (RuntimeException re) {
+ // nothing to do
+ }
+ }
+
+ @Override
+ protected void didRemove(int index, Object oldObject) {
+ super.didRemove(index, oldObject);
+ if ((oldObject instanceof EMF2DOMAdapter) && (((EMF2DOMAdapter) oldObject).getNode() == XmlEObject.this.node)) {
+ XmlEObject.this.node = null;
+ }
+ }
+ }
+
+ public boolean isAllFeaturesUnset() {
+ for (EStructuralFeature feature : eClass().getEAllStructuralFeatures()) {
+ if (xmlFeatureIsInsignificant(feature.getFeatureID())) {
+ continue;
+ }
+ if (feature instanceof EReference) {
+ Object object = eGet(feature);
+ if (object instanceof Collection) {
+ if (eIsSet(feature)) {
+ return false;
+ }
+ }
+ else {
+ XmlEObject eObject = (XmlEObject) eGet(feature);
+ if (eObject != null) {
+ return eObject.isAllFeaturesUnset();
+ }
+ }
+ }
+ else if (eIsSet(feature)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public IJpaRootContentNode getRoot() {
+ XmlEObject container = (XmlEObject) eContainer();
+ return (container == null) ? null : container.getRoot();
+ }
+
+ public IResource getResource() {
+ return getJpaFile().getResource();
+ }
+
+ public ITextRange getTextRange() {
+ return getTextRange(node);
+ }
+
+ protected ITextRange getTextRange(final IDOMNode aNode) {
+ return new ITextRange() {
+ public int getLength() {
+ if (aNode.getNodeType() == Node.ELEMENT_NODE) {
+ return ((IDOMElement) aNode).getStartEndOffset() - aNode.getStartOffset();
+ }
+ return aNode.getLength();
+ }
+
+ public int getLineNumber() {
+ return aNode.getStructuredDocument().getLineOfOffset(getOffset()) + 1;
+ }
+
+ public int getOffset() {
+ return aNode.getStartOffset();
+ }
+ };
+ }
+
+ protected boolean xmlFeatureIsSignificant(int featureId) {
+ return !this.xmlFeatureIsInsignificant(featureId);
+ }
+
+ protected boolean xmlFeatureIsInsignificant(int featureId) {
+ return this.insignificantXmlFeatureIds().contains(featureId);
+ }
+
+ /**
+ * Return a set of the xml object's "insignificant" feature ids.
+ * These are the EMF features that will not be used to determine if all
+ * the features are unset. We use this to determine when to remove
+ * an element from the xml.
+ *
+ * If you need instance-based calculation of your xml "insignificant" aspects,
+ * override this method. If class-based calculation is sufficient,
+ * override #addInsignificantXmlFeatureIdsTo(Set).
+ *
+ * @see isAllFeaturesUnset()
+ */
+ protected Set<Integer> insignificantXmlFeatureIds() {
+ synchronized (insignificantXmlFeatureIdSets) {
+ Set<Integer> insignificantXmlFeatureIds = insignificantXmlFeatureIdSets.get(this.getClass());
+ if (insignificantXmlFeatureIds == null) {
+ insignificantXmlFeatureIds = new HashSet<Integer>();
+ this.addInsignificantXmlFeatureIdsTo(insignificantXmlFeatureIds);
+ insignificantXmlFeatureIdSets.put(this.getClass(), insignificantXmlFeatureIds);
+ }
+ return insignificantXmlFeatureIds;
+ }
+ }
+
+ /**
+ * Add the object's "insignificant" feature ids to the specified set.
+ * These are the EMF features that, when they change, will NOT cause the
+ * object (or its containing tree) to be resynched, i.e. defaults calculated.
+ * If class-based calculation of your "insignificant" features is sufficient,
+ * override this method. If you need instance-based calculation,
+ * override #insignificantXmlFeatureIds().
+ */
+ protected void addInsignificantXmlFeatureIdsTo(Set<Integer> insignificantXmlFeatureIds) {
+ // when you override this method, don't forget to include:
+ // super.addInsignificantXmlFeatureIdsTo(insignificantXmlFeatureIds);
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaAttributeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaAttributeMapping.java
new file mode 100644
index 0000000000..47cfb0bd62
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaAttributeMapping.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java;
+
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.IAttributeMapping;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IJava Attribute Mapping</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getIJavaAttributeMapping()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IJavaAttributeMapping extends IAttributeMapping
+{
+ /**
+ * <!-- begin-user-doc -->
+ * Initialize the model after the AttributeMapping has been
+ * created and added to its container. Some things
+ * can't be accessed. Build anything that doesn't depend
+ * on resources throughout the model being built.
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ void initialize();
+
+ void updateFromJava(CompilationUnit astRoot);
+
+ /**
+ * Refresh defaults using the given DefaultsContext
+ * @param defaultsContext
+ */
+ void refreshDefaults(DefaultsContext defaultsContext);
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaAttributeMappingProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaAttributeMappingProvider.java
new file mode 100644
index 0000000000..ff71764a1f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaAttributeMappingProvider.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java;
+
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+
+/**
+ * Map a string key to an attribute mapping and its corresponding
+ * Java annotation adapter.
+ */
+public interface IJavaAttributeMappingProvider {
+
+ String key();
+
+ boolean defaultApplies(Attribute attribute, DefaultsContext defaultsContext);
+
+ IJavaAttributeMapping buildMapping(Attribute attribute);
+
+ DeclarationAnnotationAdapter declarationAnnotationAdapter();
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaContentNodes.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaContentNodes.java
new file mode 100644
index 0000000000..41ff7a5174
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaContentNodes.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java;
+
+import org.eclipse.jpt.core.internal.JpaCorePlugin;
+
+public interface IJavaContentNodes
+{
+ public static final String COMPILATION_UNIT_ID =
+ JpaCorePlugin.PLUGIN_ID + ".java.compilationUnit";
+
+ public static final String PERSISTENT_TYPE_ID =
+ JpaCorePlugin.PLUGIN_ID + ".java.persistentType";
+
+ public static final String PERSISTENT_ATTRIBUTE_ID =
+ JpaCorePlugin.PLUGIN_ID + ".java.persistentAttribute";
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaTypeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaTypeMapping.java
new file mode 100644
index 0000000000..9229cf05c7
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaTypeMapping.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java;
+
+import java.util.List;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IJava Type Mapping</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getIJavaTypeMapping()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IJavaTypeMapping extends ITypeMapping
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ void initialize();
+
+ void updateFromJava(CompilationUnit astRoot);
+
+ List<String> candidateValuesFor(int pos, CompilationUnit astRoot);
+
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaTypeMappingProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaTypeMappingProvider.java
new file mode 100644
index 0000000000..9f34675844
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/IJavaTypeMappingProvider.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java;
+
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Type;
+
+/**
+ * Map a string key to a type mapping and its corresponding
+ * Java annotation adapter.
+ */
+public interface IJavaTypeMappingProvider {
+
+ String key();
+
+ IJavaTypeMapping buildMapping(Type type);
+
+ DeclarationAnnotationAdapter declarationAnnotationAdapter();
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaEObject.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaEObject.java
new file mode 100644
index 0000000000..448f8e2089
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaEObject.java
@@ -0,0 +1,95 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java;
+
+import org.eclipse.core.resources.IResource;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.jpt.core.internal.IJpaFile;
+import org.eclipse.jpt.core.internal.IJpaRootContentNode;
+import org.eclipse.jpt.core.internal.IJpaSourceObject;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.JpaEObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java EObject</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getJavaEObject()
+ * @model kind="class" abstract="true"
+ * @generated
+ */
+public abstract class JavaEObject extends JpaEObject
+ implements IJpaSourceObject
+{
+ protected JavaEObject() {
+ super();
+ this.eAdapters().add(this.buildListener());
+ }
+
+ protected Adapter buildListener() {
+ return new AdapterImpl() {
+ @Override
+ public void notifyChanged(Notification notification) {
+ JavaEObject.this.notifyChanged(notification);
+ }
+ };
+ }
+
+ protected void notifyChanged(Notification notification) {
+ // do nothing by default
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaPackage.Literals.JAVA_EOBJECT;
+ }
+
+ public IJpaFile getJpaFile() {
+ return this.getRoot().getJpaFile();
+ }
+
+ public IJpaRootContentNode getRoot() {
+ return ((JavaEObject) this.eContainer()).getRoot();
+ }
+
+ @Override
+ public IResource getResource() {
+ return this.getJpaFile().getResource();
+ }
+
+ /**
+ * All features are "insiginificant". We do a resynch of our java model
+ * when it gets notification from the jdt java model. We had problems
+ * with the java model being in a bad state while doing our resynch.
+ */
+ @Override
+ protected boolean featureIsInsignificant(int featureId) {
+ return true;
+ }
+
+ /**
+ * Convenience method. If the specified element text range is null
+ * return the Java object's text range instead (which is usually the
+ * annotation's text range).
+ */
+ protected ITextRange elementTextRange(ITextRange elementTextRange) {
+ return (elementTextRange != null) ? elementTextRange : this.getTextRange();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaJpaFileContentProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaJpaFileContentProvider.java
new file mode 100644
index 0000000000..0a9164b47c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaJpaFileContentProvider.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.jpt.core.internal.IJpaFileContentProvider;
+import org.eclipse.jpt.core.internal.IJpaRootContentNode;
+import org.eclipse.jpt.core.internal.JpaCorePlugin;
+
+public class JavaJpaFileContentProvider implements IJpaFileContentProvider
+{
+ public static JavaJpaFileContentProvider INSTANCE = new JavaJpaFileContentProvider();
+
+ /**
+ * Restrict access
+ */
+ private JavaJpaFileContentProvider() {
+
+ }
+
+ public IJpaRootContentNode buildRootContent(IFile resourceFile) {
+ JpaCompilationUnit content = JpaJavaFactory.eINSTANCE.createJpaCompilationUnit();
+ content.setFile(resourceFile);
+ return content;
+ }
+
+ public String contentType() {
+ return JpaCorePlugin.JAVA_CONTENT_TYPE;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaPersistentAttribute.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaPersistentAttribute.java
new file mode 100644
index 0000000000..e603fb9fda
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaPersistentAttribute.java
@@ -0,0 +1,652 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java;
+
+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.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.jdt.core.IMember;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.IJpaContentNode;
+import org.eclipse.jpt.core.internal.IPersistentAttribute;
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.JpaCorePackage;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaBasicProvider;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbeddedIdProvider;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbeddedProvider;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaIdProvider;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaManyToManyProvider;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaManyToOneProvider;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaNullAttributeMappingProvider;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaOneToManyProvider;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaOneToOneProvider;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaTransientProvider;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaVersionProvider;
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+import org.eclipse.jpt.utility.internal.iterators.ArrayIterator;
+import org.eclipse.jpt.utility.internal.iterators.TransformationIterator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Persistent Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute#getDefaultMapping <em>Default Mapping</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute#getSpecifiedMapping <em>Specified Mapping</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getJavaPersistentAttribute()
+ * @model kind="class"
+ * @generated
+ */
+public class JavaPersistentAttribute extends JavaEObject
+ implements IPersistentAttribute
+{
+ /**
+ * The default value of the '{@link #getMappingKey() <em>Mapping Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMappingKey()
+ * @generated
+ * @ordered
+ */
+ protected static final String MAPPING_KEY_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getMappingKey() <em>Mapping Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMappingKey()
+ * @generated
+ * @ordered
+ */
+ protected String mappingKey = MAPPING_KEY_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getDefaultMapping() <em>Default Mapping</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultMapping()
+ * @generated
+ * @ordered
+ */
+ protected IJavaAttributeMapping defaultMapping;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedMapping() <em>Specified Mapping</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedMapping()
+ * @generated
+ * @ordered
+ */
+ protected IJavaAttributeMapping specifiedMapping;
+
+ private Attribute attribute;
+
+ // TODO move these to a singleton?
+ private IJavaAttributeMappingProvider[] attributeMappingProviders;
+
+ /**
+ * the "null" attribute mapping is used when the attribute is neither
+ * modified with a mapping annotation nor mapped by a "default" mapping
+ */
+ // TODO move this to a singleton?
+ private IJavaAttributeMappingProvider nullAttributeMappingProvider;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected JavaPersistentAttribute() {
+ super();
+ }
+
+ protected JavaPersistentAttribute(Attribute attribute) {
+ super();
+ this.attribute = attribute;
+ this.attributeMappingProviders = this.buildAttributeMappingProviders();
+ this.nullAttributeMappingProvider = this.buildNullAttributeMappingProvider();
+ }
+
+ private IJavaAttributeMappingProvider[] buildAttributeMappingProviders() {
+ ArrayList<IJavaAttributeMappingProvider> providers = new ArrayList<IJavaAttributeMappingProvider>();
+ this.addAttributeMappingProvidersTo(providers);
+ return providers.toArray(new IJavaAttributeMappingProvider[providers.size()]);
+ }
+
+ /**
+ * Override this to specify more or different attribute mapping providers.
+ * The default includes the JPA spec-defined type mappings of
+ * Basic, Id, OneToOne, OneToMany, ManyToOne, ManyToMany, Embeddable, EmbeddedId.
+ */
+ protected void addAttributeMappingProvidersTo(Collection<IJavaAttributeMappingProvider> providers) {
+ providers.add(JavaBasicProvider.instance());
+ providers.add(JavaIdProvider.instance());
+ providers.add(JavaTransientProvider.instance());
+ providers.add(JavaOneToManyProvider.instance());
+ providers.add(JavaManyToOneProvider.instance());
+ providers.add(JavaManyToManyProvider.instance());
+ providers.add(JavaOneToOneProvider.instance());
+ providers.add(JavaEmbeddedProvider.instance());
+ providers.add(JavaEmbeddedIdProvider.instance());
+ providers.add(JavaVersionProvider.instance());
+ }
+
+ protected IJavaAttributeMappingProvider buildNullAttributeMappingProvider() {
+ return JavaNullAttributeMappingProvider.instance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaPackage.Literals.JAVA_PERSISTENT_ATTRIBUTE;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Mapping Key</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Mapping Key</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Mapping Key</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getIPersistentAttribute_MappingKey()
+ * @model required="true" changeable="false"
+ * @generated
+ */
+ public String getMappingKey() {
+ return mappingKey;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Mapping</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Mapping</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Mapping</em>' containment reference.
+ * @see #setDefaultMapping(IJavaAttributeMapping)
+ * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getJavaPersistentAttribute_DefaultMapping()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ public IJavaAttributeMapping getDefaultMapping() {
+ return defaultMapping;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetDefaultMapping(IJavaAttributeMapping newDefaultMapping, NotificationChain msgs) {
+ IJavaAttributeMapping oldDefaultMapping = defaultMapping;
+ defaultMapping = newDefaultMapping;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__DEFAULT_MAPPING, oldDefaultMapping, newDefaultMapping);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute#getDefaultMapping <em>Default Mapping</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Default Mapping</em>' containment reference.
+ * @see #getDefaultMapping()
+ * @generated
+ */
+ public void setDefaultMapping(IJavaAttributeMapping newDefaultMapping) {
+ if (newDefaultMapping != defaultMapping) {
+ NotificationChain msgs = null;
+ if (defaultMapping != null)
+ msgs = ((InternalEObject) defaultMapping).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__DEFAULT_MAPPING, null, msgs);
+ if (newDefaultMapping != null)
+ msgs = ((InternalEObject) newDefaultMapping).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__DEFAULT_MAPPING, null, msgs);
+ msgs = basicSetDefaultMapping(newDefaultMapping, msgs);
+ if (msgs != null)
+ msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__DEFAULT_MAPPING, newDefaultMapping, newDefaultMapping));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Mapping</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Mapping</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Mapping</em>' containment reference.
+ * @see #setSpecifiedMapping(IJavaAttributeMapping)
+ * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getJavaPersistentAttribute_SpecifiedMapping()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ public IJavaAttributeMapping getSpecifiedMapping() {
+ return specifiedMapping;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetSpecifiedMapping(IJavaAttributeMapping newSpecifiedMapping, NotificationChain msgs) {
+ IJavaAttributeMapping oldSpecifiedMapping = specifiedMapping;
+ specifiedMapping = newSpecifiedMapping;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__SPECIFIED_MAPPING, oldSpecifiedMapping, newSpecifiedMapping);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute#getSpecifiedMapping <em>Specified Mapping</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Mapping</em>' containment reference.
+ * @see #getSpecifiedMapping()
+ * @generated
+ */
+ public void setSpecifiedMappingGen(IJavaAttributeMapping newSpecifiedMapping) {
+ if (newSpecifiedMapping != specifiedMapping) {
+ NotificationChain msgs = null;
+ if (specifiedMapping != null)
+ msgs = ((InternalEObject) specifiedMapping).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__SPECIFIED_MAPPING, null, msgs);
+ if (newSpecifiedMapping != null)
+ msgs = ((InternalEObject) newSpecifiedMapping).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__SPECIFIED_MAPPING, null, msgs);
+ msgs = basicSetSpecifiedMapping(newSpecifiedMapping, msgs);
+ if (msgs != null)
+ msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__SPECIFIED_MAPPING, newSpecifiedMapping, newSpecifiedMapping));
+ }
+
+ /**
+ * This should not be called when updating the persistence model
+ * from the java model, it should only be called when going in the
+ * other direction. This will update the java code appropriately
+ * to the change in mapping in the persistence model.
+ */
+ public void setSpecifiedMapping(IJavaAttributeMapping newMapping) {
+ if (this.specifiedMapping != null) {
+ this.attribute.removeAnnotation(this.annotationAdapterForAttributeMappingKey(this.specifiedMapping.getKey()));
+ }
+ if (newMapping != null) {
+ this.attribute.newMarkerAnnotation(this.annotationAdapterForAttributeMappingKey(newMapping.getKey()));
+ }
+ this.setSpecifiedMappingGen(newMapping);
+ }
+
+ protected void setMappingKeyInternal(String newMappingKey) {
+ String oldMappingKey = mappingKey;
+ mappingKey = newMappingKey;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__MAPPING_KEY, oldMappingKey, mappingKey));
+ }
+
+ /**
+ * This should not be called when updating the persistence model
+ * from the java model, it should only be called when going in the
+ * other direction. This will update the java code appropriately
+ * to the change in mapping in the persistence model.
+ */
+ public void setMappingKey(String newMappingKey, boolean default_) {
+ if (default_) {
+ setSpecifiedMapping(null);
+ setMappingKeyInternal(newMappingKey);
+ return;
+ }
+ this.setSpecifiedMapping(this.buildMapping(newMappingKey));
+ if (this.specifiedMapping != null) {
+ this.specifiedMapping.initialize();
+ }
+ this.setMappingKeyInternal(newMappingKey);
+ //TODO need to support mapping morphing, copying common settings over
+ //to the new mapping. This can't be done in the same was as XmlAttributeMapping
+ //since we don't know all the possible mapping types
+ }
+
+ public IJavaAttributeMapping getMapping() {
+ return getSpecifiedMapping() != null ? getSpecifiedMapping() : getDefaultMapping();
+ }
+
+ public String getName() {
+ return getAttribute().attributeName();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__DEFAULT_MAPPING :
+ return basicSetDefaultMapping(null, msgs);
+ case JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__SPECIFIED_MAPPING :
+ return basicSetSpecifiedMapping(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 JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__MAPPING_KEY :
+ return getMappingKey();
+ case JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__DEFAULT_MAPPING :
+ return getDefaultMapping();
+ case JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__SPECIFIED_MAPPING :
+ return getSpecifiedMapping();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__DEFAULT_MAPPING :
+ setDefaultMapping((IJavaAttributeMapping) newValue);
+ return;
+ case JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__SPECIFIED_MAPPING :
+ setSpecifiedMapping((IJavaAttributeMapping) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__DEFAULT_MAPPING :
+ setDefaultMapping((IJavaAttributeMapping) null);
+ return;
+ case JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__SPECIFIED_MAPPING :
+ setSpecifiedMapping((IJavaAttributeMapping) null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__MAPPING_KEY :
+ return MAPPING_KEY_EDEFAULT == null ? mappingKey != null : !MAPPING_KEY_EDEFAULT.equals(mappingKey);
+ case JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__DEFAULT_MAPPING :
+ return defaultMapping != null;
+ case JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__SPECIFIED_MAPPING :
+ return specifiedMapping != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IJpaContentNode.class) {
+ switch (derivedFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IPersistentAttribute.class) {
+ switch (derivedFeatureID) {
+ case JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__MAPPING_KEY :
+ return JpaCorePackage.IPERSISTENT_ATTRIBUTE__MAPPING_KEY;
+ 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 == IJpaContentNode.class) {
+ switch (baseFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IPersistentAttribute.class) {
+ switch (baseFeatureID) {
+ case JpaCorePackage.IPERSISTENT_ATTRIBUTE__MAPPING_KEY :
+ return JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE__MAPPING_KEY;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (mappingKey: ");
+ result.append(mappingKey);
+ result.append(')');
+ return result.toString();
+ }
+
+ public IPersistentType getPersistentType() {
+ return (IPersistentType) this.eContainer();
+ }
+
+ public ITypeMapping typeMapping() {
+ return this.getPersistentType().getMapping();
+ }
+
+ private IJavaAttributeMappingProvider attributeMappingProviderFor(String attributeMappingKey) {
+ for (IJavaAttributeMappingProvider provider : this.attributeMappingProviders) {
+ if (provider.key() == attributeMappingKey) {
+ return provider;
+ }
+ }
+ throw new IllegalArgumentException("Unsupported attribute mapping key: " + attributeMappingKey);
+ }
+
+ private DeclarationAnnotationAdapter annotationAdapterForAttributeMappingKey(String attributeMappingKey) {
+ return this.attributeMappingProviderFor(attributeMappingKey).declarationAnnotationAdapter();
+ }
+
+ public Iterator<String> candidateMappingKeys() {
+ return new TransformationIterator<IJavaAttributeMappingProvider, String>(new ArrayIterator<IJavaAttributeMappingProvider>(this.attributeMappingProviders)) {
+ protected String transform(IJavaAttributeMappingProvider next) {
+ return next.key();
+ }
+ };
+ }
+
+ public Object getId() {
+ return IJavaContentNodes.PERSISTENT_ATTRIBUTE_ID;
+ }
+
+ public Attribute getAttribute() {
+ return this.attribute;
+ }
+
+ public ITextRange getTextRange() {
+ return this.attribute.textRange();
+ }
+
+ public boolean isFor(IMember member) {
+ return this.attribute.wraps(member);
+ }
+
+ public void updateFromJava(CompilationUnit astRoot) {
+ String jpaKey = null;
+ if (this.specifiedMapping != null) {
+ jpaKey = this.specifiedMapping.getKey();
+ }
+ String javaKey = this.javaAttributeMappingKey(astRoot);
+ if (javaKey == null) { // no annotation
+ if (this.specifiedMapping != null) {
+ setSpecifiedMapping(null);
+ }
+ }
+ else if (jpaKey != javaKey) {
+ this.createAndSetMappingFromJava(javaKey);
+ }
+ if (getMapping() != null) {
+ getMapping().updateFromJava(astRoot);
+ }
+ }
+
+ private void createAndSetMappingFromJava(String key) {
+ this.setSpecifiedMappingGen(this.buildMapping(key));
+ this.specifiedMapping.initialize();
+ this.setMappingKeyInternal(this.specifiedMapping.getKey());
+ }
+
+ //A null key means there is no "mapping" annotation on the attribute.
+ //In this case check the attributeMappingProviders for one that the defaultApplies
+ //and create the mapping. If the key is not null then create the mapping
+ //based on the appropriate provider, otherwise return the a nullAttributeMapping
+ private IJavaAttributeMapping buildMapping(String key) {
+ if (key == null) {
+ return null;
+ }
+ for (IJavaAttributeMappingProvider provider : this.attributeMappingProviders) {
+ if (provider.key() == key) {
+ return provider.buildMapping(this.attribute);
+ }
+ }
+ return this.nullAttributeMappingProvider.buildMapping(this.attribute);
+ }
+
+ private String javaAttributeMappingKey(CompilationUnit astRoot) {
+ for (IJavaAttributeMappingProvider provider : this.attributeMappingProviders) {
+ if (this.attribute.containsAnnotation(provider.declarationAnnotationAdapter(), astRoot)) {
+ return provider.key();
+ }
+ }
+ return null;
+ }
+
+ public String defaultKey() {
+ if (this.defaultMapping != null) {
+ return this.defaultMapping.getKey();
+ }
+ return null;
+ }
+
+ public String primaryKeyColumnName() {
+ if (getMapping() != null) {
+ return getMapping().primaryKeyColumnName();
+ }
+ return null;
+ }
+
+ public boolean isAttributeMappingDefault() {
+ return this.specifiedMapping == null;
+ }
+
+ public List<String> candidateValuesFor(int pos, CompilationUnit astRoot) {
+ return Collections.emptyList();
+ }
+
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ for (IJavaAttributeMappingProvider provider : this.attributeMappingProviders) {
+ if (provider.defaultApplies(this.attribute, defaultsContext)) {
+ if (getDefaultMapping() != null) {
+ if (getDefaultMapping().getKey() == provider.key()) {
+ return;
+ }
+ }
+ setDefaultMapping(provider.buildMapping(this.attribute));
+ getDefaultMapping().updateFromJava(getAttribute().astRoot());
+ if (getSpecifiedMapping() == null) {
+ setMappingKeyInternal(getDefaultMapping().getKey());
+ }
+ return;
+ }
+ }
+ setDefaultMapping(this.nullAttributeMappingProvider.buildMapping(this.attribute));
+ getDefaultMapping().updateFromJava(getAttribute().astRoot());
+ if (getSpecifiedMapping() == null) {
+ setMappingKeyInternal(getDefaultMapping().getKey());
+ }
+ }
+} // JavaPersistentAttribute
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaPersistentType.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaPersistentType.java
new file mode 100644
index 0000000000..9f9f9ef211
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JavaPersistentType.java
@@ -0,0 +1,917 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+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.ecore.EClass;
+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.jdt.core.ICompilationUnit;
+import org.eclipse.jdt.core.IField;
+import org.eclipse.jdt.core.IJavaElement;
+import org.eclipse.jdt.core.IMember;
+import org.eclipse.jdt.core.IMethod;
+import org.eclipse.jdt.core.ISourceRange;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.AccessType;
+import org.eclipse.jpt.core.internal.IJpaContentNode;
+import org.eclipse.jpt.core.internal.IPersistentAttribute;
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.JpaCorePackage;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaAssociationOverride;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaAttributeOverride;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaBasic;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaColumn;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbeddableProvider;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbedded;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbeddedId;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaEntityProvider;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaGeneratedValue;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaId;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaJoinColumn;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaJoinTable;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaManyToMany;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaManyToOne;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaMappedSuperclassProvider;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaNullTypeMappingProvider;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaOneToMany;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaOneToOne;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaOrderBy;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaPrimaryKeyJoinColumn;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaSequenceGenerator;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaTableGenerator;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaTransient;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaVersion;
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.jdtutility.AttributeAnnotationTools;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.FieldAttribute;
+import org.eclipse.jpt.core.internal.jdtutility.JDTTools;
+import org.eclipse.jpt.core.internal.jdtutility.MethodAttribute;
+import org.eclipse.jpt.core.internal.jdtutility.Type;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+import org.eclipse.jpt.utility.internal.iterators.ArrayIterator;
+import org.eclipse.jpt.utility.internal.iterators.ChainIterator;
+import org.eclipse.jpt.utility.internal.iterators.CompositeIterator;
+import org.eclipse.jpt.utility.internal.iterators.ReadOnlyIterator;
+import org.eclipse.jpt.utility.internal.iterators.TransformationIterator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.java.JavaPersistentType#getMapping <em>Mapping</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.java.JavaPersistentType#getAttributes <em>Attributes</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.java.JavaPersistentType#getAccess <em>Access</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getJavaPersistentType()
+ * @model kind="class"
+ * @generated
+ */
+public class JavaPersistentType extends JavaEObject implements IPersistentType
+{
+ /**
+ * The default value of the '{@link #getMappingKey() <em>Mapping Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMappingKey()
+ * @generated
+ * @ordered
+ */
+ protected static final String MAPPING_KEY_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getMappingKey() <em>Mapping Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMappingKey()
+ * @generated
+ * @ordered
+ */
+ protected String mappingKey = MAPPING_KEY_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getMapping() <em>Mapping</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMapping()
+ * @generated
+ * @ordered
+ */
+ protected IJavaTypeMapping mapping;
+
+ /**
+ * The cached value of the '{@link #getAttributes() <em>Attributes</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAttributes()
+ * @generated
+ * @ordered
+ */
+ protected EList<JavaPersistentAttribute> attributes;
+
+ /**
+ * The default value of the '{@link #getAccess() <em>Access</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAccess()
+ * @generated
+ * @ordered
+ */
+ protected static final AccessType ACCESS_EDEFAULT = AccessType.DEFAULT;
+
+ /**
+ * The cached value of the '{@link #getAccess() <em>Access</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAccess()
+ * @generated
+ * @ordered
+ */
+ protected AccessType access = ACCESS_EDEFAULT;
+
+ private Type type;
+
+ private IJavaTypeMappingProvider[] typeMappingProviders;
+
+ private DeclarationAnnotationAdapter[] attributeMappingAnnotationAdapters;
+
+ /**
+ * Store the parentPersistentType during default calculation. This will
+ * be the first persisentType found in the hierarchy, the JPA spec allows
+ * for non-persistent types to be part of the hierarchy.
+ * Example:
+ *
+ * @Entity public abstract class Model {}
+ *
+ * public abstract class Animal extends Model {}
+ *
+ * @Entity public class Cat extends Animal {}
+ *
+ * If this is the Cat JavaPersistentType then parentPersistentType is the Model JavaPersistentType
+ * The parentPersistentType could be found in java or xml.
+ */
+ private IPersistentType parentPersistentType;
+
+ protected JavaPersistentType() {
+ super();
+ this.typeMappingProviders = this.buildTypeMappingProviders();
+ this.attributeMappingAnnotationAdapters = this.buildAttributeMappingAnnotationAdapters();
+ }
+
+ private IJavaTypeMappingProvider[] buildTypeMappingProviders() {
+ ArrayList<IJavaTypeMappingProvider> providers = new ArrayList<IJavaTypeMappingProvider>();
+ this.addTypeMappingProvidersTo(providers);
+ return providers.toArray(new IJavaTypeMappingProvider[providers.size()]);
+ }
+
+ /**
+ * Override this to specify more or different type mapping providers.
+ * The default includes the JPA spec-defined type mappings of
+ * Entity, MappedSuperclass, and Embeddable
+ */
+ protected void addTypeMappingProvidersTo(Collection<IJavaTypeMappingProvider> providers) {
+ providers.add(JavaNullTypeMappingProvider.instance());
+ providers.add(JavaEntityProvider.instance());
+ providers.add(JavaMappedSuperclassProvider.instance());
+ providers.add(JavaEmbeddableProvider.instance());
+ }
+
+ private DeclarationAnnotationAdapter[] buildAttributeMappingAnnotationAdapters() {
+ ArrayList<DeclarationAnnotationAdapter> adapters = new ArrayList<DeclarationAnnotationAdapter>();
+ this.addAttributeMappingAnnotationAdaptersTo(adapters);
+ return adapters.toArray(new DeclarationAnnotationAdapter[adapters.size()]);
+ }
+
+ /**
+ * Override this to specify more or different attribute mapping annotation
+ * adapters. The default includes the JPA spec-defined attribute mapping
+ * annotations.
+ */
+ protected void addAttributeMappingAnnotationAdaptersTo(Collection<DeclarationAnnotationAdapter> adapters) {
+ adapters.add(JavaAssociationOverride.SINGLE_DECLARATION_ANNOTATION_ADAPTER);
+ adapters.add(JavaAssociationOverride.MULTIPLE_DECLARATION_ANNOTATION_ADAPTER); // AssociationOverrides
+ adapters.add(JavaAttributeOverride.SINGLE_DECLARATION_ANNOTATION_ADAPTER);
+ adapters.add(JavaAttributeOverride.MULTIPLE_DECLARATION_ANNOTATION_ADAPTER); // AttributeOverrides
+ adapters.add(JavaBasic.DECLARATION_ANNOTATION_ADAPTER);
+ adapters.add(JavaColumn.MAPPING_DECLARATION_ANNOTATION_ADAPTER); // standalone Column
+ adapters.add(JavaEmbedded.DECLARATION_ANNOTATION_ADAPTER);
+ adapters.add(JavaEmbeddedId.DECLARATION_ANNOTATION_ADAPTER);
+ adapters.add(JavaBasic.ENUMERATED_ADAPTER);
+ adapters.add(JavaGeneratedValue.DECLARATION_ANNOTATION_ADAPTER);
+ adapters.add(JavaId.DECLARATION_ANNOTATION_ADAPTER);
+ adapters.add(JavaJoinColumn.SINGLE_DECLARATION_ANNOTATION_ADAPTER);
+ adapters.add(JavaJoinColumn.MULTIPLE_DECLARATION_ANNOTATION_ADAPTER); // JoinColumns
+ adapters.add(JavaJoinTable.DECLARATION_ANNOTATION_ADAPTER);
+ adapters.add(JavaBasic.LOB_ADAPTER);
+ adapters.add(JavaManyToMany.DECLARATION_ANNOTATION_ADAPTER);
+ adapters.add(JavaManyToOne.DECLARATION_ANNOTATION_ADAPTER);
+ // TODO ? adapters.add(JavaMultiRelationshipMapping.MAP_KEY_ADAPTER);
+ adapters.add(JavaOneToMany.DECLARATION_ANNOTATION_ADAPTER);
+ adapters.add(JavaOneToOne.DECLARATION_ANNOTATION_ADAPTER);
+ adapters.add(JavaOrderBy.DECLARATION_ANNOTATION_ADAPTER);
+ adapters.add(JavaPrimaryKeyJoinColumn.MULTIPLE_DECLARATION_ANNOTATION_ADAPTER);
+ adapters.add(JavaPrimaryKeyJoinColumn.SINGLE_DECLARATION_ANNOTATION_ADAPTER); // PrimaryKeyJoinColumns
+ adapters.add(JavaSequenceGenerator.DECLARATION_ANNOTATION_ADAPTER);
+ adapters.add(JavaTableGenerator.DECLARATION_ANNOTATION_ADAPTER);
+ adapters.add(JavaBasic.TEMPORAL_ADAPTER);
+ adapters.add(JavaTransient.DECLARATION_ANNOTATION_ADAPTER);
+ adapters.add(JavaVersion.DECLARATION_ANNOTATION_ADAPTER);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaPackage.Literals.JAVA_PERSISTENT_TYPE;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Mapping Key</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Mapping Key</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Mapping Key</em>' attribute.
+ * @see #setMappingKey(String)
+ * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getIPersistentType_MappingKey()
+ * @model required="true"
+ * @generated
+ */
+ public String getMappingKey() {
+ return mappingKey;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.JavaPersistentType#getMappingKey <em>Mapping Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Mapping Key</em>' attribute.
+ * @see #getMappingKey()
+ * @generated
+ */
+ public void setMappingKeyGen(String newMappingKey) {
+ String oldMappingKey = mappingKey;
+ mappingKey = newMappingKey;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaPackage.JAVA_PERSISTENT_TYPE__MAPPING_KEY, oldMappingKey, mappingKey));
+ }
+
+ /**
+ * This is called by the UI, it should not be called when updating
+ * the persistence model from the java model.
+ */
+ public void setMappingKey(String newMappingKey) {
+ if (newMappingKey == this.mappingKey) {
+ return;
+ }
+ setMapping(buildJavaTypeMapping(newMappingKey));
+ setMappingKeyGen(newMappingKey);
+ }
+
+ /**
+ * Returns the value of the '<em><b>Mapping</b></em>' containment reference.
+ * The default value is <code>""</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Mapping</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Mapping</em>' containment reference.
+ * @see #setMapping(IJavaTypeMapping)
+ * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getJavaPersistentType_Mapping()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ public IJavaTypeMapping getMapping() {
+ return mapping;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetMapping(IJavaTypeMapping newMapping, NotificationChain msgs) {
+ IJavaTypeMapping oldMapping = mapping;
+ mapping = newMapping;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, JpaJavaPackage.JAVA_PERSISTENT_TYPE__MAPPING, oldMapping, newMapping);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.JavaPersistentType#getMapping <em>Mapping</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Mapping</em>' containment reference.
+ * @see #getMapping()
+ * @generated
+ */
+ public void setMappingGen(IJavaTypeMapping newMapping) {
+ if (newMapping != mapping) {
+ NotificationChain msgs = null;
+ if (mapping != null)
+ msgs = ((InternalEObject) mapping).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - JpaJavaPackage.JAVA_PERSISTENT_TYPE__MAPPING, null, msgs);
+ if (newMapping != null)
+ msgs = ((InternalEObject) newMapping).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - JpaJavaPackage.JAVA_PERSISTENT_TYPE__MAPPING, null, msgs);
+ msgs = basicSetMapping(newMapping, msgs);
+ if (msgs != null)
+ msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaPackage.JAVA_PERSISTENT_TYPE__MAPPING, newMapping, newMapping));
+ }
+
+ /**
+ * This should not be called when updating the persistence model
+ * from the java model, it should only be called when going in the
+ * other direction. This will update the java code appropriately
+ * to the change in mapping in the persistence model.
+ */
+ public void setMapping(IJavaTypeMapping newMapping) {
+ this.type.removeAnnotation(this.annotationAdapterForTypeMappingKey(this.mapping.getKey()));
+ this.type.newMarkerAnnotation(this.annotationAdapterForTypeMappingKey(newMapping.getKey()));
+ this.setMappingGen(newMapping);
+ }
+
+ private DeclarationAnnotationAdapter annotationAdapterForTypeMappingKey(String typeMappingKey) {
+ return this.typeMappingProviderFor(typeMappingKey).declarationAnnotationAdapter();
+ }
+
+ private IJavaTypeMappingProvider typeMappingProviderFor(String typeMappingKey) {
+ for (IJavaTypeMappingProvider provider : this.typeMappingProviders) {
+ if (provider.key() == typeMappingKey) {
+ return provider;
+ }
+ }
+ throw new IllegalArgumentException("Unsupported type mapping key: " + typeMappingKey);
+ }
+
+ /**
+ * Returns the value of the '<em><b>Attributes</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Attributes</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>Attributes</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getJavaPersistentType_Attributes()
+ * @model type="org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute" containment="true"
+ * @generated
+ */
+ public EList<JavaPersistentAttribute> getAttributes() {
+ if (attributes == null) {
+ attributes = new EObjectContainmentEList<JavaPersistentAttribute>(JavaPersistentAttribute.class, this, JpaJavaPackage.JAVA_PERSISTENT_TYPE__ATTRIBUTES);
+ }
+ return attributes;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Access</b></em>' attribute.
+ * The default value is <code>""</code>.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.AccessType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Access</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Access</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.AccessType
+ * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getJavaPersistentType_Access()
+ * @model default="" changeable="false"
+ * @generated
+ */
+ public AccessType getAccess() {
+ return access;
+ }
+
+ private void setAccess(AccessType newAccess) {
+ AccessType oldAccess = access;
+ access = newAccess == null ? ACCESS_EDEFAULT : newAccess;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaPackage.JAVA_PERSISTENT_TYPE__ACCESS, oldAccess, access));
+ }
+
+ /* @see IJpaContentNode#getId() */
+ public Object getId() {
+ return IJavaContentNodes.PERSISTENT_TYPE_ID;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case JpaJavaPackage.JAVA_PERSISTENT_TYPE__MAPPING :
+ return basicSetMapping(null, msgs);
+ case JpaJavaPackage.JAVA_PERSISTENT_TYPE__ATTRIBUTES :
+ return ((InternalEList<?>) getAttributes()).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 JpaJavaPackage.JAVA_PERSISTENT_TYPE__MAPPING_KEY :
+ return getMappingKey();
+ case JpaJavaPackage.JAVA_PERSISTENT_TYPE__MAPPING :
+ return getMapping();
+ case JpaJavaPackage.JAVA_PERSISTENT_TYPE__ATTRIBUTES :
+ return getAttributes();
+ case JpaJavaPackage.JAVA_PERSISTENT_TYPE__ACCESS :
+ return getAccess();
+ }
+ 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 JpaJavaPackage.JAVA_PERSISTENT_TYPE__MAPPING_KEY :
+ setMappingKey((String) newValue);
+ return;
+ case JpaJavaPackage.JAVA_PERSISTENT_TYPE__MAPPING :
+ setMapping((IJavaTypeMapping) newValue);
+ return;
+ case JpaJavaPackage.JAVA_PERSISTENT_TYPE__ATTRIBUTES :
+ getAttributes().clear();
+ getAttributes().addAll((Collection<? extends JavaPersistentAttribute>) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaJavaPackage.JAVA_PERSISTENT_TYPE__MAPPING_KEY :
+ setMappingKey(MAPPING_KEY_EDEFAULT);
+ return;
+ case JpaJavaPackage.JAVA_PERSISTENT_TYPE__MAPPING :
+ setMapping((IJavaTypeMapping) null);
+ return;
+ case JpaJavaPackage.JAVA_PERSISTENT_TYPE__ATTRIBUTES :
+ getAttributes().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaJavaPackage.JAVA_PERSISTENT_TYPE__MAPPING_KEY :
+ return MAPPING_KEY_EDEFAULT == null ? mappingKey != null : !MAPPING_KEY_EDEFAULT.equals(mappingKey);
+ case JpaJavaPackage.JAVA_PERSISTENT_TYPE__MAPPING :
+ return mapping != null;
+ case JpaJavaPackage.JAVA_PERSISTENT_TYPE__ATTRIBUTES :
+ return attributes != null && !attributes.isEmpty();
+ case JpaJavaPackage.JAVA_PERSISTENT_TYPE__ACCESS :
+ return access != ACCESS_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IJpaContentNode.class) {
+ switch (derivedFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IPersistentType.class) {
+ switch (derivedFeatureID) {
+ case JpaJavaPackage.JAVA_PERSISTENT_TYPE__MAPPING_KEY :
+ return JpaCorePackage.IPERSISTENT_TYPE__MAPPING_KEY;
+ 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 == IJpaContentNode.class) {
+ switch (baseFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IPersistentType.class) {
+ switch (baseFeatureID) {
+ case JpaCorePackage.IPERSISTENT_TYPE__MAPPING_KEY :
+ return JpaJavaPackage.JAVA_PERSISTENT_TYPE__MAPPING_KEY;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (mappingKey: ");
+ result.append(mappingKey);
+ result.append(", access: ");
+ result.append(access);
+ result.append(')');
+ return result.toString();
+ }
+
+ public void setJdtType(IType iType) {
+ this.type = new Type(iType);
+ this.setAccess(this.javaAccessType(this.getType().astRoot()));
+ this.createAndSetPersistentTypeMappingFromJava(this.javaTypeMappingKey());
+ }
+
+ public JavaPersistentAttribute addJavaPersistentAttribute(IMember jdtMember) {
+ JavaPersistentAttribute persistentAttribute = createJavaPersistentAttribute(jdtMember);
+ getAttributes().add(persistentAttribute);
+ return persistentAttribute;
+ }
+
+ public JavaPersistentAttribute createJavaPersistentAttribute(IMember member) {
+ Attribute attribute = null;
+ if (member instanceof IField) {
+ attribute = new FieldAttribute((IField) member);
+ }
+ else if (member instanceof IMethod) {
+ attribute = new MethodAttribute((IMethod) member);
+ }
+ else {
+ throw new IllegalArgumentException();
+ }
+ return JpaJavaFactory.eINSTANCE.createJavaPersistentAttribute(attribute);
+ }
+
+ private void createAndSetPersistentTypeMappingFromJava(String key) {
+ setMappingGen(buildJavaTypeMapping(key));
+ setMappingKeyGen(key);
+ }
+
+ private IJavaTypeMapping buildJavaTypeMapping(String key) {
+ return this.typeMappingProviderFor(key).buildMapping(this.type);
+ }
+
+ public Type getType() {
+ return this.type;
+ }
+
+ public String fullyQualifiedTypeName() {
+ return jdtType().getFullyQualifiedName();
+ }
+
+ public IType jdtType() {
+ return getType().jdtType();
+ }
+
+ /**
+ * This implementation of IPersistentType#findJdtType() will
+ * *always* find its type
+ */
+ public IType findJdtType() {
+ return jdtType();
+ }
+
+ public boolean isFor(IType member) {
+ return this.type.wraps(member);
+ }
+
+ protected void updateFromJava() {
+ CompilationUnit astRoot = this.getType().astRoot();
+ this.setAccess(this.javaAccessType(astRoot));
+ String jpaKey = this.getMapping().getKey();
+ String javaKey = this.javaTypeMappingKey();
+ if (jpaKey != javaKey) {
+ this.createAndSetPersistentTypeMappingFromJava(javaKey);
+ }
+ this.getMapping().updateFromJava(astRoot);
+ this.updatePersistentAttributes(astRoot);
+ }
+
+ private void updatePersistentAttributes(CompilationUnit astRoot) {
+ List<JavaPersistentAttribute> persistentAttributesToRemove = new ArrayList<JavaPersistentAttribute>(getAttributes());
+ if (getAccess() == AccessType.FIELD) {
+ updatePersistentFields(astRoot, persistentAttributesToRemove);
+ }
+ else if (getAccess() == AccessType.PROPERTY) {
+ updatePersistentProperties(astRoot, persistentAttributesToRemove);
+ }
+ getAttributes().removeAll(persistentAttributesToRemove);
+ }
+
+ private void updatePersistentFields(CompilationUnit astRoot, List<JavaPersistentAttribute> persistentAttributesToRemove) {
+ for (IField field : this.jdtPersistableFields()) {
+ JavaPersistentAttribute persistentAttribute = persistentAttributeFor(field);
+ if (persistentAttribute == null) {
+ persistentAttribute = addJavaPersistentAttribute(field);
+ }
+ else {
+ persistentAttributesToRemove.remove(persistentAttribute);
+ }
+ persistentAttribute.updateFromJava(astRoot);
+ }
+ }
+
+ private void updatePersistentProperties(CompilationUnit astRoot, List<JavaPersistentAttribute> persistentAttributesToRemove) {
+ for (IMethod method : this.jdtPersistableProperties()) {
+ JavaPersistentAttribute persistentAttribute = persistentAttributeFor(method);
+ if (persistentAttribute == null) {
+ addJavaPersistentAttribute(method);
+ }
+ else {
+ persistentAttributesToRemove.remove(persistentAttribute);
+ persistentAttribute.updateFromJava(astRoot);
+ }
+ }
+ }
+
+ private IField[] jdtPersistableFields() {
+ return AttributeAnnotationTools.persistableFields(jdtType());
+ }
+
+ private IMethod[] jdtPersistableProperties() {
+ return AttributeAnnotationTools.persistablePropertyGetters(jdtType());
+ }
+
+ private String javaTypeMappingKey() {
+ CompilationUnit astRoot = this.type.astRoot();
+ for (IJavaTypeMappingProvider provider : this.typeMappingProviders) {
+ if (this.type.containsAnnotation(provider.declarationAnnotationAdapter(), astRoot)) {
+ return provider.key();
+ }
+ }
+ return null;
+ }
+
+ public Iterator<String> candidateMappingKeys() {
+ return new TransformationIterator<IJavaTypeMappingProvider, String>(new ArrayIterator<IJavaTypeMappingProvider>(this.typeMappingProviders)) {
+ @Override
+ protected String transform(IJavaTypeMappingProvider p) {
+ return p.key();
+ }
+ };
+ }
+
+ public JavaPersistentAttribute attributeNamed(String attributeName) {
+ for (JavaPersistentAttribute attribute : this.getAttributes()) {
+ if (attributeName.equals(attribute.getName())) {
+ return attribute;
+ }
+ }
+ return null;
+ }
+
+ public boolean containsOffset(int offset) {
+ try {
+ ISourceRange sourceRange = jdtType().getSourceRange();
+ return (sourceRange.getOffset() <= offset) && (offset < sourceRange.getOffset() + sourceRange.getLength());
+ }
+ catch (JavaModelException jme) {
+ return false;
+ }
+ }
+
+ public List<String> candidateValuesFor(int pos, CompilationUnit astRoot) {
+ List<String> values = this.mapping.candidateValuesFor(pos, astRoot);
+ if (values != null) {
+ return values;
+ }
+ for (JavaPersistentAttribute attribute : this.getAttributes()) {
+ values = attribute.candidateValuesFor(pos, astRoot);
+ if (values != null) {
+ return values;
+ }
+ }
+ return null;
+ }
+
+ public IJpaContentNode contentNodeAt(int offset) {
+ ICompilationUnit unit = this.type.jdtType().getCompilationUnit();
+ if (unit == null) {
+ return null;
+ }
+ IJavaElement javaElement = null;
+ try {
+ javaElement = unit.getElementAt(offset);
+ } catch (JavaModelException ex) {
+ // fall through
+ }
+ if (javaElement == null) {
+ // typically happens between the package declarations and the source type
+ return null;
+ }
+ switch (javaElement.getElementType()) {
+ case IJavaElement.TYPE :
+ if (((IType) javaElement).getKey().equals(this.type.jdtType().getKey())) {
+ return this;
+ }
+ break;
+ case IJavaElement.FIELD :
+ case IJavaElement.METHOD :
+ return this.persistentAttributeFor((IMember) javaElement);
+ default :
+ break;
+ }
+ return this;
+ }
+
+ public ITextRange getTextRange() {
+ return type.textRange();
+ }
+
+ private JavaPersistentAttribute persistentAttributeFor(IMember member) {
+ for (JavaPersistentAttribute attribute : this.getAttributes()) {
+ if (attribute.isFor(member)) {
+ return attribute;
+ }
+ }
+ return null;
+ }
+
+ public Iterator<IPersistentAttribute> attributes() {
+ return new ReadOnlyIterator<IPersistentAttribute>(getAttributes());
+ }
+
+ public Iterator<IPersistentAttribute> allAttributes() {
+ return new CompositeIterator<IPersistentAttribute>(new TransformationIterator<IPersistentType, Iterator<IPersistentAttribute>>(this.inheritanceHierarchy()) {
+ @Override
+ protected Iterator<IPersistentAttribute> transform(IPersistentType pt) {
+ return pt.attributes();
+ }
+ });
+ }
+
+ public Iterator<IPersistentType> inheritanceHierarchy() {
+ // using a chain iterator to traverse up the inheritance tree
+ return new ChainIterator<IPersistentType>(this) {
+ @Override
+ protected IPersistentType nextLink(IPersistentType pt) {
+ return pt.parentPersistentType();
+ }
+ };
+ }
+
+ public IPersistentType parentPersistentType() {
+ return this.parentPersistentType;
+ }
+
+ private String superclassTypeSignature() {
+ try {
+ return this.jdtType().getSuperclassTypeSignature();
+ }
+ catch (JavaModelException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ /**
+ * Return the AccessType currently implied by the Java source code:
+ * - if only Fields are annotated => FIELD
+ * - if only Properties are annotated => PROPERTY
+ * - if both Fields and Properties are annotated => FIELD
+ * - if nothing is annotated
+ * - and fields exist => FIELD
+ * - and properties exist, but no fields exist => PROPERTY
+ * - and neither fields nor properties exist => FIELD
+ */
+ private AccessType javaAccessType(CompilationUnit astRoot) {
+ IType jdtType = this.jdtType();
+ boolean hasPersistableFields = false;
+ boolean hasPersistableProperties = false;
+ for (IField field : AttributeAnnotationTools.persistableFields(jdtType)) {
+ hasPersistableFields = true;
+ FieldAttribute fa = new FieldAttribute(field);
+ if (fa.containsAnyAnnotation(this.attributeMappingAnnotationAdapters, astRoot)) {
+ // any field is annotated => FIELD
+ return AccessType.FIELD;
+ }
+ }
+ for (IMethod method : AttributeAnnotationTools.persistablePropertyGetters(jdtType)) {
+ hasPersistableProperties = true;
+ MethodAttribute ma = new MethodAttribute(method);
+ if (ma.containsAnyAnnotation(this.attributeMappingAnnotationAdapters, astRoot)) {
+ // none of the fields are annotated and a getter is annotated => PROPERTY
+ return AccessType.PROPERTY;
+ }
+ }
+ // no annotations exist - default to fields, unless it's *obvious* to use properties
+ if (hasPersistableProperties && !hasPersistableFields) {
+ return AccessType.PROPERTY;
+ }
+ return AccessType.FIELD;
+ }
+
+ public void refreshDefaults(DefaultsContext context) {
+ refreshParentPersistentType(context);
+ }
+
+ private void refreshParentPersistentType(DefaultsContext context) {
+ String superclassTypeSignature = this.superclassTypeSignature();
+ if (superclassTypeSignature == null) {
+ this.parentPersistentType = null;
+ return;
+ }
+ String fullyQualifiedTypeName = JDTTools.resolveSignature(superclassTypeSignature, this.jdtType());
+ if (fullyQualifiedTypeName == null) {
+ this.parentPersistentType = null;
+ return;
+ }
+ IPersistentType possibleParent = context.persistentType(fullyQualifiedTypeName);
+ if (possibleParent == null) {
+ //TODO look to superclass
+ this.parentPersistentType = null;
+ return;
+ }
+ if (possibleParent.getMappingKey() != null) {
+ this.parentPersistentType = possibleParent;
+ }
+ else {
+ this.parentPersistentType = possibleParent.parentPersistentType();
+ }
+ }
+} // JavaType
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JpaCompilationUnit.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JpaCompilationUnit.java
new file mode 100644
index 0000000000..4f387634f3
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JpaCompilationUnit.java
@@ -0,0 +1,432 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import org.eclipse.core.resources.IFile;
+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.jdt.core.ElementChangedEvent;
+import org.eclipse.jdt.core.ICompilationUnit;
+import org.eclipse.jdt.core.IJavaElement;
+import org.eclipse.jdt.core.IJavaElementDelta;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.IJpaContentNode;
+import org.eclipse.jpt.core.internal.IJpaFile;
+import org.eclipse.jpt.core.internal.IJpaRootContentNode;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.JpaCorePackage;
+import org.eclipse.jpt.core.internal.JpaFile;
+import org.eclipse.jpt.core.internal.jdtutility.ASTNodeTextRange;
+import org.eclipse.jpt.core.internal.jdtutility.AttributeAnnotationTools;
+import org.eclipse.jpt.core.internal.jdtutility.JDTTools;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java File Content</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.java.JpaCompilationUnit#getTypes <em>Types</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getJpaCompilationUnit()
+ * @model kind="class"
+ * @generated
+ */
+public class JpaCompilationUnit extends JavaEObject
+ implements IJpaRootContentNode
+{
+ //can this just have one JavaType, or does it need to be multiple.
+ //only 1 primary type that can be annotated according to the spec? - kfm
+ /**
+ * The cached value of the '{@link #getTypes() <em>Types</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypes()
+ * @generated
+ * @ordered
+ */
+ protected EList<JavaPersistentType> types;
+
+ private ICompilationUnit compilationUnit;
+
+ protected JpaCompilationUnit() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaPackage.Literals.JPA_COMPILATION_UNIT;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Jpa File</b></em>' container reference.
+ * The default value is <code>""</code>.
+ * It is bidirectional and its opposite is '{@link org.eclipse.jpt.core.internal.JpaFile#getContent <em>Content</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Jpa File</em>' container reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Jpa File</em>' container reference.
+ * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getIJpaRootContentNode_JpaFile()
+ * @see org.eclipse.jpt.core.internal.JpaFile#getContent
+ * @model opposite="content" changeable="false"
+ * @generated
+ */
+ @Override
+ public IJpaFile getJpaFile() {
+ if (eContainerFeatureID != JpaJavaPackage.JPA_COMPILATION_UNIT__JPA_FILE)
+ return null;
+ return (IJpaFile) eContainer();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Types</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.content.java.JavaPersistentType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Types</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>Types</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getJpaCompilationUnit_Types()
+ * @model type="org.eclipse.jpt.core.internal.content.java.JavaPersistentType" containment="true"
+ * @generated
+ */
+ public EList<JavaPersistentType> getTypes() {
+ if (types == null) {
+ types = new EObjectContainmentEList<JavaPersistentType>(JavaPersistentType.class, this, JpaJavaPackage.JPA_COMPILATION_UNIT__TYPES);
+ }
+ return types;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case JpaJavaPackage.JPA_COMPILATION_UNIT__JPA_FILE :
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ return eBasicSetContainer(otherEnd, JpaJavaPackage.JPA_COMPILATION_UNIT__JPA_FILE, 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 JpaJavaPackage.JPA_COMPILATION_UNIT__JPA_FILE :
+ return eBasicSetContainer(null, JpaJavaPackage.JPA_COMPILATION_UNIT__JPA_FILE, msgs);
+ case JpaJavaPackage.JPA_COMPILATION_UNIT__TYPES :
+ return ((InternalEList<?>) getTypes()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
+ switch (eContainerFeatureID) {
+ case JpaJavaPackage.JPA_COMPILATION_UNIT__JPA_FILE :
+ return eInternalContainer().eInverseRemove(this, JpaCorePackage.JPA_FILE__CONTENT, JpaFile.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 JpaJavaPackage.JPA_COMPILATION_UNIT__JPA_FILE :
+ return getJpaFile();
+ case JpaJavaPackage.JPA_COMPILATION_UNIT__TYPES :
+ return getTypes();
+ }
+ 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 JpaJavaPackage.JPA_COMPILATION_UNIT__TYPES :
+ getTypes().clear();
+ getTypes().addAll((Collection<? extends JavaPersistentType>) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaJavaPackage.JPA_COMPILATION_UNIT__TYPES :
+ getTypes().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaJavaPackage.JPA_COMPILATION_UNIT__JPA_FILE :
+ return getJpaFile() != null;
+ case JpaJavaPackage.JPA_COMPILATION_UNIT__TYPES :
+ return types != null && !types.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IJpaContentNode.class) {
+ switch (derivedFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IJpaRootContentNode.class) {
+ switch (derivedFeatureID) {
+ case JpaJavaPackage.JPA_COMPILATION_UNIT__JPA_FILE :
+ return JpaCorePackage.IJPA_ROOT_CONTENT_NODE__JPA_FILE;
+ 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 == IJpaContentNode.class) {
+ switch (baseFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IJpaRootContentNode.class) {
+ switch (baseFeatureID) {
+ case JpaCorePackage.IJPA_ROOT_CONTENT_NODE__JPA_FILE :
+ return JpaJavaPackage.JPA_COMPILATION_UNIT__JPA_FILE;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ public ITextRange getTextRange() {
+ return new ASTNodeTextRange(JDTTools.createASTRoot(compilationUnit));
+ }
+
+ public Object getId() {
+ return IJavaContentNodes.COMPILATION_UNIT_ID;
+ }
+
+ @Override
+ public IJpaRootContentNode getRoot() {
+ return this;
+ }
+
+ public void setFile(IFile file) {
+ compilationUnit = JavaCore.createCompilationUnitFrom(file);
+ try {
+ compilationUnit.open(null);
+ }
+ catch (JavaModelException jme) {
+ // do nothing - we just won't have a primary type in this case
+ }
+ updatePersistentTypes();
+ }
+
+ public JavaPersistentType addJavaPersistentType(IType primaryType) {
+ return addJavaPersistentType(createJavaPersistentType(), primaryType);
+ }
+
+ public JavaPersistentType createJavaPersistentType() {
+ return JpaJavaFactory.eINSTANCE.createJavaPersistentType();
+ }
+
+ private JavaPersistentType addJavaPersistentType(JavaPersistentType javaPersistentType, IType primaryType) {
+ getTypes().add(javaPersistentType);
+ javaPersistentType.setJdtType(primaryType);
+ return javaPersistentType;
+ }
+
+ public IJpaContentNode getContentNode(int offset) {
+ for (JavaPersistentType javaType : this.getTypes()) {
+ if (javaType.containsOffset(offset)) {
+ IJpaContentNode contentNode = javaType.contentNodeAt(offset);
+ if (contentNode != null) {
+ return contentNode;
+ }
+ }
+ }
+ return this;
+ }
+
+ public void handleJavaElementChangedEvent(ElementChangedEvent event) {
+ synchWithJavaDelta(event.getDelta());
+ }
+
+ private void synchWithJavaDelta(IJavaElementDelta delta) {
+ boolean processChildren = false;
+ switch (delta.getElement().getElementType()) {
+ case IJavaElement.JAVA_MODEL :
+ case IJavaElement.JAVA_PROJECT :
+ case IJavaElement.PACKAGE_FRAGMENT_ROOT :
+ case IJavaElement.PACKAGE_FRAGMENT :
+ processChildren = true;
+ break;
+ case IJavaElement.COMPILATION_UNIT :
+ break;
+ default :
+ // the event is somehow lower than a compilation unit
+ return;
+ }
+ if (processChildren) {
+ for (IJavaElementDelta child : delta.getAffectedChildren()) {
+ synchWithJavaDelta(child);
+ }
+ }
+ // discard if change is not for this compilation unit
+ if (!delta.getElement().equals(this.compilationUnit)) {
+ return;
+ }
+ updatePersistentTypes();
+ }
+
+ private void updatePersistentTypes() {
+ List<JavaPersistentType> persistentTypesToRemove = new ArrayList<JavaPersistentType>(getTypes());
+ IType[] iTypes = compilationUnitTypes();
+ for (IType iType : iTypes) {
+ JavaPersistentType persistentType = persistentTypeFor(iType);
+ if (persistentType == null) {
+ if (AttributeAnnotationTools.typeIsPersistable(iType)) {
+ persistentType = addJavaPersistentType(iType);
+ }
+ }
+ if (persistentType != null) {
+ persistentTypesToRemove.remove(persistentType);
+ if (AttributeAnnotationTools.typeIsPersistable(iType)) {
+ persistentType.updateFromJava();
+ }
+ else {
+ getTypes().remove(persistentType);
+ }
+ }
+ }
+ getTypes().removeAll(persistentTypesToRemove);
+ }
+
+ private JavaPersistentType persistentTypeFor(IType iType) {
+ for (JavaPersistentType persistentType : this.getTypes()) {
+ if (persistentType.isFor(iType)) {
+ return persistentType;
+ }
+ }
+ return null;
+ }
+
+ private IType[] compilationUnitTypes() {
+ try {
+ return this.compilationUnit.getTypes();
+ }
+ catch (JavaModelException e) {
+ //TODO not throwing an exception because of tests, should I be?
+ //throw new RuntimeException(e);
+ return new IType[0];
+ }
+ }
+
+ public List<String> candidateValuesFor(int pos) {
+ CompilationUnit astRoot = this.astRoot();
+ for (JavaPersistentType persistentType : this.getTypes()) {
+ List<String> list = persistentType.candidateValuesFor(pos, astRoot);
+ if (list != null) {
+ return list;
+ }
+ }
+ return Collections.emptyList();
+ }
+
+ public CompilationUnit astRoot() {
+ return JDTTools.createASTRoot(this.compilationUnit);
+ }
+
+ public void dispose() {
+ // TODO
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JpaJavaFactory.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JpaJavaFactory.java
new file mode 100644
index 0000000000..0d940fe748
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JpaJavaFactory.java
@@ -0,0 +1,139 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java;
+
+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.jpt.core.internal.jdtutility.Attribute;
+
+/**
+ * <!-- 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.jpt.core.internal.content.java.JpaJavaPackage
+ * @generated
+ */
+public class JpaJavaFactory extends EFactoryImpl
+{
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final JpaJavaFactory eINSTANCE = init();
+
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static JpaJavaFactory init() {
+ try {
+ JpaJavaFactory theJpaJavaFactory = (JpaJavaFactory) EPackage.Registry.INSTANCE.getEFactory("jpt.java.xmi");
+ if (theJpaJavaFactory != null) {
+ return theJpaJavaFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new JpaJavaFactory();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JpaJavaFactory() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case JpaJavaPackage.JPA_COMPILATION_UNIT :
+ return createJpaCompilationUnit();
+ case JpaJavaPackage.JAVA_PERSISTENT_TYPE :
+ return createJavaPersistentType();
+ case JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE :
+ return createJavaPersistentAttribute();
+ default :
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JpaCompilationUnit createJpaCompilationUnit() {
+ JpaCompilationUnit jpaCompilationUnit = new JpaCompilationUnit();
+ return jpaCompilationUnit;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JavaPersistentType createJavaPersistentType() {
+ JavaPersistentType javaPersistentType = new JavaPersistentType();
+ return javaPersistentType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JavaPersistentAttribute createJavaPersistentAttribute() {
+ JavaPersistentAttribute javaPersistentAttribute = new JavaPersistentAttribute();
+ return javaPersistentAttribute;
+ }
+
+ public JavaPersistentAttribute createJavaPersistentAttribute(Attribute attribute) {
+ JavaPersistentAttribute javaPersistentAttribute = new JavaPersistentAttribute(attribute);
+ return javaPersistentAttribute;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JpaJavaPackage getJpaJavaPackage() {
+ return (JpaJavaPackage) getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static JpaJavaPackage getPackage() {
+ return JpaJavaPackage.eINSTANCE;
+ }
+} //JpaCoreJavaFactory
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JpaJavaPackage.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JpaJavaPackage.java
new file mode 100644
index 0000000000..0e02d313bc
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/JpaJavaPackage.java
@@ -0,0 +1,787 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java;
+
+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.jem.java.JavaRefPackage;
+import org.eclipse.jpt.core.internal.JpaCorePackage;
+import org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.content.persistence.PersistencePackage;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+
+/**
+ * <!-- 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.jpt.core.internal.content.java.JpaJavaFactory
+ * @model kind="package"
+ * @generated
+ */
+public class JpaJavaPackage extends EPackageImpl
+{
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNAME = "java";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNS_URI = "jpt.java.xmi";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNS_PREFIX = "org.eclipse.jpt.core.content.java";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final JpaJavaPackage eINSTANCE = org.eclipse.jpt.core.internal.content.java.JpaJavaPackage.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.IJavaAttributeMapping <em>IJava Attribute Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.IJavaAttributeMapping
+ * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getIJavaAttributeMapping()
+ * @generated
+ */
+ public static final int IJAVA_ATTRIBUTE_MAPPING = 5;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.IJavaTypeMapping <em>IJava Type Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.IJavaTypeMapping
+ * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getIJavaTypeMapping()
+ * @generated
+ */
+ public static final int IJAVA_TYPE_MAPPING = 4;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.JavaEObject <em>Java EObject</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.JavaEObject
+ * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getJavaEObject()
+ * @generated
+ */
+ public static final int JAVA_EOBJECT = 0;
+
+ /**
+ * The number of structural features of the '<em>Java EObject</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_EOBJECT_FEATURE_COUNT = JpaCorePackage.JPA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.JpaCompilationUnit <em>Jpa Compilation Unit</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.JpaCompilationUnit
+ * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getJpaCompilationUnit()
+ * @generated
+ */
+ public static final int JPA_COMPILATION_UNIT = 1;
+
+ /**
+ * The feature id for the '<em><b>Jpa File</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JPA_COMPILATION_UNIT__JPA_FILE = JAVA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Types</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JPA_COMPILATION_UNIT__TYPES = JAVA_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Jpa Compilation Unit</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JPA_COMPILATION_UNIT_FEATURE_COUNT = JAVA_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.JavaPersistentType <em>Java Persistent Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.JavaPersistentType
+ * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getJavaPersistentType()
+ * @generated
+ */
+ public static final int JAVA_PERSISTENT_TYPE = 2;
+
+ /**
+ * The feature id for the '<em><b>Mapping Key</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_PERSISTENT_TYPE__MAPPING_KEY = JAVA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Mapping</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_PERSISTENT_TYPE__MAPPING = JAVA_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Attributes</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_PERSISTENT_TYPE__ATTRIBUTES = JAVA_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Access</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_PERSISTENT_TYPE__ACCESS = JAVA_EOBJECT_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>Java Persistent Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_PERSISTENT_TYPE_FEATURE_COUNT = JAVA_EOBJECT_FEATURE_COUNT + 4;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute <em>Java Persistent Attribute</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute
+ * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getJavaPersistentAttribute()
+ * @generated
+ */
+ public static final int JAVA_PERSISTENT_ATTRIBUTE = 3;
+
+ /**
+ * The feature id for the '<em><b>Mapping Key</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_PERSISTENT_ATTRIBUTE__MAPPING_KEY = JAVA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Default Mapping</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_PERSISTENT_ATTRIBUTE__DEFAULT_MAPPING = JAVA_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Specified Mapping</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_PERSISTENT_ATTRIBUTE__SPECIFIED_MAPPING = JAVA_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Java Persistent Attribute</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_PERSISTENT_ATTRIBUTE_FEATURE_COUNT = JAVA_EOBJECT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJAVA_TYPE_MAPPING__NAME = JpaCorePackage.ITYPE_MAPPING__NAME;
+
+ /**
+ * The feature id for the '<em><b>Table Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJAVA_TYPE_MAPPING__TABLE_NAME = JpaCorePackage.ITYPE_MAPPING__TABLE_NAME;
+
+ /**
+ * The number of structural features of the '<em>IJava Type Mapping</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJAVA_TYPE_MAPPING_FEATURE_COUNT = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>IJava Attribute Mapping</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iJavaAttributeMappingEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iJavaTypeMappingEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaEObjectEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass jpaCompilationUnitEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaPersistentTypeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaPersistentAttributeEClass = 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.jpt.core.internal.content.java.JpaJavaPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private JpaJavaPackage() {
+ super(eNS_URI, JpaJavaFactory.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. Simple
+ * dependencies are satisfied by calling this method on all
+ * dependent packages before doing anything else. This method drives
+ * initialization for interdependent packages directly, in parallel
+ * with this package, itself.
+ * <p>Of this package and its interdependencies, all packages which
+ * have not yet been registered by their URI values are first created
+ * and registered. The packages are then initialized in two steps:
+ * meta-model objects for all of the packages are created before any
+ * are initialized, since one package's meta-model objects may refer to
+ * those of another.
+ * <p>Invocation of this method will not affect any packages that have
+ * already been initialized.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static JpaJavaPackage init() {
+ if (isInited)
+ return (JpaJavaPackage) EPackage.Registry.INSTANCE.getEPackage(JpaJavaPackage.eNS_URI);
+ // Obtain or create and register package
+ JpaJavaPackage theJpaJavaPackage = (JpaJavaPackage) (EPackage.Registry.INSTANCE.getEPackage(eNS_URI) instanceof JpaJavaPackage ? EPackage.Registry.INSTANCE.getEPackage(eNS_URI) : new JpaJavaPackage());
+ isInited = true;
+ // Initialize simple dependencies
+ EcorePackage.eINSTANCE.eClass();
+ JavaRefPackage.eINSTANCE.eClass();
+ // Obtain or create and register interdependencies
+ JpaCorePackage theJpaCorePackage = (JpaCorePackage) (EPackage.Registry.INSTANCE.getEPackage(JpaCorePackage.eNS_URI) instanceof JpaCorePackage ? EPackage.Registry.INSTANCE.getEPackage(JpaCorePackage.eNS_URI) : JpaCorePackage.eINSTANCE);
+ JpaCoreMappingsPackage theJpaCoreMappingsPackage = (JpaCoreMappingsPackage) (EPackage.Registry.INSTANCE.getEPackage(JpaCoreMappingsPackage.eNS_URI) instanceof JpaCoreMappingsPackage ? EPackage.Registry.INSTANCE.getEPackage(JpaCoreMappingsPackage.eNS_URI) : JpaCoreMappingsPackage.eINSTANCE);
+ JpaJavaMappingsPackage theJpaJavaMappingsPackage = (JpaJavaMappingsPackage) (EPackage.Registry.INSTANCE.getEPackage(JpaJavaMappingsPackage.eNS_URI) instanceof JpaJavaMappingsPackage ? EPackage.Registry.INSTANCE.getEPackage(JpaJavaMappingsPackage.eNS_URI) : JpaJavaMappingsPackage.eINSTANCE);
+ OrmPackage theOrmPackage = (OrmPackage) (EPackage.Registry.INSTANCE.getEPackage(OrmPackage.eNS_URI) instanceof OrmPackage ? EPackage.Registry.INSTANCE.getEPackage(OrmPackage.eNS_URI) : OrmPackage.eINSTANCE);
+ PersistencePackage thePersistencePackage = (PersistencePackage) (EPackage.Registry.INSTANCE.getEPackage(PersistencePackage.eNS_URI) instanceof PersistencePackage ? EPackage.Registry.INSTANCE.getEPackage(PersistencePackage.eNS_URI) : PersistencePackage.eINSTANCE);
+ // Create package meta-data objects
+ theJpaJavaPackage.createPackageContents();
+ theJpaCorePackage.createPackageContents();
+ theJpaCoreMappingsPackage.createPackageContents();
+ theJpaJavaMappingsPackage.createPackageContents();
+ theOrmPackage.createPackageContents();
+ thePersistencePackage.createPackageContents();
+ // Initialize created meta-data
+ theJpaJavaPackage.initializePackageContents();
+ theJpaCorePackage.initializePackageContents();
+ theJpaCoreMappingsPackage.initializePackageContents();
+ theJpaJavaMappingsPackage.initializePackageContents();
+ theOrmPackage.initializePackageContents();
+ thePersistencePackage.initializePackageContents();
+ // Mark meta-data to indicate it can't be changed
+ theJpaJavaPackage.freeze();
+ return theJpaJavaPackage;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.IJavaAttributeMapping <em>IJava Attribute Mapping</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IJava Attribute Mapping</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.IJavaAttributeMapping
+ * @generated
+ */
+ public EClass getIJavaAttributeMapping() {
+ return iJavaAttributeMappingEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.IJavaTypeMapping <em>IJava Type Mapping</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IJava Type Mapping</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.IJavaTypeMapping
+ * @generated
+ */
+ public EClass getIJavaTypeMapping() {
+ return iJavaTypeMappingEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.JavaEObject <em>Java EObject</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java EObject</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.JavaEObject
+ * @generated
+ */
+ public EClass getJavaEObject() {
+ return javaEObjectEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.JpaCompilationUnit <em>Jpa Compilation Unit</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Jpa Compilation Unit</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.JpaCompilationUnit
+ * @generated
+ */
+ public EClass getJpaCompilationUnit() {
+ return jpaCompilationUnitEClass;
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.content.java.JpaCompilationUnit#getTypes <em>Types</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Types</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.JpaCompilationUnit#getTypes()
+ * @see #getJpaCompilationUnit()
+ * @generated
+ */
+ public EReference getJpaCompilationUnit_Types() {
+ return (EReference) jpaCompilationUnitEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.JavaPersistentType <em>Java Persistent Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Persistent Type</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.JavaPersistentType
+ * @generated
+ */
+ public EClass getJavaPersistentType() {
+ return javaPersistentTypeEClass;
+ }
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.jpt.core.internal.content.java.JavaPersistentType#getMapping <em>Mapping</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Mapping</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.JavaPersistentType#getMapping()
+ * @see #getJavaPersistentType()
+ * @generated
+ */
+ public EReference getJavaPersistentType_Mapping() {
+ return (EReference) javaPersistentTypeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.content.java.JavaPersistentType#getAttributes <em>Attributes</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Attributes</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.JavaPersistentType#getAttributes()
+ * @see #getJavaPersistentType()
+ * @generated
+ */
+ public EReference getJavaPersistentType_Attributes() {
+ return (EReference) javaPersistentTypeEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.java.JavaPersistentType#getAccess <em>Access</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Access</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.JavaPersistentType#getAccess()
+ * @see #getJavaPersistentType()
+ * @generated
+ */
+ public EAttribute getJavaPersistentType_Access() {
+ return (EAttribute) javaPersistentTypeEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute <em>Java Persistent Attribute</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Persistent Attribute</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute
+ * @generated
+ */
+ public EClass getJavaPersistentAttribute() {
+ return javaPersistentAttributeEClass;
+ }
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute#getDefaultMapping <em>Default Mapping</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Default Mapping</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute#getDefaultMapping()
+ * @see #getJavaPersistentAttribute()
+ * @generated
+ */
+ public EReference getJavaPersistentAttribute_DefaultMapping() {
+ return (EReference) javaPersistentAttributeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute#getSpecifiedMapping <em>Specified Mapping</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Specified Mapping</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute#getSpecifiedMapping()
+ * @see #getJavaPersistentAttribute()
+ * @generated
+ */
+ public EReference getJavaPersistentAttribute_SpecifiedMapping() {
+ return (EReference) javaPersistentAttributeEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * 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
+ */
+ public JpaJavaFactory getJpaJavaFactory() {
+ return (JpaJavaFactory) 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
+ javaEObjectEClass = createEClass(JAVA_EOBJECT);
+ jpaCompilationUnitEClass = createEClass(JPA_COMPILATION_UNIT);
+ createEReference(jpaCompilationUnitEClass, JPA_COMPILATION_UNIT__TYPES);
+ javaPersistentTypeEClass = createEClass(JAVA_PERSISTENT_TYPE);
+ createEReference(javaPersistentTypeEClass, JAVA_PERSISTENT_TYPE__MAPPING);
+ createEReference(javaPersistentTypeEClass, JAVA_PERSISTENT_TYPE__ATTRIBUTES);
+ createEAttribute(javaPersistentTypeEClass, JAVA_PERSISTENT_TYPE__ACCESS);
+ javaPersistentAttributeEClass = createEClass(JAVA_PERSISTENT_ATTRIBUTE);
+ createEReference(javaPersistentAttributeEClass, JAVA_PERSISTENT_ATTRIBUTE__DEFAULT_MAPPING);
+ createEReference(javaPersistentAttributeEClass, JAVA_PERSISTENT_ATTRIBUTE__SPECIFIED_MAPPING);
+ iJavaTypeMappingEClass = createEClass(IJAVA_TYPE_MAPPING);
+ iJavaAttributeMappingEClass = createEClass(IJAVA_ATTRIBUTE_MAPPING);
+ }
+
+ /**
+ * <!-- 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
+ JpaJavaMappingsPackage theJpaJavaMappingsPackage = (JpaJavaMappingsPackage) EPackage.Registry.INSTANCE.getEPackage(JpaJavaMappingsPackage.eNS_URI);
+ JpaCorePackage theJpaCorePackage = (JpaCorePackage) EPackage.Registry.INSTANCE.getEPackage(JpaCorePackage.eNS_URI);
+ // Add subpackages
+ getESubpackages().add(theJpaJavaMappingsPackage);
+ // Create type parameters
+ // Set bounds for type parameters
+ // Add supertypes to classes
+ javaEObjectEClass.getESuperTypes().add(theJpaCorePackage.getJpaEObject());
+ javaEObjectEClass.getESuperTypes().add(theJpaCorePackage.getIJpaSourceObject());
+ jpaCompilationUnitEClass.getESuperTypes().add(this.getJavaEObject());
+ jpaCompilationUnitEClass.getESuperTypes().add(theJpaCorePackage.getIJpaRootContentNode());
+ javaPersistentTypeEClass.getESuperTypes().add(this.getJavaEObject());
+ javaPersistentTypeEClass.getESuperTypes().add(theJpaCorePackage.getIPersistentType());
+ javaPersistentAttributeEClass.getESuperTypes().add(this.getJavaEObject());
+ javaPersistentAttributeEClass.getESuperTypes().add(theJpaCorePackage.getIPersistentAttribute());
+ iJavaTypeMappingEClass.getESuperTypes().add(theJpaCorePackage.getITypeMapping());
+ iJavaAttributeMappingEClass.getESuperTypes().add(theJpaCorePackage.getIAttributeMapping());
+ // Initialize classes and features; add operations and parameters
+ initEClass(javaEObjectEClass, JavaEObject.class, "JavaEObject", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ addEOperation(javaEObjectEClass, theJpaCorePackage.getIJpaFile(), "getJpaFile", 0, 1);
+ addEOperation(javaEObjectEClass, theJpaCorePackage.getIJpaRootContentNode(), "getRoot", 0, 1);
+ initEClass(jpaCompilationUnitEClass, JpaCompilationUnit.class, "JpaCompilationUnit", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getJpaCompilationUnit_Types(), this.getJavaPersistentType(), null, "types", null, 0, -1, JpaCompilationUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(javaPersistentTypeEClass, JavaPersistentType.class, "JavaPersistentType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getJavaPersistentType_Mapping(), this.getIJavaTypeMapping(), null, "mapping", "", 1, 1, JavaPersistentType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getJavaPersistentType_Attributes(), this.getJavaPersistentAttribute(), null, "attributes", null, 0, -1, JavaPersistentType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getJavaPersistentType_Access(), theJpaCorePackage.getAccessType(), "access", "", 0, 1, JavaPersistentType.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(javaPersistentAttributeEClass, JavaPersistentAttribute.class, "JavaPersistentAttribute", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getJavaPersistentAttribute_DefaultMapping(), this.getIJavaAttributeMapping(), null, "defaultMapping", null, 1, 1, JavaPersistentAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getJavaPersistentAttribute_SpecifiedMapping(), this.getIJavaAttributeMapping(), null, "specifiedMapping", null, 1, 1, JavaPersistentAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(iJavaTypeMappingEClass, IJavaTypeMapping.class, "IJavaTypeMapping", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ addEOperation(iJavaTypeMappingEClass, null, "initialize");
+ initEClass(iJavaAttributeMappingEClass, IJavaAttributeMapping.class, "IJavaAttributeMapping", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ addEOperation(iJavaAttributeMappingEClass, null, "initialize");
+ // Create resource
+ createResource(eNS_URI);
+ }
+ /**
+ * <!-- 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
+ */
+ public interface Literals
+ {
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.IJavaAttributeMapping <em>IJava Attribute Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.IJavaAttributeMapping
+ * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getIJavaAttributeMapping()
+ * @generated
+ */
+ public static final EClass IJAVA_ATTRIBUTE_MAPPING = eINSTANCE.getIJavaAttributeMapping();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.IJavaTypeMapping <em>IJava Type Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.IJavaTypeMapping
+ * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getIJavaTypeMapping()
+ * @generated
+ */
+ public static final EClass IJAVA_TYPE_MAPPING = eINSTANCE.getIJavaTypeMapping();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.JavaEObject <em>Java EObject</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.JavaEObject
+ * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getJavaEObject()
+ * @generated
+ */
+ public static final EClass JAVA_EOBJECT = eINSTANCE.getJavaEObject();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.JpaCompilationUnit <em>Jpa Compilation Unit</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.JpaCompilationUnit
+ * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getJpaCompilationUnit()
+ * @generated
+ */
+ public static final EClass JPA_COMPILATION_UNIT = eINSTANCE.getJpaCompilationUnit();
+
+ /**
+ * The meta object literal for the '<em><b>Types</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference JPA_COMPILATION_UNIT__TYPES = eINSTANCE.getJpaCompilationUnit_Types();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.JavaPersistentType <em>Java Persistent Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.JavaPersistentType
+ * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getJavaPersistentType()
+ * @generated
+ */
+ public static final EClass JAVA_PERSISTENT_TYPE = eINSTANCE.getJavaPersistentType();
+
+ /**
+ * The meta object literal for the '<em><b>Mapping</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference JAVA_PERSISTENT_TYPE__MAPPING = eINSTANCE.getJavaPersistentType_Mapping();
+
+ /**
+ * The meta object literal for the '<em><b>Attributes</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference JAVA_PERSISTENT_TYPE__ATTRIBUTES = eINSTANCE.getJavaPersistentType_Attributes();
+
+ /**
+ * The meta object literal for the '<em><b>Access</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute JAVA_PERSISTENT_TYPE__ACCESS = eINSTANCE.getJavaPersistentType_Access();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute <em>Java Persistent Attribute</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute
+ * @see org.eclipse.jpt.core.internal.content.java.JpaJavaPackage#getJavaPersistentAttribute()
+ * @generated
+ */
+ public static final EClass JAVA_PERSISTENT_ATTRIBUTE = eINSTANCE.getJavaPersistentAttribute();
+
+ /**
+ * The meta object literal for the '<em><b>Default Mapping</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference JAVA_PERSISTENT_ATTRIBUTE__DEFAULT_MAPPING = eINSTANCE.getJavaPersistentAttribute_DefaultMapping();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Mapping</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference JAVA_PERSISTENT_ATTRIBUTE__SPECIFIED_MAPPING = eINSTANCE.getJavaPersistentAttribute_SpecifiedMapping();
+ }
+} //JpaCoreJavaPackage
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/AbstractJavaColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/AbstractJavaColumn.java
new file mode 100644
index 0000000000..a62639ae8a
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/AbstractJavaColumn.java
@@ -0,0 +1,672 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.jdtutility.AnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Member;
+import org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean;
+import org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean;
+import org.eclipse.jpt.core.internal.mappings.IAbstractColumn;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.db.internal.Column;
+import org.eclipse.jpt.db.internal.ConnectionProfile;
+import org.eclipse.jpt.db.internal.Table;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Abstract Java Column</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getAbstractJavaColumn()
+ * @model kind="class" abstract="true"
+ * @generated
+ */
+public abstract class AbstractJavaColumn extends JavaNamedColumn
+ implements IAbstractColumn
+{
+ /**
+ * The default value of the '{@link #getUnique() <em>Unique</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getUnique()
+ * @generated
+ * @ordered
+ */
+ protected static final DefaultFalseBoolean UNIQUE_EDEFAULT = DefaultFalseBoolean.DEFAULT;
+
+ /**
+ * The cached value of the '{@link #getUnique() <em>Unique</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getUnique()
+ * @generated
+ * @ordered
+ */
+ protected DefaultFalseBoolean unique = UNIQUE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getNullable() <em>Nullable</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNullable()
+ * @generated
+ * @ordered
+ */
+ protected static final DefaultTrueBoolean NULLABLE_EDEFAULT = DefaultTrueBoolean.DEFAULT;
+
+ /**
+ * The cached value of the '{@link #getNullable() <em>Nullable</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNullable()
+ * @generated
+ * @ordered
+ */
+ protected DefaultTrueBoolean nullable = NULLABLE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getInsertable() <em>Insertable</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getInsertable()
+ * @generated
+ * @ordered
+ */
+ protected static final DefaultTrueBoolean INSERTABLE_EDEFAULT = DefaultTrueBoolean.DEFAULT;
+
+ /**
+ * The cached value of the '{@link #getInsertable() <em>Insertable</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getInsertable()
+ * @generated
+ * @ordered
+ */
+ protected DefaultTrueBoolean insertable = INSERTABLE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getUpdatable() <em>Updatable</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getUpdatable()
+ * @generated
+ * @ordered
+ */
+ protected static final DefaultTrueBoolean UPDATABLE_EDEFAULT = DefaultTrueBoolean.DEFAULT;
+
+ /**
+ * The cached value of the '{@link #getUpdatable() <em>Updatable</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getUpdatable()
+ * @generated
+ * @ordered
+ */
+ protected DefaultTrueBoolean updatable = UPDATABLE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getTable() <em>Table</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTable()
+ * @generated
+ * @ordered
+ */
+ protected static final String TABLE_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getSpecifiedTable() <em>Specified Table</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedTable()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_TABLE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedTable() <em>Specified Table</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedTable()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedTable = SPECIFIED_TABLE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultTable() <em>Default Table</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultTable()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_TABLE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultTable() <em>Default Table</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultTable()
+ * @generated
+ * @ordered
+ */
+ protected String defaultTable = DEFAULT_TABLE_EDEFAULT;
+
+ // hold this so we can get the 'table' text range
+ private final DeclarationAnnotationElementAdapter tableDeclarationAdapter;
+
+ private final AnnotationElementAdapter tableAdapter;
+
+ private final AnnotationElementAdapter uniqueAdapter;
+
+ private final AnnotationElementAdapter nullableAdapter;
+
+ private final AnnotationElementAdapter insertableAdapter;
+
+ private final AnnotationElementAdapter updatableAdapter;
+
+ protected AbstractJavaColumn() {
+ super();
+ throw new UnsupportedOperationException("Use AbstractJavaColumn(Owner, Member, DeclarationAnnotationAdapter) instead");
+ }
+
+ protected AbstractJavaColumn(Owner owner, Member member, DeclarationAnnotationAdapter daa) {
+ super(owner, member, daa);
+ this.tableDeclarationAdapter = this.buildStringElementAdapter(this.tableElementName());
+ this.tableAdapter = this.buildShortCircuitElementAdapter(this.tableDeclarationAdapter);
+ this.uniqueAdapter = this.buildShortCircuitBooleanElementAdapter(this.uniqueElementName());
+ this.nullableAdapter = this.buildShortCircuitBooleanElementAdapter(this.nullableElementName());
+ this.insertableAdapter = this.buildShortCircuitBooleanElementAdapter(this.insertableElementName());
+ this.updatableAdapter = this.buildShortCircuitBooleanElementAdapter(this.updatableElementName());
+ }
+
+ protected abstract String tableElementName();
+
+ protected abstract String uniqueElementName();
+
+ protected abstract String nullableElementName();
+
+ protected abstract String insertableElementName();
+
+ protected abstract String updatableElementName();
+
+ @Override
+ protected void notifyChanged(Notification notification) {
+ super.notifyChanged(notification);
+ switch (notification.getFeatureID(IAbstractColumn.class)) {
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__SPECIFIED_TABLE :
+ this.tableAdapter.setValue(notification.getNewValue());
+ break;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__UNIQUE :
+ this.uniqueAdapter.setValue(((DefaultFalseBoolean) notification.getNewValue()).convertToJavaAnnotationValue());
+ break;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__NULLABLE :
+ this.nullableAdapter.setValue(((DefaultTrueBoolean) notification.getNewValue()).convertToJavaAnnotationValue());
+ break;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__INSERTABLE :
+ this.insertableAdapter.setValue(((DefaultTrueBoolean) notification.getNewValue()).convertToJavaAnnotationValue());
+ break;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__UPDATABLE :
+ this.updatableAdapter.setValue(((DefaultTrueBoolean) notification.getNewValue()).convertToJavaAnnotationValue());
+ break;
+ default :
+ break;
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.ABSTRACT_JAVA_COLUMN;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Unique</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Unique</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Unique</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean
+ * @see #setUnique(DefaultFalseBoolean)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIAbstractColumn_Unique()
+ * @model
+ * @generated
+ */
+ public DefaultFalseBoolean getUnique() {
+ return unique;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.AbstractJavaColumn#getUnique <em>Unique</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Unique</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean
+ * @see #getUnique()
+ * @generated
+ */
+ public void setUnique(DefaultFalseBoolean newUnique) {
+ DefaultFalseBoolean oldUnique = unique;
+ unique = newUnique == null ? UNIQUE_EDEFAULT : newUnique;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__UNIQUE, oldUnique, unique));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Nullable</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Nullable</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Nullable</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean
+ * @see #setNullable(DefaultTrueBoolean)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIAbstractColumn_Nullable()
+ * @model
+ * @generated
+ */
+ public DefaultTrueBoolean getNullable() {
+ return nullable;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.AbstractJavaColumn#getNullable <em>Nullable</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Nullable</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean
+ * @see #getNullable()
+ * @generated
+ */
+ public void setNullable(DefaultTrueBoolean newNullable) {
+ DefaultTrueBoolean oldNullable = nullable;
+ nullable = newNullable == null ? NULLABLE_EDEFAULT : newNullable;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__NULLABLE, oldNullable, nullable));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Insertable</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Insertable</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Insertable</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean
+ * @see #setInsertable(DefaultTrueBoolean)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIAbstractColumn_Insertable()
+ * @model
+ * @generated
+ */
+ public DefaultTrueBoolean getInsertable() {
+ return insertable;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.AbstractJavaColumn#getInsertable <em>Insertable</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Insertable</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean
+ * @see #getInsertable()
+ * @generated
+ */
+ public void setInsertable(DefaultTrueBoolean newInsertable) {
+ DefaultTrueBoolean oldInsertable = insertable;
+ insertable = newInsertable == null ? INSERTABLE_EDEFAULT : newInsertable;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__INSERTABLE, oldInsertable, insertable));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Updatable</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Updatable</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Updatable</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean
+ * @see #setUpdatable(DefaultTrueBoolean)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIAbstractColumn_Updatable()
+ * @model
+ * @generated
+ */
+ public DefaultTrueBoolean getUpdatable() {
+ return updatable;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.AbstractJavaColumn#getUpdatable <em>Updatable</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Updatable</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean
+ * @see #getUpdatable()
+ * @generated
+ */
+ public void setUpdatable(DefaultTrueBoolean newUpdatable) {
+ DefaultTrueBoolean oldUpdatable = updatable;
+ updatable = newUpdatable == null ? UPDATABLE_EDEFAULT : newUpdatable;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__UPDATABLE, oldUpdatable, updatable));
+ }
+
+ public String getTable() {
+ return (this.getSpecifiedTable() == null) ? getDefaultTable() : this.getSpecifiedTable();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Table</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Table</em>' attribute.
+ * @see #setSpecifiedTable(String)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIAbstractColumn_SpecifiedTable()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedTable() {
+ return specifiedTable;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.AbstractJavaColumn#getSpecifiedTable <em>Specified Table</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Table</em>' attribute.
+ * @see #getSpecifiedTable()
+ * @generated
+ */
+ public void setSpecifiedTable(String newSpecifiedTable) {
+ String oldSpecifiedTable = specifiedTable;
+ specifiedTable = newSpecifiedTable;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__SPECIFIED_TABLE, oldSpecifiedTable, specifiedTable));
+ }
+
+ protected void setDefaultTable(String newDefaultTable) {
+ String oldDefaultTable = this.defaultTable;
+ this.defaultTable = newDefaultTable;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__DEFAULT_TABLE, oldDefaultTable, newDefaultTable));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Table</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Table</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIAbstractColumn_DefaultTable()
+ * @model changeable="false"
+ * @generated
+ */
+ public String getDefaultTable() {
+ return defaultTable;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__UNIQUE :
+ return getUnique();
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__NULLABLE :
+ return getNullable();
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__INSERTABLE :
+ return getInsertable();
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__UPDATABLE :
+ return getUpdatable();
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__TABLE :
+ return getTable();
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__SPECIFIED_TABLE :
+ return getSpecifiedTable();
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__DEFAULT_TABLE :
+ return getDefaultTable();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__UNIQUE :
+ setUnique((DefaultFalseBoolean) newValue);
+ return;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__NULLABLE :
+ setNullable((DefaultTrueBoolean) newValue);
+ return;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__INSERTABLE :
+ setInsertable((DefaultTrueBoolean) newValue);
+ return;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__UPDATABLE :
+ setUpdatable((DefaultTrueBoolean) newValue);
+ return;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__SPECIFIED_TABLE :
+ setSpecifiedTable((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__UNIQUE :
+ setUnique(UNIQUE_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__NULLABLE :
+ setNullable(NULLABLE_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__INSERTABLE :
+ setInsertable(INSERTABLE_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__UPDATABLE :
+ setUpdatable(UPDATABLE_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__SPECIFIED_TABLE :
+ setSpecifiedTable(SPECIFIED_TABLE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__UNIQUE :
+ return unique != UNIQUE_EDEFAULT;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__NULLABLE :
+ return nullable != NULLABLE_EDEFAULT;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__INSERTABLE :
+ return insertable != INSERTABLE_EDEFAULT;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__UPDATABLE :
+ return updatable != UPDATABLE_EDEFAULT;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__TABLE :
+ return TABLE_EDEFAULT == null ? getTable() != null : !TABLE_EDEFAULT.equals(getTable());
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__SPECIFIED_TABLE :
+ return SPECIFIED_TABLE_EDEFAULT == null ? specifiedTable != null : !SPECIFIED_TABLE_EDEFAULT.equals(specifiedTable);
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__DEFAULT_TABLE :
+ return DEFAULT_TABLE_EDEFAULT == null ? defaultTable != null : !DEFAULT_TABLE_EDEFAULT.equals(defaultTable);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IAbstractColumn.class) {
+ switch (derivedFeatureID) {
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__UNIQUE :
+ return JpaCoreMappingsPackage.IABSTRACT_COLUMN__UNIQUE;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__NULLABLE :
+ return JpaCoreMappingsPackage.IABSTRACT_COLUMN__NULLABLE;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__INSERTABLE :
+ return JpaCoreMappingsPackage.IABSTRACT_COLUMN__INSERTABLE;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__UPDATABLE :
+ return JpaCoreMappingsPackage.IABSTRACT_COLUMN__UPDATABLE;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__TABLE :
+ return JpaCoreMappingsPackage.IABSTRACT_COLUMN__TABLE;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__SPECIFIED_TABLE :
+ return JpaCoreMappingsPackage.IABSTRACT_COLUMN__SPECIFIED_TABLE;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__DEFAULT_TABLE :
+ return JpaCoreMappingsPackage.IABSTRACT_COLUMN__DEFAULT_TABLE;
+ 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 == IAbstractColumn.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IABSTRACT_COLUMN__UNIQUE :
+ return JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__UNIQUE;
+ case JpaCoreMappingsPackage.IABSTRACT_COLUMN__NULLABLE :
+ return JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__NULLABLE;
+ case JpaCoreMappingsPackage.IABSTRACT_COLUMN__INSERTABLE :
+ return JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__INSERTABLE;
+ case JpaCoreMappingsPackage.IABSTRACT_COLUMN__UPDATABLE :
+ return JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__UPDATABLE;
+ case JpaCoreMappingsPackage.IABSTRACT_COLUMN__TABLE :
+ return JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__TABLE;
+ case JpaCoreMappingsPackage.IABSTRACT_COLUMN__SPECIFIED_TABLE :
+ return JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__SPECIFIED_TABLE;
+ case JpaCoreMappingsPackage.IABSTRACT_COLUMN__DEFAULT_TABLE :
+ return JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN__DEFAULT_TABLE;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (unique: ");
+ result.append(unique);
+ result.append(", nullable: ");
+ result.append(nullable);
+ result.append(", insertable: ");
+ result.append(insertable);
+ result.append(", updatable: ");
+ result.append(updatable);
+ result.append(", specifiedTable: ");
+ result.append(specifiedTable);
+ result.append(", defaultTable: ");
+ result.append(defaultTable);
+ result.append(')');
+ return result.toString();
+ }
+
+ public ITextRange getTableTextRange() {
+ return this.elementTextRange(this.tableDeclarationAdapter);
+ }
+
+ @Override
+ public void updateFromJava(CompilationUnit astRoot) {
+ super.updateFromJava(astRoot);
+ this.setSpecifiedTable((String) this.tableAdapter.getValue(astRoot));
+ this.setUnique(DefaultFalseBoolean.fromJavaAnnotationValue(this.uniqueAdapter.getValue(astRoot)));
+ this.setNullable(DefaultTrueBoolean.fromJavaAnnotationValue(this.nullableAdapter.getValue(astRoot)));
+ this.setInsertable(DefaultTrueBoolean.fromJavaAnnotationValue(this.insertableAdapter.getValue(astRoot)));
+ this.setUpdatable(DefaultTrueBoolean.fromJavaAnnotationValue(this.updatableAdapter.getValue(astRoot)));
+ }
+
+ public Column dbColumn() {
+ Table table = this.dbTable();
+ return (table == null) ? null : table.columnNamed(this.getName());
+ }
+
+ public Table dbTable() {
+ return this.getOwner().dbTable(getTable());
+ }
+
+ public boolean isConnected() {
+ ConnectionProfile connectionProfile = this.getJpaProject().connectionProfile();
+ return connectionProfile != null && connectionProfile.isConnected();
+ }
+
+ public boolean isResolved() {
+ return this.dbColumn() != null;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/AbstractJavaTable.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/AbstractJavaTable.java
new file mode 100644
index 0000000000..c7f4d8734b
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/AbstractJavaTable.java
@@ -0,0 +1,761 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.content.java.JavaEObject;
+import org.eclipse.jpt.core.internal.jdtutility.AnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Member;
+import org.eclipse.jpt.core.internal.jdtutility.ShortCircuitAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.mappings.INamedColumn;
+import org.eclipse.jpt.core.internal.mappings.ITable;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.core.internal.platform.BaseJpaPlatform;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+import org.eclipse.jpt.db.internal.ConnectionProfile;
+import org.eclipse.jpt.db.internal.Schema;
+import org.eclipse.jpt.db.internal.Table;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Abstract Java Table</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getAbstractJavaTable()
+ * @model kind="class" abstract="true"
+ * @generated
+ */
+public abstract class AbstractJavaTable extends JavaEObject implements ITable
+{
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getSpecifiedName() <em>Specified Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedName()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedName() <em>Specified Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedName()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedName = SPECIFIED_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultName() <em>Default Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultName()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultName() <em>Default Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultName()
+ * @generated
+ * @ordered
+ */
+ protected String defaultName = DEFAULT_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getCatalog() <em>Catalog</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCatalog()
+ * @generated
+ * @ordered
+ */
+ protected static final String CATALOG_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getSpecifiedCatalog() <em>Specified Catalog</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedCatalog()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_CATALOG_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedCatalog() <em>Specified Catalog</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedCatalog()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedCatalog = SPECIFIED_CATALOG_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultCatalog() <em>Default Catalog</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultCatalog()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_CATALOG_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultCatalog() <em>Default Catalog</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultCatalog()
+ * @generated
+ * @ordered
+ */
+ protected String defaultCatalog = DEFAULT_CATALOG_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getSchema() <em>Schema</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSchema()
+ * @generated
+ * @ordered
+ */
+ protected static final String SCHEMA_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getSpecifiedSchema() <em>Specified Schema</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedSchema()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_SCHEMA_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedSchema() <em>Specified Schema</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedSchema()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedSchema = SPECIFIED_SCHEMA_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultSchema() <em>Default Schema</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultSchema()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_SCHEMA_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultSchema() <em>Default Schema</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultSchema()
+ * @generated
+ * @ordered
+ */
+ protected String defaultSchema = DEFAULT_SCHEMA_EDEFAULT;
+
+ private final Owner owner;
+
+ private final Member member;
+
+ // hold this so we can get the annotation's text range
+ private final DeclarationAnnotationAdapter daa;
+
+ // hold this so we can get the 'name' text range
+ private final DeclarationAnnotationElementAdapter nameDeclarationAdapter;
+
+ // hold this so we can get the 'schema' text range
+ private final DeclarationAnnotationElementAdapter schemaDeclarationAdapter;
+
+ // hold this so we can get the 'catalog' text range
+ private final DeclarationAnnotationElementAdapter catalogDeclarationAdapter;
+
+ private final AnnotationElementAdapter nameAdapter;
+
+ private final AnnotationElementAdapter schemaAdapter;
+
+ private final AnnotationElementAdapter catalogAdapter;
+
+ protected AbstractJavaTable() {
+ super();
+ throw new UnsupportedOperationException("Use AbstractJavaTable(Owner, Member) instead");
+ }
+
+ protected AbstractJavaTable(Owner owner, Member member, DeclarationAnnotationAdapter daa) {
+ super();
+ this.owner = owner;
+ this.member = member;
+ this.daa = daa;
+ this.nameDeclarationAdapter = this.nameAdapter(daa);
+ this.schemaDeclarationAdapter = this.schemaAdapter(daa);
+ this.catalogDeclarationAdapter = this.catalogAdapter(daa);
+ this.nameAdapter = new ShortCircuitAnnotationElementAdapter(this.member, this.nameDeclarationAdapter);
+ this.schemaAdapter = new ShortCircuitAnnotationElementAdapter(this.member, this.schemaDeclarationAdapter);
+ this.catalogAdapter = new ShortCircuitAnnotationElementAdapter(this.member, this.catalogDeclarationAdapter);
+ }
+
+ /**
+ * Build and return a declaration element adapter for the table's 'name' element
+ */
+ protected abstract DeclarationAnnotationElementAdapter nameAdapter(DeclarationAnnotationAdapter declarationAnnotationAdapter);
+
+ /**
+ * Build and return a declaration element adapter for the table's 'schema' element
+ */
+ protected abstract DeclarationAnnotationElementAdapter schemaAdapter(DeclarationAnnotationAdapter declarationAnnotationAdapter);
+
+ /**
+ * Build and return a declaration element adapter for the table's 'catalog' element
+ */
+ protected abstract DeclarationAnnotationElementAdapter catalogAdapter(DeclarationAnnotationAdapter declarationAnnotationAdapter);
+
+ @Override
+ protected void notifyChanged(Notification notification) {
+ super.notifyChanged(notification);
+ switch (notification.getFeatureID(INamedColumn.class)) {
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__SPECIFIED_NAME :
+ this.nameAdapter.setValue(notification.getNewValue());
+ break;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__SPECIFIED_SCHEMA :
+ this.schemaAdapter.setValue(notification.getNewValue());
+ break;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__SPECIFIED_CATALOG :
+ this.catalogAdapter.setValue(notification.getNewValue());
+ break;
+ default :
+ break;
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.ABSTRACT_JAVA_TABLE;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getITable_Name()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated NOT
+ */
+ public String getName() {
+ return (this.getSpecifiedName() == null) ? getDefaultName() : this.getSpecifiedName();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Name</em>' attribute.
+ * @see #setSpecifiedName(String)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getITable_SpecifiedName()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedName() {
+ return specifiedName;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.AbstractJavaTable#getSpecifiedName <em>Specified Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Name</em>' attribute.
+ * @see #getSpecifiedName()
+ * @generated
+ */
+ public void setSpecifiedName(String newSpecifiedName) {
+ String oldSpecifiedName = specifiedName;
+ specifiedName = newSpecifiedName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__SPECIFIED_NAME, oldSpecifiedName, specifiedName));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getITable_DefaultName()
+ * @model changeable="false"
+ * @generated
+ */
+ public String getDefaultName() {
+ return defaultName;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Catalog</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Catalog</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getITable_Catalog()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated NOT
+ */
+ public String getCatalog() {
+ return (this.getSpecifiedCatalog() == null) ? getDefaultCatalog() : this.getSpecifiedCatalog();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Catalog</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Catalog</em>' attribute.
+ * @see #setSpecifiedCatalog(String)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getITable_SpecifiedCatalog()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedCatalog() {
+ return specifiedCatalog;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.AbstractJavaTable#getSpecifiedCatalog <em>Specified Catalog</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Catalog</em>' attribute.
+ * @see #getSpecifiedCatalog()
+ * @generated
+ */
+ public void setSpecifiedCatalog(String newSpecifiedCatalog) {
+ String oldSpecifiedCatalog = specifiedCatalog;
+ specifiedCatalog = newSpecifiedCatalog;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__SPECIFIED_CATALOG, oldSpecifiedCatalog, specifiedCatalog));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Catalog</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Catalog</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getITable_DefaultCatalog()
+ * @model changeable="false"
+ * @generated
+ */
+ public String getDefaultCatalog() {
+ return defaultCatalog;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Schema</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Schema</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getITable_Schema()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated NOT
+ */
+ public String getSchema() {
+ return (this.getSpecifiedSchema() == null) ? getDefaultSchema() : this.getSpecifiedSchema();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Schema</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Schema</em>' attribute.
+ * @see #setSpecifiedSchema(String)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getITable_SpecifiedSchema()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedSchema() {
+ return specifiedSchema;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.AbstractJavaTable#getSpecifiedSchema <em>Specified Schema</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Schema</em>' attribute.
+ * @see #getSpecifiedSchema()
+ * @generated
+ */
+ public void setSpecifiedSchema(String newSpecifiedSchema) {
+ String oldSpecifiedSchema = specifiedSchema;
+ specifiedSchema = newSpecifiedSchema;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__SPECIFIED_SCHEMA, oldSpecifiedSchema, specifiedSchema));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Schema</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Schema</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getITable_DefaultSchema()
+ * @model changeable="false"
+ * @generated
+ */
+ public String getDefaultSchema() {
+ return defaultSchema;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__NAME :
+ return getName();
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__SPECIFIED_NAME :
+ return getSpecifiedName();
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__DEFAULT_NAME :
+ return getDefaultName();
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__CATALOG :
+ return getCatalog();
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__SPECIFIED_CATALOG :
+ return getSpecifiedCatalog();
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__DEFAULT_CATALOG :
+ return getDefaultCatalog();
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__SCHEMA :
+ return getSchema();
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__SPECIFIED_SCHEMA :
+ return getSpecifiedSchema();
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__DEFAULT_SCHEMA :
+ return getDefaultSchema();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__SPECIFIED_NAME :
+ setSpecifiedName((String) newValue);
+ return;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__SPECIFIED_CATALOG :
+ setSpecifiedCatalog((String) newValue);
+ return;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__SPECIFIED_SCHEMA :
+ setSpecifiedSchema((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__SPECIFIED_NAME :
+ setSpecifiedName(SPECIFIED_NAME_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__SPECIFIED_CATALOG :
+ setSpecifiedCatalog(SPECIFIED_CATALOG_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__SPECIFIED_SCHEMA :
+ setSpecifiedSchema(SPECIFIED_SCHEMA_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__NAME :
+ return NAME_EDEFAULT == null ? getName() != null : !NAME_EDEFAULT.equals(getName());
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__SPECIFIED_NAME :
+ return SPECIFIED_NAME_EDEFAULT == null ? specifiedName != null : !SPECIFIED_NAME_EDEFAULT.equals(specifiedName);
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__DEFAULT_NAME :
+ return DEFAULT_NAME_EDEFAULT == null ? defaultName != null : !DEFAULT_NAME_EDEFAULT.equals(defaultName);
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__CATALOG :
+ return CATALOG_EDEFAULT == null ? getCatalog() != null : !CATALOG_EDEFAULT.equals(getCatalog());
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__SPECIFIED_CATALOG :
+ return SPECIFIED_CATALOG_EDEFAULT == null ? specifiedCatalog != null : !SPECIFIED_CATALOG_EDEFAULT.equals(specifiedCatalog);
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__DEFAULT_CATALOG :
+ return DEFAULT_CATALOG_EDEFAULT == null ? defaultCatalog != null : !DEFAULT_CATALOG_EDEFAULT.equals(defaultCatalog);
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__SCHEMA :
+ return SCHEMA_EDEFAULT == null ? getSchema() != null : !SCHEMA_EDEFAULT.equals(getSchema());
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__SPECIFIED_SCHEMA :
+ return SPECIFIED_SCHEMA_EDEFAULT == null ? specifiedSchema != null : !SPECIFIED_SCHEMA_EDEFAULT.equals(specifiedSchema);
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__DEFAULT_SCHEMA :
+ return DEFAULT_SCHEMA_EDEFAULT == null ? defaultSchema != null : !DEFAULT_SCHEMA_EDEFAULT.equals(defaultSchema);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == ITable.class) {
+ switch (derivedFeatureID) {
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__NAME :
+ return JpaCoreMappingsPackage.ITABLE__NAME;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__SPECIFIED_NAME :
+ return JpaCoreMappingsPackage.ITABLE__SPECIFIED_NAME;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__DEFAULT_NAME :
+ return JpaCoreMappingsPackage.ITABLE__DEFAULT_NAME;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__CATALOG :
+ return JpaCoreMappingsPackage.ITABLE__CATALOG;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__SPECIFIED_CATALOG :
+ return JpaCoreMappingsPackage.ITABLE__SPECIFIED_CATALOG;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__DEFAULT_CATALOG :
+ return JpaCoreMappingsPackage.ITABLE__DEFAULT_CATALOG;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__SCHEMA :
+ return JpaCoreMappingsPackage.ITABLE__SCHEMA;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__SPECIFIED_SCHEMA :
+ return JpaCoreMappingsPackage.ITABLE__SPECIFIED_SCHEMA;
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__DEFAULT_SCHEMA :
+ return JpaCoreMappingsPackage.ITABLE__DEFAULT_SCHEMA;
+ 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 == ITable.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.ITABLE__NAME :
+ return JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__NAME;
+ case JpaCoreMappingsPackage.ITABLE__SPECIFIED_NAME :
+ return JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__SPECIFIED_NAME;
+ case JpaCoreMappingsPackage.ITABLE__DEFAULT_NAME :
+ return JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__DEFAULT_NAME;
+ case JpaCoreMappingsPackage.ITABLE__CATALOG :
+ return JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__CATALOG;
+ case JpaCoreMappingsPackage.ITABLE__SPECIFIED_CATALOG :
+ return JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__SPECIFIED_CATALOG;
+ case JpaCoreMappingsPackage.ITABLE__DEFAULT_CATALOG :
+ return JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__DEFAULT_CATALOG;
+ case JpaCoreMappingsPackage.ITABLE__SCHEMA :
+ return JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__SCHEMA;
+ case JpaCoreMappingsPackage.ITABLE__SPECIFIED_SCHEMA :
+ return JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__SPECIFIED_SCHEMA;
+ case JpaCoreMappingsPackage.ITABLE__DEFAULT_SCHEMA :
+ return JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE__DEFAULT_SCHEMA;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (specifiedName: ");
+ result.append(specifiedName);
+ result.append(", defaultName: ");
+ result.append(defaultName);
+ result.append(", specifiedCatalog: ");
+ result.append(specifiedCatalog);
+ result.append(", defaultCatalog: ");
+ result.append(defaultCatalog);
+ result.append(", specifiedSchema: ");
+ result.append(specifiedSchema);
+ result.append(", defaultSchema: ");
+ result.append(defaultSchema);
+ result.append(')');
+ return result.toString();
+ }
+
+ // ********** ITable implementation **********
+ public ITextRange getNameTextRange() {
+ return this.elementTextRange(this.nameDeclarationAdapter);
+ }
+
+ public ITextRange getSchemaTextRange() {
+ return this.elementTextRange(this.schemaDeclarationAdapter);
+ }
+
+ public ITextRange getCatalogTextRange() {
+ return this.elementTextRange(this.catalogDeclarationAdapter);
+ }
+
+ //TODO should we allow setting through the ecore, that would make this method
+ //public and part of the ITable api. only the model needs to be setting the default,
+ //but the ui needs to be listening for changes to the default.
+ protected void setDefaultName(String newDefaultName) {
+ String oldDefaultName = this.defaultName;
+ this.defaultName = newDefaultName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_TABLE__DEFAULT_NAME, oldDefaultName, this.defaultName));
+ }
+
+ protected void setDefaultCatalog(String newDefaultCatalog) {
+ String oldDefaultCatalog = this.defaultCatalog;
+ this.defaultCatalog = newDefaultCatalog;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_TABLE__DEFAULT_CATALOG, oldDefaultCatalog, this.defaultCatalog));
+ }
+
+ protected void setDefaultSchema(String newDefaultSchema) {
+ String oldDefaultSchema = this.defaultSchema;
+ this.defaultSchema = newDefaultSchema;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_TABLE__DEFAULT_SCHEMA, oldDefaultSchema, this.defaultSchema));
+ }
+
+ public Owner getOwner() {
+ return owner;
+ }
+
+ protected Member getMember() {
+ return this.member;
+ }
+
+ //set these defaults here or call setDefaultCatalog from JavaTableContext instead
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ this.setDefaultCatalog((String) defaultsContext.getDefault(BaseJpaPlatform.DEFAULT_TABLE_CATALOG_KEY));
+ this.setDefaultSchema((String) defaultsContext.getDefault(BaseJpaPlatform.DEFAULT_TABLE_SCHEMA_KEY));
+ }
+
+ protected void updateFromJava(CompilationUnit astRoot) {
+ this.setSpecifiedName((String) this.nameAdapter.getValue(astRoot));
+ this.setSpecifiedSchema((String) this.schemaAdapter.getValue(astRoot));
+ this.setSpecifiedCatalog((String) this.catalogAdapter.getValue(astRoot));
+ }
+
+ public ITextRange getTextRange() {
+ ITextRange textRange = this.member.annotationTextRange(this.daa);
+ return (textRange != null) ? textRange : this.getOwner().getTextRange();
+ }
+
+ public Table dbTable() {
+ Schema schema = this.dbSchema();
+ return (schema == null) ? null : schema.tableNamed(this.getName());
+ }
+
+ public Schema dbSchema() {
+ return this.getJpaProject().connectionProfile().getDatabase().schemaNamed(this.getSchema());
+ }
+
+ public boolean isConnected() {
+ ConnectionProfile connectionProfile = this.getJpaProject().connectionProfile();
+ return connectionProfile != null && connectionProfile.isConnected();
+ }
+
+ public boolean hasResolvedSchema() {
+ return this.dbSchema() != null;
+ }
+
+ public boolean isResolved() {
+ return this.dbTable() != null;
+ }
+
+ protected ITextRange elementTextRange(DeclarationAnnotationElementAdapter elementAdapter) {
+ return this.elementTextRange(this.member.annotationElementTextRange(elementAdapter));
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/IntAnnotationElementAdapter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/IntAnnotationElementAdapter.java
new file mode 100644
index 0000000000..13abf2fcbb
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/IntAnnotationElementAdapter.java
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.jdtutility.AnnotationElementAdapter;
+import org.eclipse.jpt.utility.internal.StringTools;
+
+/**
+ * Wrap an AnnotationElementAdapter and convert its value to an int,
+ * and vice-versa. The public protocol is identical to
+ * AnnotationElementAdapter; except the #getValue and #setValue
+ * methods deal with an int instead of an Object.
+ *
+ * Assumptions:
+ * - the nested adapter returns and expects a String value
+ * - the value should be a non-negative number (value >= 0)
+ * - an invalid value is represented with a -1/null
+ * These assumptions work reasonably enough with the JPA requirements.
+ */
+public class IntAnnotationElementAdapter {
+ private final AnnotationElementAdapter adapter;
+
+ public IntAnnotationElementAdapter(AnnotationElementAdapter adapter) {
+ super();
+ this.adapter = adapter;
+ }
+
+ public ASTNode astNode() {
+ return this.adapter.astNode();
+ }
+
+ public ASTNode astNode(CompilationUnit astRoot) {
+ return this.adapter.astNode(astRoot);
+ }
+
+ public int getValue() {
+ return this.convertValueToInt(this.adapter.getValue());
+ }
+
+ public int getValue(CompilationUnit astRoot) {
+ return this.convertValueToInt(this.adapter.getValue(astRoot));
+ }
+
+ protected int convertValueToInt(Object value) {
+ return this.convertStringToInt(this.convertValueToString(value));
+ }
+
+ /**
+ * assume the wrapped adapter returns a string
+ */
+ protected String convertValueToString(Object value) {
+ return (String) value;
+ }
+
+ protected int convertStringToInt(String stringValue) {
+ if (stringValue == null) {
+ return -1;
+ }
+ try {
+ int intValue = Integer.parseInt(stringValue);
+ return (intValue >= 0) ? intValue : -1;
+ } catch (NumberFormatException ex) {
+ return -1;
+ }
+ }
+
+ public void setValue(int value) {
+ this.adapter.setValue(this.convertIntToValue(value));
+ }
+
+ protected Object convertIntToValue(int intValue) {
+ return this.convertStringToValue(this.convertIntToString(intValue));
+ }
+
+ /**
+ * assume the wrapped adapter expects a string
+ */
+ protected Object convertStringToValue(String stringValue) {
+ return stringValue;
+ }
+
+ protected String convertIntToString(int intValue) {
+ return (intValue >= 0) ? Integer.toString(intValue) : null;
+ }
+
+ @Override
+ public String toString() {
+ return StringTools.buildToStringFor(this, this.adapter);
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JPA.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JPA.java
new file mode 100644
index 0000000000..8675c6da6f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JPA.java
@@ -0,0 +1,294 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+
+/**
+ * JPA Java-related stuff (annotations etc.)
+ */
+public interface JPA {
+
+ // JPA package
+ String PACKAGE = "javax.persistence";
+ String PACKAGE_ = PACKAGE + ".";
+
+
+ // ********** API **********
+
+ // JPA annotations
+ String ASSOCIATION_OVERRIDE = PACKAGE_ + "AssociationOverride";
+ String ASSOCIATION_OVERRIDE__NAME = "name";
+ String ASSOCIATION_OVERRIDE__JOIN_COLUMNS = "joinColumns";
+ String ASSOCIATION_OVERRIDES = PACKAGE_ + "AssociationOverrides";
+ String ASSOCIATION_OVERRIDES__VALUE = "value";
+ String ATTRIBUTE_OVERRIDE = PACKAGE_ + "AttributeOverride";
+ String ATTRIBUTE_OVERRIDE__NAME = "name";
+ String ATTRIBUTE_OVERRIDE__COLUMN = "column";
+ String ATTRIBUTE_OVERRIDES = PACKAGE_ + "AttributeOverrides";
+ String ATTRIBUTE_OVERRIDES__VALUE = "value";
+ String BASIC = PACKAGE_ + "Basic";
+ String BASIC__FETCH = "fetch";
+ String BASIC__OPTIONAL = "optional";
+ String COLUMN = PACKAGE_ + "Column";
+ String COLUMN__NAME = "name";
+ String COLUMN__UNIQUE = "unique";
+ String COLUMN__NULLABLE = "nullable";
+ String COLUMN__INSERTABLE = "insertable";
+ String COLUMN__UPDATABLE = "updatable";
+ String COLUMN__COLUMN_DEFINITION = "columnDefinition";
+ String COLUMN__TABLE = "table";
+ String COLUMN__LENGTH = "length";
+ String COLUMN__PRECISION = "precision";
+ String COLUMN__SCALE = "scale";
+ String COLUMN_RESULT = PACKAGE_ + "ColumnResult";
+ String COLUMN_RESULT__NAME = "name";
+ String DISCRIMINATOR_COLUMN = PACKAGE_ + "DiscriminatorColumn";
+ String DISCRIMINATOR_COLUMN__NAME = "name";
+ String DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE = "discriminatorType";
+ String DISCRIMINATOR_COLUMN__COLUMN_DEFINITION = "columnDefinition";
+ String DISCRIMINATOR_COLUMN__LENGTH = "length";
+ String DISCRIMINATOR_VALUE = PACKAGE_ + "DiscriminatorValue";
+ String DISCRIMINATOR_VALUE__VALUE = "value";
+ String EMBEDDABLE = PACKAGE_ + "Embeddable";
+ String EMBEDDED = PACKAGE_ + "Embedded";
+ String EMBEDDED_ID = PACKAGE_ + "EmbeddedId";
+ String ENTITY = PACKAGE_ + "Entity";
+ String ENTITY__NAME = "name";
+ String ENTITY_LISTENERS = PACKAGE_ + "EntityListeners";
+ String ENTITY_LISTENERS__VALUE = "value";
+ String ENTITY_RESULT = PACKAGE_ + "EntityResult";
+ String ENTITY_RESULT__ENTITY_CLASS = "entityClass";
+ String ENTITY_RESULT__FIELDS = "fields";
+ String ENTITY_RESULT__DISCRIMINATOR_COLUMN = "discriminatorColumn";
+ String ENUMERATED = PACKAGE_ + "Enumerated";
+ String ENUMERATED__VALUE = "value";
+ String EXCLUDE_DEFAULT_LISTENERS = PACKAGE_ + "ExcludeDefaultListeners";
+ String EXCLUDE_SUPERCLASS_LISTENERS = PACKAGE_ + "ExcludeSuperclassListeners";
+ String FIELD_RESULT = PACKAGE_ + "FieldResult";
+ String FIELD_RESULT__NAME = "name";
+ String FIELD_RESULT__COLUMN = "column";
+ String FLUSH_MODE = PACKAGE_ + "FlushMode";
+ String FLUSH_MODE__VALUE = "value";
+ String GENERATED_VALUE = PACKAGE_ + "GeneratedValue";
+ String GENERATED_VALUE__STRATEGY = "strategy";
+ String GENERATED_VALUE__GENERATOR = "generator";
+ String ID = PACKAGE_ + "Id";
+ String ID_CLASS = PACKAGE_ + "IdClass";
+ String ID_CLASS__VALUE = "value";
+ String INHERITANCE = PACKAGE_ + "Inheritance";
+ String INHERITANCE__STRATEGY = "strategy";
+ String JOIN_COLUMN = PACKAGE_ + "JoinColumn";
+ String JOIN_COLUMN__NAME = "name";
+ String JOIN_COLUMN__REFERENCED_COLUMN_NAME = "referencedColumnName";
+ String JOIN_COLUMN__UNIQUE = "unique";
+ String JOIN_COLUMN__NULLABLE = "nullable";
+ String JOIN_COLUMN__INSERTABLE = "insertable";
+ String JOIN_COLUMN__UPDATABLE = "updatable";
+ String JOIN_COLUMN__COLUMN_DEFINITION = "columnDefinition";
+ String JOIN_COLUMN__TABLE = "table";
+ String JOIN_COLUMNS = PACKAGE_ + "JoinColumns";
+ String JOIN_COLUMNS__VALUE = "value";
+ String JOIN_TABLE = PACKAGE_ + "JoinTable";
+ String JOIN_TABLE__NAME = "name";
+ String JOIN_TABLE__CATALOG = "catalog";
+ String JOIN_TABLE__SCHEMA = "schema";
+ String JOIN_TABLE__JOIN_COLUMNS = "joinColumns";
+ String JOIN_TABLE__INVERSE_JOIN_COLUMNS = "inverseJoinColumns";
+ String JOIN_TABLE__UNIQUE_CONSTRAINTS = "uniqueConstraints";
+ String LOB = PACKAGE_ + "Lob";
+ String MANY_TO_MANY = PACKAGE_ + "ManyToMany";
+ String MANY_TO_MANY__TARGET_ENTITY = "targetEntity";
+ String MANY_TO_MANY__CASCADE = "cascade";
+ String MANY_TO_MANY__FETCH = "fetch";
+ String MANY_TO_MANY__MAPPED_BY = "mappedBy";
+ String MANY_TO_ONE = PACKAGE_ + "ManyToOne";
+ String MANY_TO_ONE__TARGET_ENTITY = "targetEntity";
+ String MANY_TO_ONE__CASCADE = "cascade";
+ String MANY_TO_ONE__FETCH = "fetch";
+ String MANY_TO_ONE__OPTIONAL = "optional";
+ String MAP_KEY = PACKAGE_ + "MapKey";
+ String MAP_KEY__NAME = "name";
+ String MAPPED_SUPERCLASS = PACKAGE_ + "MappedSuperclass";
+ String NAMED_NATIVE_QUERIES = PACKAGE_ + "NamedNativeQueries";
+ String NAMED_NATIVE_QUERIES__VALUE = "value";
+ String NAMED_NATIVE_QUERY = PACKAGE_ + "NamedNativeQuery";
+ String NAMED_NATIVE_QUERY__NAME = "name";
+ String NAMED_NATIVE_QUERY__QUERY = "query";
+ String NAMED_NATIVE_QUERY__HINTS = "hints";
+ String NAMED_NATIVE_QUERY__RESULT_CLASS = "resultClass";
+ String NAMED_NATIVE_QUERY__RESULT_SET_MAPPING = "resultSetMapping";
+ String NAMED_QUERIES = PACKAGE_ + "NamedQueries";
+ String NAMED_QUERIES__VALUE = "value";
+ String NAMED_QUERY = PACKAGE_ + "NamedQuery";
+ String NAMED_QUERY__NAME = "name";
+ String NAMED_QUERY__QUERY = "query";
+ String NAMED_QUERY__HINTS = "hints";
+ String ONE_TO_MANY = PACKAGE_ + "OneToMany";
+ String ONE_TO_MANY__TARGET_ENTITY = "targetEntity";
+ String ONE_TO_MANY__CASCADE = "cascade";
+ String ONE_TO_MANY__FETCH = "fetch";
+ String ONE_TO_MANY__MAPPED_BY = "mappedBy";
+ String ONE_TO_ONE = PACKAGE_ + "OneToOne";
+ String ONE_TO_ONE__TARGET_ENTITY = "targetEntity";
+ String ONE_TO_ONE__CASCADE = "cascade";
+ String ONE_TO_ONE__FETCH = "fetch";
+ String ONE_TO_ONE__OPTIONAL = "optional";
+ String ONE_TO_ONE__MAPPED_BY = "mappedBy";
+ String ORDER_BY = PACKAGE_ + "OrderBy";
+ String ORDER_BY__VALUE = "value";
+ String PERSISTENCE_CONTEXT = PACKAGE_ + "PersistenceContext";
+ String PERSISTENCE_CONTEXT__NAME = "name";
+ String PERSISTENCE_CONTEXT__UNIT_NAME = "unitName";
+ String PERSISTENCE_CONTEXT__TYPE = "type";
+ String PERSISTENCE_CONTEXTS = PACKAGE_ + "PersistenceContexts";
+ String PERSISTENCE_CONTEXTS__VALUE = "value";
+ String PERSISTENCE_UNIT = PACKAGE_ + "PersistenceUnit";
+ String PERSISTENCE_UNIT__NAME = "name";
+ String PERSISTENCE_UNIT__UNIT_NAME = "unitName";
+ String PERSISTENCE_UNITS = PACKAGE_ + "PersistenceUnits";
+ String PERSISTENCE_UNITS__VALUE = "value";
+ String POST_LOAD = PACKAGE_ + "PostLoad";
+ String POST_PERSIST = PACKAGE_ + "PostPersist";
+ String POST_REMOVE = PACKAGE_ + "PostRemove";
+ String POST_UPDATE = PACKAGE_ + "PostUpdate";
+ String PRE_PERSIST = PACKAGE_ + "PrePersist";
+ String PRE_REMOVE = PACKAGE_ + "PreRemove";
+ String PRE_UPDATE = PACKAGE_ + "PreUpdate";
+ String PRIMARY_KEY_JOIN_COLUMN = PACKAGE_ + "PrimaryKeyJoinColumn";
+ String PRIMARY_KEY_JOIN_COLUMN__NAME = "name";
+ String PRIMARY_KEY_JOIN_COLUMN__REFERENCED_COLUMN_NAME = "referencedColumnName";
+ String PRIMARY_KEY_JOIN_COLUMN__COLUMN_DEFINITION = "columnDefinition";
+ String PRIMARY_KEY_JOIN_COLUMNS = PACKAGE_ + "PrimaryKeyJoinColumns";
+ String PRIMARY_KEY_JOIN_COLUMNS__VALUE = "value";
+ String QUERY_HINT = PACKAGE_ + "QueryHint";
+ String QUERY_HINT__NAME = "name";
+ String QUERY_HINT__VALUE = "value";
+ String SECONDARY_TABLE = PACKAGE_ + "SecondaryTable";
+ String SECONDARY_TABLE__NAME = "name";
+ String SECONDARY_TABLE__CATALOG = "catalog";
+ String SECONDARY_TABLE__SCHEMA = "schema";
+ String SECONDARY_TABLE__PK_JOIN_COLUMNS = "pkJoinColumns";
+ String SECONDARY_TABLE__UNIQUE_CONSTRAINTS = "uniqueConstraints";
+ String SECONDARY_TABLES = PACKAGE_ + "SecondaryTables";
+ String SECONDARY_TABLES__VALUE = "value";
+ String SEQUENCE_GENERATOR = PACKAGE_ + "SequenceGenerator";
+ String SEQUENCE_GENERATOR__NAME = "name";
+ String SEQUENCE_GENERATOR__SEQUENCE_NAME = "sequenceName";
+ String SEQUENCE_GENERATOR__INITIAL_VALUE = "initialValue";
+ String SEQUENCE_GENERATOR__ALLOCATION_SIZE = "allocationSize";
+ String SQL_RESULT_SET_MAPPING = PACKAGE_ + "SqlResultSetMapping";
+ String SQL_RESULT_SET_MAPPING__NAME = "name";
+ String SQL_RESULT_SET_MAPPING__ENTITIES = "entities";
+ String SQL_RESULT_SET_MAPPING__COLUMNS = "columns";
+ String TABLE = PACKAGE_ + "Table";
+ String TABLE__NAME = "name";
+ String TABLE__CATALOG = "catalog";
+ String TABLE__SCHEMA = "schema";
+ String TABLE__UNIQUE_CONSTRAINTS = "uniqueConstraints";
+ String TABLE_GENERATOR = PACKAGE_ + "TableGenerator";
+ String TABLE_GENERATOR__NAME = "name";
+ String TABLE_GENERATOR__TABLE = "table";
+ String TABLE_GENERATOR__CATALOG = "catalog";
+ String TABLE_GENERATOR__SCHEMA = "schema";
+ String TABLE_GENERATOR__PK_COLUMN_NAME = "pkColumnName";
+ String TABLE_GENERATOR__VALUE_COLUMN_NAME = "valueColumnName";
+ String TABLE_GENERATOR__PK_COLUMN_VALUE = "pkColumnValue";
+ String TABLE_GENERATOR__INITIAL_VALUE = "initialValue";
+ String TABLE_GENERATOR__ALLOCATION_SIZE = "allocationSize";
+ String TABLE_GENERATOR__UNIQUE_CONSTRAINTS = "uniqueConstraints";
+ String TEMPORAL = PACKAGE_ + "Temporal";
+ String TEMPORAL__VALUE = "value";
+ String TRANSIENT = PACKAGE_ + "Transient";
+ String UNIQUE_CONSTRAINT = PACKAGE_ + "UniqueConstraint";
+ String UNIQUE_CONSTRAINT__COLUMN_NAMES = "columnNames";
+ String VERSION = PACKAGE_ + "Version";
+
+ // JPA enums
+ String GENERATION_TYPE = PACKAGE_ + "GenerationType";
+ String GENERATION_TYPE_ = GENERATION_TYPE + ".";
+ String GENERATION_TYPE__AUTO = GENERATION_TYPE_ + "AUTO";
+ String GENERATION_TYPE__IDENTITY = GENERATION_TYPE_ + "IDENTITY";
+ String GENERATION_TYPE__SEQUENCE = GENERATION_TYPE_ + "SEQUENCE";
+ String GENERATION_TYPE__TABLE = GENERATION_TYPE_ + "TABLE";
+
+ String CASCADE_TYPE = PACKAGE_ + "CascadeType";
+ String CASCADE_TYPE_ = CASCADE_TYPE + ".";
+ String CASCADE_TYPE__ALL = CASCADE_TYPE_ + "ALL";
+ String CASCADE_TYPE__MERGE = CASCADE_TYPE_ + "MERGE";
+ String CASCADE_TYPE__PERSIST = CASCADE_TYPE_ + "PERSIST";
+ String CASCADE_TYPE__REFRESH = CASCADE_TYPE_ + "REFRESH";
+ String CASCADE_TYPE__REMOVE = CASCADE_TYPE_ + "REMOVE";
+
+ String DISCRIMINATOR_TYPE = PACKAGE_ + "DiscriminatorType";
+ String DISCRIMINATOR_TYPE_ = DISCRIMINATOR_TYPE + ".";
+ String DISCRIMINATOR_TYPE__CHAR = DISCRIMINATOR_TYPE_ + "CHAR";
+ String DISCRIMINATOR_TYPE__INTEGER = DISCRIMINATOR_TYPE_ + "INTEGER";
+ String DISCRIMINATOR_TYPE__STRING = DISCRIMINATOR_TYPE_ + "STRING";
+
+ String ENUM_TYPE = PACKAGE_ + "EnumType";
+ String ENUM_TYPE_ = ENUM_TYPE + ".";
+ String ENUM_TYPE__ORDINAL = ENUM_TYPE_ + "ORDINAL";
+ String ENUM_TYPE__STRING = ENUM_TYPE_ + "STRING";
+
+ String FETCH_TYPE = PACKAGE_ + "FetchType";
+ String FETCH_TYPE_ = FETCH_TYPE + ".";
+ String FETCH_TYPE__EAGER = FETCH_TYPE_ + "EAGER";
+ String FETCH_TYPE__LAZY = FETCH_TYPE_ + "LAZY";
+
+ String FLUSH_MODE_TYPE = PACKAGE_ + "FlushModeType";
+ String FLUSH_MODE_TYPE_ = FLUSH_MODE_TYPE + ".";
+ String FLUSH_MODE_TYPE__AUTO = FLUSH_MODE_TYPE_ + "AUTO";
+ String FLUSH_MODE_TYPE__COMMIT = FLUSH_MODE_TYPE_ + "COMMIT";
+
+ String INHERITANCE_TYPE = PACKAGE_ + "InheritanceType";
+ String INHERITANCE_TYPE_ = INHERITANCE_TYPE + ".";
+ String INHERITANCE_TYPE__JOINED = INHERITANCE_TYPE_ + "JOINED";
+ String INHERITANCE_TYPE__SINGLE_TABLE = INHERITANCE_TYPE_ + "SINGLE_TABLE";
+ String INHERITANCE_TYPE__TABLE_PER_CLASS = INHERITANCE_TYPE_ + "TABLE_PER_CLASS";
+
+ String PERSISTENCE_CONTEXT_TYPE = PACKAGE_ + "PersistenceContextType";
+ String PERSISTENCE_CONTEXT_TYPE_ = PERSISTENCE_CONTEXT_TYPE + ".";
+ String PERSISTENCE_CONTEXT_TYPE__EXTENDED = PERSISTENCE_CONTEXT_TYPE_ + "EXTENDED";
+ String PERSISTENCE_CONTEXT_TYPE__TRANSACTION = PERSISTENCE_CONTEXT_TYPE_ + "TRANSACTION";
+
+ String TEMPORAL_TYPE = PACKAGE_ + "TemporalType";
+ String TEMPORAL_TYPE_ = TEMPORAL_TYPE + ".";
+ String TEMPORAL_TYPE__DATE = TEMPORAL_TYPE_ + "DATE";
+ String TEMPORAL_TYPE__TIME = TEMPORAL_TYPE_ + "TIME";
+ String TEMPORAL_TYPE__TIMESTAMP = TEMPORAL_TYPE_ + "TIMESTAMP";
+
+ // JPA interfaces
+ String ENTITY_MANAGER = PACKAGE_ + "EntityManager";
+ String ENTITY_MANAGER_FACTORY = PACKAGE_ + "EntityManagerFactory";
+ String ENTITY_TRANSACTION = PACKAGE_ + "EntityTransaction";
+ String INSTRUMENTABLE_CLASS_LOADER = PACKAGE_ + "InstrumentableClassLoader";
+ String QUERY = PACKAGE_ + "Query";
+
+ // JPA classes
+ String PERSISTENCE = PACKAGE_ + "Persistence";
+
+ // JPA exceptions
+ String NON_UNIQUE_RESULT_EXCEPTION = PACKAGE_ + "NonUniqueResultException";
+ String OBJECT_NOT_FOUND_EXCEPTION = PACKAGE_ + "ObjectNotFoundException";
+ String PERSISTENCE_EXCEPTION = PACKAGE_ + "PersistenceException";
+
+
+ // ********** SPI **********
+
+ // JPA SPI package
+ String SPI_PACKAGE = PACKAGE_ + "spi";
+ String SPI_PACKAGE_ = SPI_PACKAGE + ".";
+
+ // JPA SPI interfaces
+ String ENTITY_MANAGER_FACTORY_PROVIDER = SPI_PACKAGE_ + "EntityManagerFactoryProvider";
+ String PERSISTENCE_INFO = SPI_PACKAGE_ + "PersistenceInfo";
+ String PERSISTENCE_PROVIDER = SPI_PACKAGE_ + "PersistenceProvider";
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaAbstractQuery.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaAbstractQuery.java
new file mode 100644
index 0000000000..62fa42bc10
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaAbstractQuery.java
@@ -0,0 +1,626 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+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.ecore.EClass;
+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.jdt.core.dom.Annotation;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.content.java.JavaEObject;
+import org.eclipse.jpt.core.internal.jdtutility.AnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.ConversionDeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.IndexedAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.IndexedDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Member;
+import org.eclipse.jpt.core.internal.jdtutility.MemberIndexedAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.ShortCircuitAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.mappings.IQuery;
+import org.eclipse.jpt.core.internal.mappings.IQueryHint;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Abstract Query</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaAbstractQuery()
+ * @model kind="class" abstract="true"
+ * @generated
+ */
+public abstract class JavaAbstractQuery extends JavaEObject implements IQuery
+{
+ private final Member member;
+
+ // hold this so we can get the annotation's text range
+ private final IndexedDeclarationAnnotationAdapter idaa;
+
+ // hold this so we can get the 'name' text range
+ private final DeclarationAnnotationElementAdapter nameDeclarationAdapter;
+
+ // hold this so we can get the 'query' text range
+ private final DeclarationAnnotationElementAdapter queryDeclarationAdapter;
+
+ private final IndexedAnnotationAdapter annotationAdapter;
+
+ private final AnnotationElementAdapter nameAdapter;
+
+ private final AnnotationElementAdapter queryAdapter;
+
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getQuery() <em>Query</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getQuery()
+ * @generated
+ * @ordered
+ */
+ protected static final String QUERY_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getQuery() <em>Query</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getQuery()
+ * @generated
+ * @ordered
+ */
+ protected String query = QUERY_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getHints() <em>Hints</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getHints()
+ * @generated
+ * @ordered
+ */
+ protected EList<IQueryHint> hints;
+
+ protected JavaAbstractQuery() {
+ throw new UnsupportedOperationException("Use JavaAbstractQuery(Member) instead");
+ }
+
+ protected JavaAbstractQuery(Member member, IndexedDeclarationAnnotationAdapter idaa) {
+ super();
+ this.member = member;
+ this.idaa = idaa;
+ this.annotationAdapter = new MemberIndexedAnnotationAdapter(member, idaa);
+ this.nameDeclarationAdapter = nameAdapter(this.idaa);
+ this.queryDeclarationAdapter = queryAdapter(this.idaa);
+ this.nameAdapter = this.buildAdapter(this.nameDeclarationAdapter);
+ this.queryAdapter = this.buildAdapter(this.queryDeclarationAdapter);
+ }
+
+ // ********** initialization **********
+ protected AnnotationElementAdapter buildAdapter(DeclarationAnnotationElementAdapter daea) {
+ return new ShortCircuitAnnotationElementAdapter(this.member, daea);
+ }
+
+ protected DeclarationAnnotationElementAdapter nameAdapter(DeclarationAnnotationAdapter daa) {
+ return new ConversionDeclarationAnnotationElementAdapter(daa, nameElementName());
+ }
+
+ protected DeclarationAnnotationElementAdapter queryAdapter(DeclarationAnnotationAdapter daa) {
+ return new ConversionDeclarationAnnotationElementAdapter(daa, queryElementName());
+ }
+
+ protected abstract String nameElementName();
+
+ protected abstract String queryElementName();
+
+ @Override
+ protected void notifyChanged(Notification notification) {
+ super.notifyChanged(notification);
+ switch (notification.getFeatureID(IQuery.class)) {
+ case JpaCoreMappingsPackage.IQUERY__NAME :
+ this.nameAdapter.setValue(notification.getNewValue());
+ break;
+ case JpaCoreMappingsPackage.IQUERY__QUERY :
+ this.queryAdapter.setValue(notification.getNewValue());
+ break;
+ case JpaCoreMappingsPackage.IQUERY__HINTS :
+ hintsChanged(notification);
+ break;
+ default :
+ break;
+ }
+ }
+
+ void hintsChanged(Notification notification) {
+ switch (notification.getEventType()) {
+ case Notification.ADD :
+ hintAdded(notification.getPosition(), (IQueryHint) notification.getNewValue());
+ break;
+ case Notification.ADD_MANY :
+ hintsAdded(notification.getPosition(), (List<IQueryHint>) notification.getNewValue());
+ break;
+ case Notification.REMOVE :
+ hintRemoved(notification.getPosition(), (IQueryHint) notification.getOldValue());
+ break;
+ case Notification.REMOVE_MANY :
+ if (notification.getPosition() == Notification.NO_INDEX) {
+ hintsCleared((List<IQueryHint>) notification.getOldValue());
+ }
+ else {
+ // Notification.getNewValue() returns an array of the positions of objects that were removed
+ hintsRemoved((int[]) notification.getNewValue(), (List<IQueryHint>) notification.getOldValue());
+ }
+ break;
+ case Notification.SET :
+ if (!notification.isTouch()) {
+ hintSet(notification.getPosition(), (IQueryHint) notification.getOldValue(), (IQueryHint) notification.getNewValue());
+ }
+ break;
+ case Notification.MOVE :
+ // Notification.getOldValue() returns the source index
+ // Notification.getPositon() returns the target index
+ // Notification.getNewValue() returns the moved object
+ hintMoved(notification.getOldIntValue(), notification.getPosition(), (IQueryHint) notification.getNewValue());
+ break;
+ default :
+ break;
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_ABSTRACT_QUERY;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIQuery_Name()
+ * @model
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaAbstractQuery#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_ABSTRACT_QUERY__NAME, oldName, name));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Query</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Query</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Query</em>' attribute.
+ * @see #setQuery(String)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIQuery_Query()
+ * @model
+ * @generated
+ */
+ public String getQuery() {
+ return query;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaAbstractQuery#getQuery <em>Query</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Query</em>' attribute.
+ * @see #getQuery()
+ * @generated
+ */
+ public void setQuery(String newQuery) {
+ String oldQuery = query;
+ query = newQuery;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_ABSTRACT_QUERY__QUERY, oldQuery, query));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Hints</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IQueryHint}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Hints</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>Hints</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIQuery_Hints()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IQueryHint" containment="true"
+ * @generated
+ */
+ public EList<IQueryHint> getHints() {
+ if (hints == null) {
+ hints = new EObjectContainmentEList<IQueryHint>(IQueryHint.class, this, JpaJavaMappingsPackage.JAVA_ABSTRACT_QUERY__HINTS);
+ }
+ return hints;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_ABSTRACT_QUERY__HINTS :
+ return ((InternalEList<?>) getHints()).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 JpaJavaMappingsPackage.JAVA_ABSTRACT_QUERY__NAME :
+ return getName();
+ case JpaJavaMappingsPackage.JAVA_ABSTRACT_QUERY__QUERY :
+ return getQuery();
+ case JpaJavaMappingsPackage.JAVA_ABSTRACT_QUERY__HINTS :
+ return getHints();
+ }
+ 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 JpaJavaMappingsPackage.JAVA_ABSTRACT_QUERY__NAME :
+ setName((String) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_ABSTRACT_QUERY__QUERY :
+ setQuery((String) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_ABSTRACT_QUERY__HINTS :
+ getHints().clear();
+ getHints().addAll((Collection<? extends IQueryHint>) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_ABSTRACT_QUERY__NAME :
+ setName(NAME_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.JAVA_ABSTRACT_QUERY__QUERY :
+ setQuery(QUERY_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.JAVA_ABSTRACT_QUERY__HINTS :
+ getHints().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_ABSTRACT_QUERY__NAME :
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case JpaJavaMappingsPackage.JAVA_ABSTRACT_QUERY__QUERY :
+ return QUERY_EDEFAULT == null ? query != null : !QUERY_EDEFAULT.equals(query);
+ case JpaJavaMappingsPackage.JAVA_ABSTRACT_QUERY__HINTS :
+ return hints != null && !hints.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IQuery.class) {
+ switch (derivedFeatureID) {
+ case JpaJavaMappingsPackage.JAVA_ABSTRACT_QUERY__NAME :
+ return JpaCoreMappingsPackage.IQUERY__NAME;
+ case JpaJavaMappingsPackage.JAVA_ABSTRACT_QUERY__QUERY :
+ return JpaCoreMappingsPackage.IQUERY__QUERY;
+ case JpaJavaMappingsPackage.JAVA_ABSTRACT_QUERY__HINTS :
+ return JpaCoreMappingsPackage.IQUERY__HINTS;
+ 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 == IQuery.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IQUERY__NAME :
+ return JpaJavaMappingsPackage.JAVA_ABSTRACT_QUERY__NAME;
+ case JpaCoreMappingsPackage.IQUERY__QUERY :
+ return JpaJavaMappingsPackage.JAVA_ABSTRACT_QUERY__QUERY;
+ case JpaCoreMappingsPackage.IQUERY__HINTS :
+ return JpaJavaMappingsPackage.JAVA_ABSTRACT_QUERY__HINTS;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(", query: ");
+ result.append(query);
+ result.append(')');
+ return result.toString();
+ }
+
+ protected Member getMember() {
+ return this.member;
+ }
+
+ // ********** jpa model -> java annotations **********
+ /**
+ * slide over all the annotations that follow the new join column
+ */
+ public void hintAdded(int index, IQueryHint hint) {
+ //JoinColumn was added to persistence model when udating from java, do not need
+ //to edit the java in this case. TODO is there a better way to handle this??
+ if (((JavaQueryHint) hint).annotation(getMember().astRoot()) == null) {
+ this.synchHintAnnotationsAfterAdd(index + 1);
+ ((JavaQueryHint) hint).newAnnotation();
+ }
+ }
+
+ // bjv look at this
+ public void hintsAdded(int index, List<IQueryHint> hints) {
+ //JoinColumn was added to persistence model when udating from java, do not need
+ //to edit the java in this case. TODO is there a better way to handle this??
+ if (!hints.isEmpty() && ((JavaQueryHint) hints.get(0)).annotation(getMember().astRoot()) == null) {
+ this.synchHintAnnotationsAfterAdd(index + hints.size());
+ for (IQueryHint hint : hints) {
+ ((JavaQueryHint) hint).newAnnotation();
+ }
+ }
+ }
+
+ public void hintRemoved(int index, IQueryHint hint) {
+ ((JavaQueryHint) hint).removeAnnotation();
+ this.synchHintAnnotationsAfterRemove(index);
+ }
+
+ public void hintsRemoved(int[] indexes, List<IQueryHint> hints) {
+ for (IQueryHint hint : hints) {
+ ((JavaQueryHint) hint).removeAnnotation();
+ }
+ this.synchHintAnnotationsAfterRemove(indexes[0]);
+ }
+
+ public void hintsCleared(List<IQueryHint> hints) {
+ for (IQueryHint hint : hints) {
+ ((JavaQueryHint) hint).removeAnnotation();
+ }
+ }
+
+ public void hintSet(int index, IQueryHint oldHint, IQueryHint newHint) {
+ ((JavaQueryHint) newHint).newAnnotation();
+ }
+
+ public void hintMoved(int sourceIndex, int targetIndex, IQueryHint hint) {
+ List<IQueryHint> hints = this.getHints();
+ int begin = Math.min(sourceIndex, targetIndex);
+ int end = Math.max(sourceIndex, targetIndex);
+ for (int i = begin; i-- > end;) {
+ this.synch(hints.get(i), i);
+ }
+ }
+
+ /**
+ * synchronize the annotations with the model join columns,
+ * starting at the end of the list to prevent overlap
+ */
+ private void synchHintAnnotationsAfterAdd(int index) {
+ List<IQueryHint> hints = this.getHints();
+ for (int i = hints.size(); i-- > index;) {
+ this.synch(hints.get(i), i);
+ }
+ }
+
+ /**
+ * synchronize the annotations with the model join columns,
+ * starting at the specified index to prevent overlap
+ */
+ private void synchHintAnnotationsAfterRemove(int index) {
+ List<IQueryHint> hints = this.getHints();
+ for (int i = index; i < hints.size(); i++) {
+ this.synch(hints.get(i), i);
+ }
+ }
+
+ private void synch(IQueryHint queryHint, int index) {
+ ((JavaQueryHint) queryHint).moveAnnotation(index);
+ }
+
+ /**
+ * allow owners to verify the annotation
+ */
+ public Annotation annotation(CompilationUnit astRoot) {
+ return this.annotationAdapter.getAnnotation(astRoot);
+ }
+
+ protected void updateFromJava(CompilationUnit astRoot) {
+ this.setName((String) this.nameAdapter.getValue(astRoot));
+ this.setQuery((String) this.queryAdapter.getValue(astRoot));
+ this.updateQueryHintsFromJava(astRoot);
+ }
+
+ /**
+ * here we just worry about getting the named query lists the same size;
+ * then we delegate to the named queries to synch themselves up
+ */
+ private void updateQueryHintsFromJava(CompilationUnit astRoot) {
+ // synchronize the model named queries with the Java source
+ List<IQueryHint> queryHints = this.getHints();
+ int persSize = queryHints.size();
+ int javaSize = 0;
+ boolean allJavaAnnotationsFound = false;
+ for (int i = 0; i < persSize; i++) {
+ JavaQueryHint hint = (JavaQueryHint) queryHints.get(i);
+ if (hint.annotation(astRoot) == null) {
+ allJavaAnnotationsFound = true;
+ break; // no need to go any further
+ }
+ hint.updateFromJava(astRoot);
+ javaSize++;
+ }
+ if (allJavaAnnotationsFound) {
+ // remove any model named queries beyond those that correspond to the Java annotations
+ while (persSize > javaSize) {
+ persSize--;
+ queryHints.remove(persSize);
+ }
+ }
+ else {
+ // add new model join columns until they match the Java annotations
+ while (!allJavaAnnotationsFound) {
+ JavaQueryHint javaQueryHint = createJavaQueryHint(javaSize);
+ if (javaQueryHint.annotation(astRoot) == null) {
+ allJavaAnnotationsFound = true;
+ }
+ else {
+ getHints().add(javaQueryHint);
+ javaQueryHint.updateFromJava(astRoot);
+ javaSize++;
+ }
+ }
+ }
+ }
+
+ public JavaQueryHint createQueryHint(int index) {
+ return createJavaQueryHint(index);
+ }
+
+ protected abstract JavaQueryHint createJavaQueryHint(int index);
+
+ // ********** persistence model -> java annotations **********
+ void moveAnnotation(int newIndex) {
+ this.annotationAdapter.moveAnnotation(newIndex);
+ }
+
+ void newAnnotation() {
+ this.annotationAdapter.newMarkerAnnotation();
+ }
+
+ void removeAnnotation() {
+ this.annotationAdapter.removeAnnotation();
+ }
+
+ // ********* IJpaSourceObject implementation ***********
+ public ITextRange getTextRange() {
+ return this.member.annotationTextRange(this.idaa);
+ }
+
+ // ********** static methods **********
+ protected static DeclarationAnnotationElementAdapter buildAdapter(DeclarationAnnotationAdapter annotationAdapter, String elementName) {
+ return new ConversionDeclarationAnnotationElementAdapter(annotationAdapter, elementName);
+ }
+} // JavaAbstractQuery
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaAssociationOverride.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaAssociationOverride.java
new file mode 100644
index 0000000000..9698861981
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaAssociationOverride.java
@@ -0,0 +1,434 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+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.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.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.jdtutility.CombinationIndexedDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.IndexedDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Member;
+import org.eclipse.jpt.core.internal.jdtutility.SimpleDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.mappings.IAssociationOverride;
+import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.IJoinTable;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Association Override</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaAssociationOverride()
+ * @model kind="class"
+ * @generated
+ */
+public class JavaAssociationOverride extends JavaOverride
+ implements IAssociationOverride
+{
+ /**
+ * The cached value of the '{@link #getSpecifiedJoinColumns() <em>Specified Join Columns</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedJoinColumns()
+ * @generated
+ * @ordered
+ */
+ protected EList<IJoinColumn> specifiedJoinColumns;
+
+ /**
+ * The cached value of the '{@link #getDefaultJoinColumns() <em>Default Join Columns</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultJoinColumns()
+ * @generated
+ * @ordered
+ */
+ protected EList<IJoinColumn> defaultJoinColumns;
+
+ public static final SimpleDeclarationAnnotationAdapter SINGLE_DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.ASSOCIATION_OVERRIDE);
+
+ public static final SimpleDeclarationAnnotationAdapter MULTIPLE_DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.ASSOCIATION_OVERRIDES);
+
+ protected JavaAssociationOverride() {
+ throw new UnsupportedOperationException("use JavaAssociationOverride(Owner, Member, IndexedDeclarationAnnotationAdapter)");
+ }
+
+ protected JavaAssociationOverride(Owner owner, Member member, IndexedDeclarationAnnotationAdapter daa) {
+ super(owner, member, daa);
+ }
+
+ /**
+ * check for changes to the 'specifiedJoinColumns' and
+ * 'specifiedInverseJoinColumns' lists so we can notify the
+ * model adapter of any changes;
+ * also listen for changes to the 'defaultJoinColumns' and
+ * 'defaultInverseJoinColumns' lists so we can spank the developer
+ */
+ @Override
+ protected void notifyChanged(Notification notification) {
+ super.notifyChanged(notification);
+ switch (notification.getFeatureID(IJoinTable.class)) {
+ case JpaCoreMappingsPackage.IASSOCIATION_OVERRIDE__SPECIFIED_JOIN_COLUMNS :
+ specifiedJoinColumnsChanged(notification);
+ break;
+ default :
+ break;
+ }
+ }
+
+ void specifiedJoinColumnsChanged(Notification notification) {
+ switch (notification.getEventType()) {
+ case Notification.ADD :
+ specifiedJoinColumnAdded(notification.getPosition(), (IJoinColumn) notification.getNewValue());
+ break;
+ case Notification.ADD_MANY :
+ specifiedJoinColumnsAdded(notification.getPosition(), (List<IJoinColumn>) notification.getNewValue());
+ break;
+ case Notification.REMOVE :
+ specifiedJoinColumnRemoved(notification.getPosition(), (IJoinColumn) notification.getOldValue());
+ break;
+ case Notification.REMOVE_MANY :
+ if (notification.getPosition() == Notification.NO_INDEX) {
+ specifiedJoinColumnsCleared((List<IJoinColumn>) notification.getOldValue());
+ }
+ else {
+ // Notification.getNewValue() returns an array of the positions of objects that were removed
+ specifiedJoinColumnsRemoved((int[]) notification.getNewValue(), (List<IJoinColumn>) notification.getOldValue());
+ }
+ break;
+ case Notification.SET :
+ if (!notification.isTouch()) {
+ specifiedJoinColumnSet(notification.getPosition(), (IJoinColumn) notification.getOldValue(), (IJoinColumn) notification.getNewValue());
+ }
+ break;
+ case Notification.MOVE :
+ // Notification.getOldValue() returns the source index
+ // Notification.getPositon() returns the target index
+ // Notification.getNewValue() returns the moved object
+ specifiedJoinColumnMoved(notification.getOldIntValue(), notification.getPosition(), (IJoinColumn) notification.getNewValue());
+ break;
+ default :
+ break;
+ }
+ }
+
+ @Override
+ protected String nameElementName() {
+ return JPA.ASSOCIATION_OVERRIDE__NAME;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_ASSOCIATION_OVERRIDE;
+ }
+
+ public EList<IJoinColumn> getJoinColumns() {
+ return this.getSpecifiedJoinColumns().isEmpty() ? this.getDefaultJoinColumns() : this.getSpecifiedJoinColumns();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Join Columns</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>Specified Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIAssociationOverride_SpecifiedJoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IJoinColumn" containment="true"
+ * @generated
+ */
+ public EList<IJoinColumn> getSpecifiedJoinColumns() {
+ if (specifiedJoinColumns == null) {
+ specifiedJoinColumns = new EObjectContainmentEList<IJoinColumn>(IJoinColumn.class, this, JpaJavaMappingsPackage.JAVA_ASSOCIATION_OVERRIDE__SPECIFIED_JOIN_COLUMNS);
+ }
+ return specifiedJoinColumns;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Join Columns</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>Default Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIAssociationOverride_DefaultJoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IJoinColumn" containment="true"
+ * @generated
+ */
+ public EList<IJoinColumn> getDefaultJoinColumns() {
+ if (defaultJoinColumns == null) {
+ defaultJoinColumns = new EObjectContainmentEList<IJoinColumn>(IJoinColumn.class, this, JpaJavaMappingsPackage.JAVA_ASSOCIATION_OVERRIDE__DEFAULT_JOIN_COLUMNS);
+ }
+ return defaultJoinColumns;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_ASSOCIATION_OVERRIDE__JOIN_COLUMNS :
+ return ((InternalEList<?>) getJoinColumns()).basicRemove(otherEnd, msgs);
+ case JpaJavaMappingsPackage.JAVA_ASSOCIATION_OVERRIDE__SPECIFIED_JOIN_COLUMNS :
+ return ((InternalEList<?>) getSpecifiedJoinColumns()).basicRemove(otherEnd, msgs);
+ case JpaJavaMappingsPackage.JAVA_ASSOCIATION_OVERRIDE__DEFAULT_JOIN_COLUMNS :
+ return ((InternalEList<?>) getDefaultJoinColumns()).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 JpaJavaMappingsPackage.JAVA_ASSOCIATION_OVERRIDE__JOIN_COLUMNS :
+ return getJoinColumns();
+ case JpaJavaMappingsPackage.JAVA_ASSOCIATION_OVERRIDE__SPECIFIED_JOIN_COLUMNS :
+ return getSpecifiedJoinColumns();
+ case JpaJavaMappingsPackage.JAVA_ASSOCIATION_OVERRIDE__DEFAULT_JOIN_COLUMNS :
+ return getDefaultJoinColumns();
+ }
+ 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 JpaJavaMappingsPackage.JAVA_ASSOCIATION_OVERRIDE__SPECIFIED_JOIN_COLUMNS :
+ getSpecifiedJoinColumns().clear();
+ getSpecifiedJoinColumns().addAll((Collection<? extends IJoinColumn>) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_ASSOCIATION_OVERRIDE__DEFAULT_JOIN_COLUMNS :
+ getDefaultJoinColumns().clear();
+ getDefaultJoinColumns().addAll((Collection<? extends IJoinColumn>) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_ASSOCIATION_OVERRIDE__SPECIFIED_JOIN_COLUMNS :
+ getSpecifiedJoinColumns().clear();
+ return;
+ case JpaJavaMappingsPackage.JAVA_ASSOCIATION_OVERRIDE__DEFAULT_JOIN_COLUMNS :
+ getDefaultJoinColumns().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_ASSOCIATION_OVERRIDE__JOIN_COLUMNS :
+ return !getJoinColumns().isEmpty();
+ case JpaJavaMappingsPackage.JAVA_ASSOCIATION_OVERRIDE__SPECIFIED_JOIN_COLUMNS :
+ return specifiedJoinColumns != null && !specifiedJoinColumns.isEmpty();
+ case JpaJavaMappingsPackage.JAVA_ASSOCIATION_OVERRIDE__DEFAULT_JOIN_COLUMNS :
+ return defaultJoinColumns != null && !defaultJoinColumns.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IAssociationOverride.class) {
+ switch (derivedFeatureID) {
+ case JpaJavaMappingsPackage.JAVA_ASSOCIATION_OVERRIDE__JOIN_COLUMNS :
+ return JpaCoreMappingsPackage.IASSOCIATION_OVERRIDE__JOIN_COLUMNS;
+ case JpaJavaMappingsPackage.JAVA_ASSOCIATION_OVERRIDE__SPECIFIED_JOIN_COLUMNS :
+ return JpaCoreMappingsPackage.IASSOCIATION_OVERRIDE__SPECIFIED_JOIN_COLUMNS;
+ case JpaJavaMappingsPackage.JAVA_ASSOCIATION_OVERRIDE__DEFAULT_JOIN_COLUMNS :
+ return JpaCoreMappingsPackage.IASSOCIATION_OVERRIDE__DEFAULT_JOIN_COLUMNS;
+ 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 == IAssociationOverride.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IASSOCIATION_OVERRIDE__JOIN_COLUMNS :
+ return JpaJavaMappingsPackage.JAVA_ASSOCIATION_OVERRIDE__JOIN_COLUMNS;
+ case JpaCoreMappingsPackage.IASSOCIATION_OVERRIDE__SPECIFIED_JOIN_COLUMNS :
+ return JpaJavaMappingsPackage.JAVA_ASSOCIATION_OVERRIDE__SPECIFIED_JOIN_COLUMNS;
+ case JpaCoreMappingsPackage.IASSOCIATION_OVERRIDE__DEFAULT_JOIN_COLUMNS :
+ return JpaJavaMappingsPackage.JAVA_ASSOCIATION_OVERRIDE__DEFAULT_JOIN_COLUMNS;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ public ITypeMapping typeMapping() {
+ return (ITypeMapping) eContainer();
+ }
+
+ public boolean containsSpecifiedJoinColumns() {
+ return !this.getSpecifiedJoinColumns().isEmpty();
+ }
+
+ public IJoinColumn createJoinColumn(int index) {
+ return this.createJavaJoinColumn(index);
+ }
+
+ private JavaJoinColumn createJavaJoinColumn(int index) {
+ return JavaJoinColumn.createAssociationOverrideJoinColumn(new JoinColumnOwner(this), this.getMember(), index);
+ }
+
+ // ********** jpa model -> java annotations **********
+ /**
+ * slide over all the annotations that follow the new join column
+ */
+ public void specifiedJoinColumnAdded(int index, IJoinColumn joinColumn) {
+ //JoinColumn was added to persistence model when udating from java, do not need
+ //to edit the java in this case. TODO is there a better way to handle this??
+ if (((JavaJoinColumn) joinColumn).annotation(getMember().astRoot()) == null) {
+ this.synchJoinColumnAnnotationsAfterAdd(index + 1);
+ ((JavaJoinColumn) joinColumn).newAnnotation();
+ }
+ }
+
+ // bjv look at this
+ public void specifiedJoinColumnsAdded(int index, List<IJoinColumn> joinColumns) {
+ //JoinColumn was added to persistence model when udating from java, do not need
+ //to edit the java in this case. TODO is there a better way to handle this??
+ if (!joinColumns.isEmpty() && ((JavaJoinColumn) joinColumns.get(0)).annotation(getMember().astRoot()) == null) {
+ this.synchJoinColumnAnnotationsAfterAdd(index + joinColumns.size());
+ for (IJoinColumn joinColumn : joinColumns) {
+ ((JavaJoinColumn) joinColumn).newAnnotation();
+ }
+ }
+ }
+
+ public void specifiedJoinColumnRemoved(int index, IJoinColumn joinColumn) {
+ ((JavaJoinColumn) joinColumn).removeAnnotation();
+ this.synchJoinColumnAnnotationsAfterRemove(index);
+ }
+
+ public void specifiedJoinColumnsRemoved(int[] indexes, List<IJoinColumn> joinColumns) {
+ for (IJoinColumn joinColumn : joinColumns) {
+ ((JavaJoinColumn) joinColumn).removeAnnotation();
+ }
+ this.synchJoinColumnAnnotationsAfterRemove(indexes[0]);
+ }
+
+ public void specifiedJoinColumnsCleared(List<IJoinColumn> joinColumns) {
+ for (IJoinColumn joinColumn : joinColumns) {
+ ((JavaJoinColumn) joinColumn).removeAnnotation();
+ }
+ }
+
+ public void specifiedJoinColumnSet(int index, IJoinColumn oldJoinColumn, IJoinColumn newJoinColumn) {
+ ((JavaJoinColumn) newJoinColumn).newAnnotation();
+ }
+
+ public void specifiedJoinColumnMoved(int sourceIndex, int targetIndex, IJoinColumn joinColumn) {
+ List<IJoinColumn> joinColumns = this.getSpecifiedJoinColumns();
+ int begin = Math.min(sourceIndex, targetIndex);
+ int end = Math.max(sourceIndex, targetIndex);
+ for (int i = begin; i-- > end;) {
+ this.synch(joinColumns.get(i), i);
+ }
+ }
+
+ /**
+ * synchronize the annotations with the model join columns,
+ * starting at the end of the list to prevent overlap
+ */
+ private void synchJoinColumnAnnotationsAfterAdd(int index) {
+ List<IJoinColumn> joinColumns = this.getSpecifiedJoinColumns();
+ for (int i = joinColumns.size(); i-- > index;) {
+ this.synch(joinColumns.get(i), i);
+ }
+ }
+
+ /**
+ * synchronize the annotations with the model join columns,
+ * starting at the specified index to prevent overlap
+ */
+ private void synchJoinColumnAnnotationsAfterRemove(int index) {
+ List<IJoinColumn> joinColumns = this.getSpecifiedJoinColumns();
+ for (int i = index; i < joinColumns.size(); i++) {
+ this.synch(joinColumns.get(i), i);
+ }
+ }
+
+ private void synch(IJoinColumn joinColumn, int index) {
+ ((JavaJoinColumn) joinColumn).moveAnnotation(index);
+ }
+
+ static JavaAssociationOverride createAssociationOverride(Owner owner, Member member, int index) {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaAssociationOverride(owner, member, buildAnnotationAdapter(index));
+ }
+
+ private static IndexedDeclarationAnnotationAdapter buildAnnotationAdapter(int index) {
+ return new CombinationIndexedDeclarationAnnotationAdapter(SINGLE_DECLARATION_ANNOTATION_ADAPTER, MULTIPLE_DECLARATION_ANNOTATION_ADAPTER, index, JPA.ASSOCIATION_OVERRIDE);
+ }
+} // JavaAssociationOverride
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaAttributeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaAttributeMapping.java
new file mode 100644
index 0000000000..d7d8e6dc0a
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaAttributeMapping.java
@@ -0,0 +1,138 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMapping;
+import org.eclipse.jpt.core.internal.content.java.JavaEObject;
+import org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute;
+import org.eclipse.jpt.core.internal.jdtutility.AnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.MemberAnnotationAdapter;
+import org.eclipse.jpt.core.internal.mappings.INamedColumn;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+import org.eclipse.jpt.db.internal.Table;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Attribute Mapping</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaAttributeMapping()
+ * @model kind="class" abstract="true"
+ * @generated
+ */
+public abstract class JavaAttributeMapping extends JavaEObject
+ implements IJavaAttributeMapping
+{
+ private final Attribute attribute;
+
+ private final AnnotationAdapter annotationAdapter;
+
+ protected JavaAttributeMapping() {
+ throw new UnsupportedOperationException("Use JavaAttributeMapping(Attribute) instead");
+ }
+
+ protected JavaAttributeMapping(Attribute attribute) {
+ super();
+ this.attribute = attribute;
+ this.annotationAdapter = this.buildAnnotationAdapter(this.declarationAnnotationAdapter());
+ }
+
+ /**
+ * Return the declaration adapter for the mapping's annotation.
+ */
+ protected abstract DeclarationAnnotationAdapter declarationAnnotationAdapter();
+
+ /**
+ * Build and return an adapter for the mapping's annotation.
+ */
+ protected AnnotationAdapter buildAnnotationAdapter(DeclarationAnnotationAdapter daa) {
+ return new MemberAnnotationAdapter(this.attribute, daa);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_ATTRIBUTE_MAPPING;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated NOT
+ */
+ public void initialize() {
+ updateFromJava(getAttribute().astRoot());
+ }
+
+ public JavaPersistentAttribute getPersistentAttribute() {
+ return (JavaPersistentAttribute) eContainer();
+ }
+
+ public boolean isDefault() {
+ return getPersistentAttribute().isAttributeMappingDefault();
+ }
+
+ public ITypeMapping typeMapping() {
+ return this.getPersistentAttribute().typeMapping();
+ }
+
+ public Attribute getAttribute() {
+ return this.attribute;
+ }
+
+ public ITextRange getTextRange() {
+ ITextRange textRange = attribute.annotationTextRange(declarationAnnotationAdapter());
+ return (textRange == null) ? getPersistentAttribute().getTextRange() : textRange;
+ }
+
+ protected IType jdtType() {
+ return this.typeMapping().getPersistentType().findJdtType();
+ }
+
+ public void updateFromJava(CompilationUnit astRoot) {}
+
+ // TODO figure out how to use [stupid] EMF to implement the Column.Owner interface directly
+ protected INamedColumn.Owner buildColumnOwner() {
+ return new INamedColumn.Owner() {
+ public ITypeMapping getTypeMapping() {
+ return JavaAttributeMapping.this.typeMapping();
+ }
+
+ public ITextRange getTextRange() {
+ return JavaAttributeMapping.this.getTextRange();
+ }
+
+ public Table dbTable(String tableName) {
+ return getTypeMapping().dbTable(tableName);
+ }
+ };
+ }
+
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ //do nothing, override if necessary
+ }
+
+ public String primaryKeyColumnName() {
+ return null;
+ }
+} // JavaAttributeMapping \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaAttributeOverride.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaAttributeOverride.java
new file mode 100644
index 0000000000..7fa00f6e6c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaAttributeOverride.java
@@ -0,0 +1,238 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+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.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.jdtutility.CombinationIndexedDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.IndexedDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Member;
+import org.eclipse.jpt.core.internal.jdtutility.SimpleDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.mappings.IAttributeOverride;
+import org.eclipse.jpt.core.internal.mappings.IColumn;
+import org.eclipse.jpt.core.internal.mappings.IColumnMapping;
+import org.eclipse.jpt.core.internal.mappings.INamedColumn;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.db.internal.Table;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Attribute Override</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaAttributeOverride()
+ * @model kind="class"
+ * @generated
+ */
+public class JavaAttributeOverride extends JavaOverride
+ implements IAttributeOverride
+{
+ /**
+ * The cached value of the '{@link #getColumn() <em>Column</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getColumn()
+ * @generated
+ * @ordered
+ */
+ protected IColumn column;
+
+ public static final SimpleDeclarationAnnotationAdapter SINGLE_DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.ATTRIBUTE_OVERRIDE);
+
+ public static final SimpleDeclarationAnnotationAdapter MULTIPLE_DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.ATTRIBUTE_OVERRIDES);
+
+ protected JavaAttributeOverride() {
+ throw new UnsupportedOperationException("use JavaAttributeOverride(Owner, Member, IndexedDeclarationAnnotationAdapter)");
+ }
+
+ protected JavaAttributeOverride(Owner owner, Member member, IndexedDeclarationAnnotationAdapter daa) {
+ super(owner, member, daa);
+ this.column = JavaColumn.createAttributeOverrideColumn(this.buildColumnOwner(), member, daa);
+ ((InternalEObject) this.column).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - JpaJavaMappingsPackage.JAVA_ATTRIBUTE_OVERRIDE__COLUMN, null, null);
+ }
+
+ @Override
+ protected String nameElementName() {
+ return JPA.ATTRIBUTE_OVERRIDE__NAME;
+ }
+
+ // TODO figure out how to use [stupid] EMF to implement the Column.Owner interface directly
+ protected INamedColumn.Owner buildColumnOwner() {
+ return new INamedColumn.Owner() {
+ public ITypeMapping getTypeMapping() {
+ return JavaAttributeOverride.this.getOwner().getTypeMapping();
+ }
+
+ public ITextRange getTextRange() {
+ return JavaAttributeOverride.this.getTextRange();
+ }
+
+ public Table dbTable(String tableName) {
+ return getTypeMapping().dbTable(tableName);
+ }
+ };
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_ATTRIBUTE_OVERRIDE;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Column</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Column</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Column</em>' containment reference.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIAttributeOverride_Column()
+ * @model containment="true" required="true" changeable="false"
+ * @generated
+ */
+ public IColumn getColumn() {
+ return column;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetColumn(IColumn newColumn, NotificationChain msgs) {
+ IColumn oldColumn = column;
+ column = newColumn;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_ATTRIBUTE_OVERRIDE__COLUMN, oldColumn, newColumn);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_ATTRIBUTE_OVERRIDE__COLUMN :
+ return basicSetColumn(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 JpaJavaMappingsPackage.JAVA_ATTRIBUTE_OVERRIDE__COLUMN :
+ return getColumn();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_ATTRIBUTE_OVERRIDE__COLUMN :
+ return column != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IColumnMapping.class) {
+ switch (derivedFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IAttributeOverride.class) {
+ switch (derivedFeatureID) {
+ case JpaJavaMappingsPackage.JAVA_ATTRIBUTE_OVERRIDE__COLUMN :
+ return JpaCoreMappingsPackage.IATTRIBUTE_OVERRIDE__COLUMN;
+ 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 == IColumnMapping.class) {
+ switch (baseFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IAttributeOverride.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IATTRIBUTE_OVERRIDE__COLUMN :
+ return JpaJavaMappingsPackage.JAVA_ATTRIBUTE_OVERRIDE__COLUMN;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ public void updateFromJava(CompilationUnit astRoot) {
+ super.updateFromJava(astRoot);
+ ((JavaColumn) getColumn()).updateFromJava(astRoot);
+ }
+
+ // ********** static methods **********
+ static JavaAttributeOverride createAttributeOverride(Owner owner, Member member, int index) {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaAttributeOverride(owner, member, buildAnnotationAdapter(index));
+ }
+
+ private static IndexedDeclarationAnnotationAdapter buildAnnotationAdapter(int index) {
+ return new CombinationIndexedDeclarationAnnotationAdapter(SINGLE_DECLARATION_ANNOTATION_ADAPTER, MULTIPLE_DECLARATION_ANNOTATION_ADAPTER, index, JPA.ATTRIBUTE_OVERRIDE);
+ }
+} // JavaAttributeOverride
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaBasic.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaBasic.java
new file mode 100644
index 0000000000..4603d0bace
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaBasic.java
@@ -0,0 +1,913 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+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.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.ITypeHierarchy;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.Signature;
+import org.eclipse.jdt.core.WorkingCopyOwner;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.jdtutility.AnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.AnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.jdtutility.BooleanAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.BooleanStringExpressionConverter;
+import org.eclipse.jpt.core.internal.jdtutility.ConversionDeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.EnumDeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.JDTTools;
+import org.eclipse.jpt.core.internal.jdtutility.MemberAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.ShortCircuitAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.SimpleBooleanAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.SimpleDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType;
+import org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean;
+import org.eclipse.jpt.core.internal.mappings.EnumType;
+import org.eclipse.jpt.core.internal.mappings.IBasic;
+import org.eclipse.jpt.core.internal.mappings.IColumn;
+import org.eclipse.jpt.core.internal.mappings.IColumnMapping;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.core.internal.mappings.TemporalType;
+import org.eclipse.jpt.utility.internal.CollectionTools;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Basic</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaBasic()
+ * @model kind="class"
+ * @generated
+ */
+public class JavaBasic extends JavaAttributeMapping implements IBasic
+{
+ private final AnnotationElementAdapter optionalAdapter;
+
+ private final AnnotationElementAdapter fetchAdapter;
+
+ private final AnnotationAdapter temporalAnnotationAdapter;
+
+ private final AnnotationElementAdapter temporalValueAdapter;
+
+ private final AnnotationAdapter enumeratedAnnotationAdapter;
+
+ private final AnnotationElementAdapter enumeratedValueAdapter;
+
+ private final BooleanAnnotationAdapter lobAdapter;
+
+ public static final DeclarationAnnotationAdapter DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.BASIC);
+
+ private static final DeclarationAnnotationElementAdapter OPTIONAL_ADAPTER = buildOptionalAdapter();
+
+ private static final DeclarationAnnotationElementAdapter FETCH_ADAPTER = buildFetchAdapter();
+
+ public static final DeclarationAnnotationAdapter TEMPORAL_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.TEMPORAL);
+
+ private static final DeclarationAnnotationElementAdapter TEMPORAL_VALUE_ADAPTER = buildTemporalValueAdapter();
+
+ public static final DeclarationAnnotationAdapter ENUMERATED_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.ENUMERATED);
+
+ private static final DeclarationAnnotationElementAdapter ENUMERATED_VALUE_ADAPTER = buildEnumeratedValueAdapter();
+
+ public static final DeclarationAnnotationAdapter LOB_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.LOB);
+
+ /**
+ * The default value of the '{@link #getFetch() <em>Fetch</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFetch()
+ * @generated
+ * @ordered
+ */
+ protected static final DefaultEagerFetchType FETCH_EDEFAULT = DefaultEagerFetchType.DEFAULT;
+
+ /**
+ * The cached value of the '{@link #getFetch() <em>Fetch</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFetch()
+ * @generated
+ * @ordered
+ */
+ protected DefaultEagerFetchType fetch = FETCH_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getOptional() <em>Optional</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOptional()
+ * @generated
+ * @ordered
+ */
+ protected static final DefaultTrueBoolean OPTIONAL_EDEFAULT = DefaultTrueBoolean.DEFAULT;
+
+ /**
+ * The cached value of the '{@link #getOptional() <em>Optional</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOptional()
+ * @generated
+ * @ordered
+ */
+ protected DefaultTrueBoolean optional = OPTIONAL_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getColumn() <em>Column</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getColumn()
+ * @generated
+ * @ordered
+ */
+ protected IColumn column;
+
+ /**
+ * The default value of the '{@link #isLob() <em>Lob</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isLob()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean LOB_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isLob() <em>Lob</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isLob()
+ * @generated
+ * @ordered
+ */
+ protected boolean lob = LOB_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getTemporal() <em>Temporal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTemporal()
+ * @generated
+ * @ordered
+ */
+ protected static final TemporalType TEMPORAL_EDEFAULT = TemporalType.NULL;
+
+ /**
+ * The cached value of the '{@link #getTemporal() <em>Temporal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTemporal()
+ * @generated
+ * @ordered
+ */
+ protected TemporalType temporal = TEMPORAL_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getEnumerated() <em>Enumerated</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getEnumerated()
+ * @generated
+ * @ordered
+ */
+ protected static final EnumType ENUMERATED_EDEFAULT = EnumType.DEFAULT;
+
+ /**
+ * The cached value of the '{@link #getEnumerated() <em>Enumerated</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getEnumerated()
+ * @generated
+ * @ordered
+ */
+ protected EnumType enumerated = ENUMERATED_EDEFAULT;
+
+ protected JavaBasic() {
+ this(null);
+ }
+
+ protected JavaBasic(Attribute attribute) {
+ super(attribute);
+ this.column = JavaColumn.createColumnMappingColumn(buildColumnOwner(), getAttribute());
+ ((InternalEObject) this.column).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - JpaJavaMappingsPackage.JAVA_BASIC__COLUMN, null, null);
+ this.optionalAdapter = new ShortCircuitAnnotationElementAdapter(attribute, OPTIONAL_ADAPTER);
+ this.fetchAdapter = new ShortCircuitAnnotationElementAdapter(attribute, FETCH_ADAPTER);
+ this.lobAdapter = new SimpleBooleanAnnotationAdapter(new MemberAnnotationAdapter(attribute, LOB_ADAPTER));
+ this.temporalAnnotationAdapter = new MemberAnnotationAdapter(this.getAttribute(), TEMPORAL_ADAPTER);
+ this.temporalValueAdapter = new ShortCircuitAnnotationElementAdapter(attribute, TEMPORAL_VALUE_ADAPTER);
+ this.enumeratedAnnotationAdapter = new MemberAnnotationAdapter(this.getAttribute(), ENUMERATED_ADAPTER);
+ this.enumeratedValueAdapter = new ShortCircuitAnnotationElementAdapter(attribute, ENUMERATED_VALUE_ADAPTER);
+ }
+
+ @Override
+ protected DeclarationAnnotationAdapter declarationAnnotationAdapter() {
+ return DECLARATION_ANNOTATION_ADAPTER;
+ }
+
+ @Override
+ protected void notifyChanged(Notification notification) {
+ super.notifyChanged(notification);
+ switch (notification.getFeatureID(IBasic.class)) {
+ case JpaJavaMappingsPackage.JAVA_BASIC__FETCH :
+ this.fetchAdapter.setValue(((DefaultEagerFetchType) notification.getNewValue()).convertToJavaAnnotationValue());
+ break;
+ case JpaJavaMappingsPackage.JAVA_BASIC__OPTIONAL :
+ this.optionalAdapter.setValue(((DefaultTrueBoolean) notification.getNewValue()).convertToJavaAnnotationValue());
+ break;
+ case JpaJavaMappingsPackage.JAVA_BASIC__LOB :
+ this.lobAdapter.setValue(notification.getNewBooleanValue());
+ break;
+ case JpaJavaMappingsPackage.JAVA_BASIC__TEMPORAL :
+ TemporalType newTemporal = (TemporalType) notification.getNewValue();
+ if (newTemporal == TemporalType.NULL) {
+ this.temporalAnnotationAdapter.removeAnnotation();
+ }
+ else {
+ this.temporalValueAdapter.setValue(newTemporal.convertToJavaAnnotationValue());
+ }
+ break;
+ case JpaJavaMappingsPackage.JAVA_BASIC__ENUMERATED :
+ EnumType newEnumerated = (EnumType) notification.getNewValue();
+ if (newEnumerated == EnumType.DEFAULT) {
+ this.enumeratedAnnotationAdapter.removeAnnotation();
+ }
+ else {
+ this.enumeratedValueAdapter.setValue(newEnumerated.convertToJavaAnnotationValue());
+ }
+ break;
+ default :
+ break;
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_BASIC;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Column</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Column</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Column</em>' containment reference.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIBasic_Column()
+ * @model containment="true" required="true" changeable="false"
+ * @generated
+ */
+ public IColumn getColumn() {
+ return column;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetColumn(IColumn newColumn, NotificationChain msgs) {
+ IColumn oldColumn = column;
+ column = newColumn;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_BASIC__COLUMN, oldColumn, newColumn);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Fetch</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Fetch</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Fetch</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType
+ * @see #setFetch(DefaultEagerFetchType)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIBasic_Fetch()
+ * @model
+ * @generated
+ */
+ public DefaultEagerFetchType getFetch() {
+ return fetch;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaBasic#getFetch <em>Fetch</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Fetch</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType
+ * @see #getFetch()
+ * @generated
+ */
+ public void setFetch(DefaultEagerFetchType newFetch) {
+ DefaultEagerFetchType oldFetch = fetch;
+ fetch = newFetch == null ? FETCH_EDEFAULT : newFetch;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_BASIC__FETCH, oldFetch, fetch));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Optional</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Optional</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Optional</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean
+ * @see #setOptional(DefaultTrueBoolean)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIBasic_Optional()
+ * @model
+ * @generated
+ */
+ public DefaultTrueBoolean getOptional() {
+ return optional;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaBasic#getOptional <em>Optional</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Optional</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean
+ * @see #getOptional()
+ * @generated
+ */
+ public void setOptional(DefaultTrueBoolean newOptional) {
+ DefaultTrueBoolean oldOptional = optional;
+ optional = newOptional == null ? OPTIONAL_EDEFAULT : newOptional;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_BASIC__OPTIONAL, oldOptional, optional));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Lob</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Lob</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Lob</em>' attribute.
+ * @see #setLob(boolean)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIBasic_Lob()
+ * @model
+ * @generated
+ */
+ public boolean isLob() {
+ return lob;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaBasic#isLob <em>Lob</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Lob</em>' attribute.
+ * @see #isLob()
+ * @generated
+ */
+ public void setLob(boolean newLob) {
+ boolean oldLob = lob;
+ lob = newLob;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_BASIC__LOB, oldLob, lob));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Temporal</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.TemporalType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Temporal</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Temporal</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.TemporalType
+ * @see #setTemporal(TemporalType)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIBasic_Temporal()
+ * @model
+ * @generated
+ */
+ public TemporalType getTemporal() {
+ return temporal;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaBasic#getTemporal <em>Temporal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Temporal</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.TemporalType
+ * @see #getTemporal()
+ * @generated
+ */
+ public void setTemporal(TemporalType newTemporal) {
+ TemporalType oldTemporal = temporal;
+ temporal = newTemporal == null ? TEMPORAL_EDEFAULT : newTemporal;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_BASIC__TEMPORAL, oldTemporal, temporal));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Enumerated</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.EnumType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Enumerated</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Enumerated</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.EnumType
+ * @see #setEnumerated(EnumType)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIBasic_Enumerated()
+ * @model
+ * @generated
+ */
+ public EnumType getEnumerated() {
+ return enumerated;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaBasic#getEnumerated <em>Enumerated</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Enumerated</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.EnumType
+ * @see #getEnumerated()
+ * @generated
+ */
+ public void setEnumerated(EnumType newEnumerated) {
+ EnumType oldEnumerated = enumerated;
+ enumerated = newEnumerated == null ? ENUMERATED_EDEFAULT : newEnumerated;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_BASIC__ENUMERATED, oldEnumerated, enumerated));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_BASIC__COLUMN :
+ return basicSetColumn(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 JpaJavaMappingsPackage.JAVA_BASIC__FETCH :
+ return getFetch();
+ case JpaJavaMappingsPackage.JAVA_BASIC__OPTIONAL :
+ return getOptional();
+ case JpaJavaMappingsPackage.JAVA_BASIC__COLUMN :
+ return getColumn();
+ case JpaJavaMappingsPackage.JAVA_BASIC__LOB :
+ return isLob() ? Boolean.TRUE : Boolean.FALSE;
+ case JpaJavaMappingsPackage.JAVA_BASIC__TEMPORAL :
+ return getTemporal();
+ case JpaJavaMappingsPackage.JAVA_BASIC__ENUMERATED :
+ return getEnumerated();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_BASIC__FETCH :
+ setFetch((DefaultEagerFetchType) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_BASIC__OPTIONAL :
+ setOptional((DefaultTrueBoolean) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_BASIC__LOB :
+ setLob(((Boolean) newValue).booleanValue());
+ return;
+ case JpaJavaMappingsPackage.JAVA_BASIC__TEMPORAL :
+ setTemporal((TemporalType) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_BASIC__ENUMERATED :
+ setEnumerated((EnumType) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_BASIC__FETCH :
+ setFetch(FETCH_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.JAVA_BASIC__OPTIONAL :
+ setOptional(OPTIONAL_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.JAVA_BASIC__LOB :
+ setLob(LOB_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.JAVA_BASIC__TEMPORAL :
+ setTemporal(TEMPORAL_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.JAVA_BASIC__ENUMERATED :
+ setEnumerated(ENUMERATED_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_BASIC__FETCH :
+ return fetch != FETCH_EDEFAULT;
+ case JpaJavaMappingsPackage.JAVA_BASIC__OPTIONAL :
+ return optional != OPTIONAL_EDEFAULT;
+ case JpaJavaMappingsPackage.JAVA_BASIC__COLUMN :
+ return column != null;
+ case JpaJavaMappingsPackage.JAVA_BASIC__LOB :
+ return lob != LOB_EDEFAULT;
+ case JpaJavaMappingsPackage.JAVA_BASIC__TEMPORAL :
+ return temporal != TEMPORAL_EDEFAULT;
+ case JpaJavaMappingsPackage.JAVA_BASIC__ENUMERATED :
+ return enumerated != ENUMERATED_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IColumnMapping.class) {
+ switch (derivedFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IBasic.class) {
+ switch (derivedFeatureID) {
+ case JpaJavaMappingsPackage.JAVA_BASIC__FETCH :
+ return JpaCoreMappingsPackage.IBASIC__FETCH;
+ case JpaJavaMappingsPackage.JAVA_BASIC__OPTIONAL :
+ return JpaCoreMappingsPackage.IBASIC__OPTIONAL;
+ case JpaJavaMappingsPackage.JAVA_BASIC__COLUMN :
+ return JpaCoreMappingsPackage.IBASIC__COLUMN;
+ case JpaJavaMappingsPackage.JAVA_BASIC__LOB :
+ return JpaCoreMappingsPackage.IBASIC__LOB;
+ case JpaJavaMappingsPackage.JAVA_BASIC__TEMPORAL :
+ return JpaCoreMappingsPackage.IBASIC__TEMPORAL;
+ case JpaJavaMappingsPackage.JAVA_BASIC__ENUMERATED :
+ return JpaCoreMappingsPackage.IBASIC__ENUMERATED;
+ 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 == IColumnMapping.class) {
+ switch (baseFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IBasic.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IBASIC__FETCH :
+ return JpaJavaMappingsPackage.JAVA_BASIC__FETCH;
+ case JpaCoreMappingsPackage.IBASIC__OPTIONAL :
+ return JpaJavaMappingsPackage.JAVA_BASIC__OPTIONAL;
+ case JpaCoreMappingsPackage.IBASIC__COLUMN :
+ return JpaJavaMappingsPackage.JAVA_BASIC__COLUMN;
+ case JpaCoreMappingsPackage.IBASIC__LOB :
+ return JpaJavaMappingsPackage.JAVA_BASIC__LOB;
+ case JpaCoreMappingsPackage.IBASIC__TEMPORAL :
+ return JpaJavaMappingsPackage.JAVA_BASIC__TEMPORAL;
+ case JpaCoreMappingsPackage.IBASIC__ENUMERATED :
+ return JpaJavaMappingsPackage.JAVA_BASIC__ENUMERATED;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (fetch: ");
+ result.append(fetch);
+ result.append(", optional: ");
+ result.append(optional);
+ result.append(", lob: ");
+ result.append(lob);
+ result.append(", temporal: ");
+ result.append(temporal);
+ result.append(", enumerated: ");
+ result.append(enumerated);
+ result.append(')');
+ return result.toString();
+ }
+
+ public String getKey() {
+ return IMappingKeys.BASIC_ATTRIBUTE_MAPPING_KEY;
+ }
+
+ @Override
+ public void updateFromJava(CompilationUnit astRoot) {
+ super.updateFromJava(astRoot);
+ this.setOptional(DefaultTrueBoolean.fromJavaAnnotationValue(this.optionalAdapter.getValue(astRoot)));
+ this.setFetch(DefaultEagerFetchType.fromJavaAnnotationValue(this.fetchAdapter.getValue(astRoot)));
+ ((JavaColumn) this.column).updateFromJava(astRoot);
+ this.setLob(this.lobAdapter.getValue(astRoot));
+ this.updateTemporalFromJava(astRoot);
+ this.updateEnumeratedFromJava(astRoot);
+ }
+
+ /*
+ * The @Temporal annotation is a bit different than most JPA annotations.
+ * For some indecipherable reason it has no default value (e.g. TIMESTAMP).
+ * Also, it is *required* for any attribute declared with a type of
+ * java.util.Date or java.util.Calendar; otherwise, it is *prohibited*.
+ * As a result we allow a Basic mapping to have a null 'temporal',
+ * indicating that the annotation is completely missing, as opposed
+ * to the annotation being present but its value is invalid (e.g.
+ * @Temporal(FRIDAY)).
+ *
+ * TODO this comment is wrong now, revisit this with Brian at some point
+ */
+ private void updateTemporalFromJava(CompilationUnit astRoot) {
+ if (this.temporalAnnotationAdapter.getAnnotation(astRoot) == null) {
+ this.setTemporal(TemporalType.NULL);
+ }
+ else {
+ this.setTemporal(TemporalType.fromJavaAnnotationValue(this.temporalValueAdapter.getValue(astRoot)));
+ }
+ }
+
+ private void updateEnumeratedFromJava(CompilationUnit astRoot) {
+ if (this.enumeratedAnnotationAdapter.getAnnotation(astRoot) == null) {
+ this.setEnumerated(EnumType.DEFAULT);
+ }
+ else {
+ this.setEnumerated(EnumType.fromJavaAnnotationValue(this.enumeratedValueAdapter.getValue(astRoot)));
+ }
+ }
+
+ // ********** static methods **********
+ private static DeclarationAnnotationElementAdapter buildOptionalAdapter() {
+ return new ConversionDeclarationAnnotationElementAdapter(DECLARATION_ANNOTATION_ADAPTER, JPA.BASIC__OPTIONAL, false, BooleanStringExpressionConverter.instance());
+ }
+
+ private static DeclarationAnnotationElementAdapter buildFetchAdapter() {
+ return new EnumDeclarationAnnotationElementAdapter(DECLARATION_ANNOTATION_ADAPTER, JPA.BASIC__FETCH, false);
+ }
+
+ /**
+ * From the JPA spec, when the basic mapping applies:
+ * If the type of the attribute (field or property) is one of the following
+ * it must be mapped as @Basic:
+ * primitive types
+ * byte[]
+ * Byte[]
+ * char[]
+ * Character[]
+ * primitive wrappers
+ * java.lang.String
+ * java.math.BigInteger
+ * java.math.BigDecimal
+ * java.util.Date
+ * java.util.Calendar
+ * java.sql.Date
+ * java.sql.Time
+ * java.sql.Timestamp
+ * enums
+ * any other type that implements java.io.Serializable
+ */
+ public static boolean signatureIsBasic(String signature, IType scope) {
+ if (JDTTools.signatureIsPrimitive(signature)) {
+ return true;
+ }
+ int arrayCount = Signature.getArrayCount(signature);
+ if (arrayCount > 1) {
+ return false; // multi-dimensional arrays are not supported
+ }
+ signature = Signature.getElementType(signature);
+ String typeName = JDTTools.resolveSignature(signature, scope);
+ if (typeName == null) {
+ return false; // unable to resolve the type
+ }
+ if (arrayCount == 1) {
+ return elementTypeIsValid(typeName);
+ }
+ if (typeIsPrimitiveWrapper(typeName)) {
+ return true;
+ }
+ if (typeIsOtherSupportedType(typeName)) {
+ return true;
+ }
+ IType type = findType(scope.getCompilationUnit().getJavaProject(), typeName);
+ if (type == null) {
+ return false; // type not found
+ }
+ if (typeIsEnum(type)) {
+ return true;
+ }
+ if (typeImplementsSerializable(type)) {
+ return true;
+ }
+ return false;
+ }
+
+ private static IType findType(IJavaProject javaProject, String typeName) {
+ try {
+ return javaProject.findType(typeName);
+ }
+ catch (JavaModelException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ /**
+ * Return whether the specified type is a valid element type for
+ * a one-dimensional array:
+ * byte
+ * char
+ * java.lang.Byte
+ * java.lang.Character
+ */
+ private static boolean elementTypeIsValid(String elementTypeName) {
+ return CollectionTools.contains(VALID_ELEMENT_TYPE_NAMES, elementTypeName);
+ }
+
+ private static final String[] VALID_ELEMENT_TYPE_NAMES = {
+ byte.class.getName(),
+ char.class.getName(),
+ java.lang.Byte.class.getName(),
+ java.lang.Character.class.getName()
+ };
+
+ /**
+ * Return whether the specified type is a primitive wrapper.
+ */
+ private static boolean typeIsPrimitiveWrapper(String typeName) {
+ return CollectionTools.contains(PRIMITIVE_WRAPPER_TYPE_NAMES, typeName);
+ }
+
+ private static final String[] PRIMITIVE_WRAPPER_TYPE_NAMES = {
+ java.lang.Byte.class.getName(),
+ java.lang.Character.class.getName(),
+ java.lang.Double.class.getName(),
+ java.lang.Float.class.getName(),
+ java.lang.Integer.class.getName(),
+ java.lang.Long.class.getName(),
+ java.lang.Short.class.getName(),
+ java.lang.Boolean.class.getName(),
+ };
+
+ /**
+ * Return whether the specified type is among the various other types
+ * that default to a Basic mapping.
+ */
+ private static boolean typeIsOtherSupportedType(String typeName) {
+ return CollectionTools.contains(OTHER_SUPPORTED_TYPE_NAMES, typeName);
+ }
+
+ private static final String[] OTHER_SUPPORTED_TYPE_NAMES = {
+ java.lang.String.class.getName(),
+ java.math.BigInteger.class.getName(),
+ java.math.BigDecimal.class.getName(),
+ java.util.Date.class.getName(),
+ java.util.Calendar.class.getName(),
+ java.sql.Date.class.getName(),
+ java.sql.Time.class.getName(),
+ java.sql.Timestamp.class.getName(),
+ };
+
+ /**
+ * Return whether the specified type is an enum.
+ */
+ private static boolean typeIsEnum(IType type) {
+ try {
+ return type.isEnum();
+ }
+ catch (JavaModelException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ /**
+ * Return whether the specified type implements java.io.Serializable.
+ */
+ // TODO should we be using IType.getSuperInterfaceTypeSignatures() instead?
+ // would this be less of a performance hog??
+ private static boolean typeImplementsSerializable(IType type) {
+ ITypeHierarchy hierarchy = typeHierarchy(type);
+ IType[] interfaces = hierarchy.getAllSuperInterfaces(type);
+ for (int i = interfaces.length; i-- > 0;) {
+ if (interfaces[i].getFullyQualifiedName().equals(SERIALIZABLE_TYPE_NAME)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private static final String SERIALIZABLE_TYPE_NAME = java.io.Serializable.class.getName();
+
+ private static ITypeHierarchy typeHierarchy(IType type) {
+ // TODO hmm... what to do about the working copy, probably shouldn't pass in null;
+ // also, this looks like a performance hog, other ways to do this?
+ try {
+ return type.newSupertypeHierarchy((WorkingCopyOwner) null, null);
+ }
+ catch (JavaModelException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ // ********** static methods **********
+ private static DeclarationAnnotationElementAdapter buildTemporalValueAdapter() {
+ return new EnumDeclarationAnnotationElementAdapter(TEMPORAL_ADAPTER, JPA.TEMPORAL__VALUE, false);
+ }
+
+ private static DeclarationAnnotationElementAdapter buildEnumeratedValueAdapter() {
+ return new EnumDeclarationAnnotationElementAdapter(ENUMERATED_ADAPTER, JPA.ENUMERATED__VALUE, false);
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaBasicProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaBasicProvider.java
new file mode 100644
index 0000000000..24cefa0a12
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaBasicProvider.java
@@ -0,0 +1,228 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.ITypeHierarchy;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.Signature;
+import org.eclipse.jdt.core.WorkingCopyOwner;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMapping;
+import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMappingProvider;
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.JDTTools;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+import org.eclipse.jpt.utility.internal.CollectionTools;
+
+/**
+ *
+ */
+public class JavaBasicProvider
+ implements IJavaAttributeMappingProvider
+{
+
+ // singleton
+ private static final JavaBasicProvider INSTANCE = new JavaBasicProvider();
+
+ /**
+ * Return the singleton.
+ */
+ public static IJavaAttributeMappingProvider instance() {
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private JavaBasicProvider() {
+ super();
+ }
+
+ public String key() {
+ return IMappingKeys.BASIC_ATTRIBUTE_MAPPING_KEY;
+ }
+
+ public boolean defaultApplies(Attribute attribute, DefaultsContext defaultsContext) {
+ return signatureIsBasic(attribute.typeSignature(), attribute.getDeclaringType().jdtType());
+ }
+
+ public IJavaAttributeMapping buildMapping(Attribute attribute) {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaBasic(attribute);
+ }
+
+ public DeclarationAnnotationAdapter declarationAnnotationAdapter() {
+ return JavaBasic.DECLARATION_ANNOTATION_ADAPTER;
+ }
+
+ // ********** static methods **********
+
+ /**
+ * From the JPA spec, when the basic mapping applies:
+ * If the type of the attribute (field or property) is one of the following
+ * it must be mapped as @Basic:
+ * primitive types
+ * byte[]
+ * Byte[]
+ * char[]
+ * Character[]
+ * primitive wrappers
+ * java.lang.String
+ * java.math.BigInteger
+ * java.math.BigDecimal
+ * java.util.Date
+ * java.util.Calendar
+ * java.sql.Date
+ * java.sql.Time
+ * java.sql.Timestamp
+ * enums
+ * any other type that implements java.io.Serializable
+ */
+ public static boolean signatureIsBasic(String signature, IType scope) {
+ if (JDTTools.signatureIsPrimitive(signature)) {
+ return true;
+ }
+ int arrayCount = Signature.getArrayCount(signature);
+ if (arrayCount > 1) {
+ return false; // multi-dimensional arrays are not supported
+ }
+ signature = Signature.getElementType(signature);
+ String typeName = JDTTools.resolveSignature(signature, scope);
+ if (typeName == null) {
+ return false; // unable to resolve the type
+ }
+ if (arrayCount == 1) {
+ return elementTypeIsValid(typeName);
+ }
+ if (typeIsPrimitiveWrapper(typeName)) {
+ return true;
+ }
+ if (typeIsOtherSupportedType(typeName)) {
+ return true;
+ }
+ IType type = findType(scope.getCompilationUnit().getJavaProject(), typeName);
+ if (type == null) {
+ return false; // type not found
+ }
+ if (typeIsEnum(type)) {
+ return true;
+ }
+ if (typeImplementsSerializable(type)) {
+ return true;
+ }
+ return false;
+ }
+
+ private static IType findType(IJavaProject javaProject, String typeName) {
+ try {
+ return javaProject.findType(typeName);
+ } catch (JavaModelException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ /**
+ * Return whether the specified type is a valid element type for
+ * a one-dimensional array:
+ * byte
+ * char
+ * java.lang.Byte
+ * java.lang.Character
+ */
+ private static boolean elementTypeIsValid(String elementTypeName) {
+ return CollectionTools.contains(VALID_ELEMENT_TYPE_NAMES, elementTypeName);
+ }
+
+ private static final String[] VALID_ELEMENT_TYPE_NAMES = {
+ byte.class.getName(),
+ char.class.getName(),
+ java.lang.Byte.class.getName(),
+ java.lang.Character.class.getName()
+ };
+
+ /**
+ * Return whether the specified type is a primitive wrapper.
+ */
+ private static boolean typeIsPrimitiveWrapper(String typeName) {
+ return CollectionTools.contains(PRIMITIVE_WRAPPER_TYPE_NAMES, typeName);
+ }
+
+ private static final String[] PRIMITIVE_WRAPPER_TYPE_NAMES = {
+ java.lang.Byte.class.getName(),
+ java.lang.Character.class.getName(),
+ java.lang.Double.class.getName(),
+ java.lang.Float.class.getName(),
+ java.lang.Integer.class.getName(),
+ java.lang.Long.class.getName(),
+ java.lang.Short.class.getName(),
+ java.lang.Boolean.class.getName(),
+ };
+
+ /**
+ * Return whether the specified type is among the various other types
+ * that default to a Basic mapping.
+ */
+ private static boolean typeIsOtherSupportedType(String typeName) {
+ return CollectionTools.contains(OTHER_SUPPORTED_TYPE_NAMES, typeName);
+ }
+
+ private static final String[] OTHER_SUPPORTED_TYPE_NAMES = {
+ java.lang.String.class.getName(),
+ java.math.BigInteger.class.getName(),
+ java.math.BigDecimal.class.getName(),
+ java.util.Date.class.getName(),
+ java.util.Calendar.class.getName(),
+ java.sql.Date.class.getName(),
+ java.sql.Time.class.getName(),
+ java.sql.Timestamp.class.getName(),
+ };
+
+ /**
+ * Return whether the specified type is an enum.
+ */
+ private static boolean typeIsEnum(IType type) {
+ try {
+ return type.isEnum();
+ } catch (JavaModelException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ /**
+ * Return whether the specified type implements java.io.Serializable.
+ */
+ // TODO should we be using IType.getSuperInterfaceTypeSignatures() instead?
+ // would this be less of a performance hog??
+ private static boolean typeImplementsSerializable(IType type) {
+ ITypeHierarchy hierarchy = typeHierarchy(type);
+ IType[] interfaces = hierarchy.getAllSuperInterfaces(type);
+ for (int i = interfaces.length; i-- > 0; ) {
+ if (interfaces[i].getFullyQualifiedName().equals(SERIALIZABLE_TYPE_NAME)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private static final String SERIALIZABLE_TYPE_NAME = java.io.Serializable.class.getName();
+
+ private static ITypeHierarchy typeHierarchy(IType type) {
+ // TODO hmm... what to do about the working copy, probably shouldn't pass in null;
+ // also, this looks like a performance hog, other ways to do this?
+ try {
+ return type.newSupertypeHierarchy((WorkingCopyOwner) null, null);
+ } catch (JavaModelException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaColumn.java
new file mode 100644
index 0000000000..9833789b7c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaColumn.java
@@ -0,0 +1,448 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Member;
+import org.eclipse.jpt.core.internal.jdtutility.NestedDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.SimpleDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.mappings.IColumn;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.core.internal.platform.BaseJpaPlatform;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Column</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaColumn()
+ * @model kind="class"
+ * @generated
+ */
+public class JavaColumn extends AbstractJavaColumn implements IColumn
+{
+ /**
+ * The default value of the '{@link #getLength() <em>Length</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLength()
+ * @generated
+ * @ordered
+ */
+ protected static final int LENGTH_EDEFAULT = 255;
+
+ /**
+ * The cached value of the '{@link #getLength() <em>Length</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLength()
+ * @generated
+ * @ordered
+ */
+ protected int length = LENGTH_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getPrecision() <em>Precision</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPrecision()
+ * @generated
+ * @ordered
+ */
+ protected static final int PRECISION_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getPrecision() <em>Precision</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPrecision()
+ * @generated
+ * @ordered
+ */
+ protected int precision = PRECISION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getScale() <em>Scale</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getScale()
+ * @generated
+ * @ordered
+ */
+ protected static final int SCALE_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getScale() <em>Scale</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getScale()
+ * @generated
+ * @ordered
+ */
+ protected int scale = SCALE_EDEFAULT;
+
+ private final IntAnnotationElementAdapter lengthAdapter;
+
+ private final IntAnnotationElementAdapter precisionAdapter;
+
+ private final IntAnnotationElementAdapter scaleAdapter;
+
+ // this adapter is only used by a Column annotation associated with a mapping annotation (e.g. Basic)
+ public static final SimpleDeclarationAnnotationAdapter MAPPING_DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.COLUMN);
+
+ protected JavaColumn() {
+ super();
+ throw new UnsupportedOperationException("Use JavaColumn(Owner, Member, DeclarationAnnotationAdapter) instead");
+ }
+
+ protected JavaColumn(Owner owner, Member member, DeclarationAnnotationAdapter daa) {
+ super(owner, member, daa);
+ this.lengthAdapter = this.buildShortCircuitIntElementAdapter(JPA.COLUMN__LENGTH);
+ this.precisionAdapter = this.buildShortCircuitIntElementAdapter(JPA.COLUMN__PRECISION);
+ this.scaleAdapter = this.buildShortCircuitIntElementAdapter(JPA.COLUMN__SCALE);
+ }
+
+ @Override
+ protected String nameElementName() {
+ return JPA.COLUMN__NAME;
+ }
+
+ @Override
+ protected String columnDefinitionElementName() {
+ return JPA.COLUMN__COLUMN_DEFINITION;
+ }
+
+ @Override
+ protected String tableElementName() {
+ return JPA.COLUMN__TABLE;
+ }
+
+ @Override
+ protected String uniqueElementName() {
+ return JPA.COLUMN__UNIQUE;
+ }
+
+ @Override
+ protected String nullableElementName() {
+ return JPA.COLUMN__NULLABLE;
+ }
+
+ @Override
+ protected String insertableElementName() {
+ return JPA.COLUMN__INSERTABLE;
+ }
+
+ @Override
+ protected String updatableElementName() {
+ return JPA.COLUMN__UPDATABLE;
+ }
+
+ @Override
+ protected void notifyChanged(Notification notification) {
+ super.notifyChanged(notification);
+ switch (notification.getFeatureID(IColumn.class)) {
+ case JpaJavaMappingsPackage.JAVA_COLUMN__LENGTH :
+ this.lengthAdapter.setValue(notification.getNewIntValue());
+ break;
+ case JpaJavaMappingsPackage.JAVA_COLUMN__PRECISION :
+ this.precisionAdapter.setValue(notification.getNewIntValue());
+ break;
+ case JpaJavaMappingsPackage.JAVA_COLUMN__SCALE :
+ this.scaleAdapter.setValue(notification.getNewIntValue());
+ break;
+ default :
+ break;
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_COLUMN;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Length</b></em>' attribute.
+ * The default value is <code>"255"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Length</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Length</em>' attribute.
+ * @see #setLength(int)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIColumn_Length()
+ * @model default="255"
+ * @generated
+ */
+ public int getLength() {
+ return length;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaColumn#getLength <em>Length</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Length</em>' attribute.
+ * @see #getLength()
+ * @generated
+ */
+ public void setLength(int newLength) {
+ int oldLength = length;
+ length = newLength;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_COLUMN__LENGTH, oldLength, length));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Precision</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Precision</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Precision</em>' attribute.
+ * @see #setPrecision(int)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIColumn_Precision()
+ * @model
+ * @generated
+ */
+ public int getPrecision() {
+ return precision;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaColumn#getPrecision <em>Precision</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Precision</em>' attribute.
+ * @see #getPrecision()
+ * @generated
+ */
+ public void setPrecision(int newPrecision) {
+ int oldPrecision = precision;
+ precision = newPrecision;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_COLUMN__PRECISION, oldPrecision, precision));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Scale</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Scale</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Scale</em>' attribute.
+ * @see #setScale(int)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIColumn_Scale()
+ * @model
+ * @generated
+ */
+ public int getScale() {
+ return scale;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaColumn#getScale <em>Scale</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Scale</em>' attribute.
+ * @see #getScale()
+ * @generated
+ */
+ public void setScale(int newScale) {
+ int oldScale = scale;
+ scale = newScale;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_COLUMN__SCALE, oldScale, scale));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_COLUMN__LENGTH :
+ return new Integer(getLength());
+ case JpaJavaMappingsPackage.JAVA_COLUMN__PRECISION :
+ return new Integer(getPrecision());
+ case JpaJavaMappingsPackage.JAVA_COLUMN__SCALE :
+ return new Integer(getScale());
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_COLUMN__LENGTH :
+ setLength(((Integer) newValue).intValue());
+ return;
+ case JpaJavaMappingsPackage.JAVA_COLUMN__PRECISION :
+ setPrecision(((Integer) newValue).intValue());
+ return;
+ case JpaJavaMappingsPackage.JAVA_COLUMN__SCALE :
+ setScale(((Integer) newValue).intValue());
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_COLUMN__LENGTH :
+ setLength(LENGTH_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.JAVA_COLUMN__PRECISION :
+ setPrecision(PRECISION_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.JAVA_COLUMN__SCALE :
+ setScale(SCALE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_COLUMN__LENGTH :
+ return length != LENGTH_EDEFAULT;
+ case JpaJavaMappingsPackage.JAVA_COLUMN__PRECISION :
+ return precision != PRECISION_EDEFAULT;
+ case JpaJavaMappingsPackage.JAVA_COLUMN__SCALE :
+ return scale != SCALE_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IColumn.class) {
+ switch (derivedFeatureID) {
+ case JpaJavaMappingsPackage.JAVA_COLUMN__LENGTH :
+ return JpaCoreMappingsPackage.ICOLUMN__LENGTH;
+ case JpaJavaMappingsPackage.JAVA_COLUMN__PRECISION :
+ return JpaCoreMappingsPackage.ICOLUMN__PRECISION;
+ case JpaJavaMappingsPackage.JAVA_COLUMN__SCALE :
+ return JpaCoreMappingsPackage.ICOLUMN__SCALE;
+ 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 == IColumn.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.ICOLUMN__LENGTH :
+ return JpaJavaMappingsPackage.JAVA_COLUMN__LENGTH;
+ case JpaCoreMappingsPackage.ICOLUMN__PRECISION :
+ return JpaJavaMappingsPackage.JAVA_COLUMN__PRECISION;
+ case JpaCoreMappingsPackage.ICOLUMN__SCALE :
+ return JpaJavaMappingsPackage.JAVA_COLUMN__SCALE;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (length: ");
+ result.append(length);
+ result.append(", precision: ");
+ result.append(precision);
+ result.append(", scale: ");
+ result.append(scale);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public void updateFromJava(CompilationUnit astRoot) {
+ super.updateFromJava(astRoot);
+ this.setLength(this.lengthAdapter.getValue(astRoot));
+ this.setPrecision(this.precisionAdapter.getValue(astRoot));
+ this.setScale(this.scaleAdapter.getValue(astRoot));
+ }
+
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ this.setDefaultTable((String) defaultsContext.getDefault(BaseJpaPlatform.DEFAULT_COLUMN_TABLE_KEY));
+ this.setDefaultName((String) defaultsContext.getDefault(BaseJpaPlatform.DEFAULT_COLUMN_NAME_KEY));
+ }
+
+ // ********** static methods **********
+ static JavaColumn createColumnMappingColumn(Owner owner, Member member) {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaColumn(owner, member, MAPPING_DECLARATION_ANNOTATION_ADAPTER);
+ }
+
+ static JavaColumn createAttributeOverrideColumn(Owner owner, Member member, DeclarationAnnotationAdapter attributeOverrideAnnotationAdapter) {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaColumn(owner, member, buildAttributeOverrideAnnotationAdapter(attributeOverrideAnnotationAdapter));
+ }
+
+ private static DeclarationAnnotationAdapter buildAttributeOverrideAnnotationAdapter(DeclarationAnnotationAdapter attributeOverrideAnnotationAdapter) {
+ return new NestedDeclarationAnnotationAdapter(attributeOverrideAnnotationAdapter, JPA.ATTRIBUTE_OVERRIDE__COLUMN, JPA.COLUMN);
+ }
+} // JavaColumn
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaDiscriminatorColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaDiscriminatorColumn.java
new file mode 100644
index 0000000000..e59295ef9d
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaDiscriminatorColumn.java
@@ -0,0 +1,726 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.content.java.JavaEObject;
+import org.eclipse.jpt.core.internal.jdtutility.AnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.ConversionDeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.EnumDeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.ShortCircuitAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.SimpleDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Type;
+import org.eclipse.jpt.core.internal.mappings.DiscriminatorType;
+import org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn;
+import org.eclipse.jpt.core.internal.mappings.IEntity;
+import org.eclipse.jpt.core.internal.mappings.INamedColumn;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.db.internal.Table;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Discriminator Column</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaDiscriminatorColumn()
+ * @model kind="class"
+ * @generated
+ */
+public class JavaDiscriminatorColumn extends JavaEObject
+ implements IDiscriminatorColumn
+{
+ private Type type;
+
+ private AnnotationElementAdapter discriminatorTypeAdapter;
+
+ private AnnotationElementAdapter nameAdapter;
+
+ private IntAnnotationElementAdapter lengthAdapter;
+
+ private AnnotationElementAdapter columnDefinitionAdapter;
+
+ private static final DeclarationAnnotationAdapter ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.DISCRIMINATOR_COLUMN);
+
+ private static final DeclarationAnnotationElementAdapter DISCRIMINATOR_TYPE_ADAPTER = buildDiscriminatorTypeAdapter();
+
+ private static final DeclarationAnnotationElementAdapter NAME_ADAPTER = buildAnnotationElementAdapter(JPA.DISCRIMINATOR_COLUMN__NAME);
+
+ private static final DeclarationAnnotationElementAdapter LENGTH_ADAPTER = buildAnnotationElementAdapter(JPA.DISCRIMINATOR_COLUMN__LENGTH);
+
+ private static final DeclarationAnnotationElementAdapter COLUMN_DEFINITION_ADAPTER = buildAnnotationElementAdapter(JPA.DISCRIMINATOR_COLUMN__COLUMN_DEFINITION);
+
+ /**
+ * The default value of the '{@link #getDefaultName() <em>Default Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultName()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultName() <em>Default Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultName()
+ * @generated
+ * @ordered
+ */
+ protected String defaultName = DEFAULT_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getSpecifiedName() <em>Specified Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedName()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedName() <em>Specified Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedName()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedName = SPECIFIED_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getDiscriminatorType() <em>Discriminator Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDiscriminatorType()
+ * @generated
+ * @ordered
+ */
+ protected static final DiscriminatorType DISCRIMINATOR_TYPE_EDEFAULT = DiscriminatorType.DEFAULT;
+
+ /**
+ * The cached value of the '{@link #getDiscriminatorType() <em>Discriminator Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDiscriminatorType()
+ * @generated
+ * @ordered
+ */
+ protected DiscriminatorType discriminatorType = DISCRIMINATOR_TYPE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getColumnDefinition() <em>Column Definition</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getColumnDefinition()
+ * @generated
+ * @ordered
+ */
+ protected static final String COLUMN_DEFINITION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getColumnDefinition() <em>Column Definition</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getColumnDefinition()
+ * @generated
+ * @ordered
+ */
+ protected String columnDefinition = COLUMN_DEFINITION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultLength() <em>Default Length</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultLength()
+ * @generated
+ * @ordered
+ */
+ protected static final int DEFAULT_LENGTH_EDEFAULT = 31;
+
+ /**
+ * The cached value of the '{@link #getDefaultLength() <em>Default Length</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultLength()
+ * @generated
+ * @ordered
+ */
+ protected int defaultLength = DEFAULT_LENGTH_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getSpecifiedLength() <em>Specified Length</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedLength()
+ * @generated
+ * @ordered
+ */
+ protected static final int SPECIFIED_LENGTH_EDEFAULT = -1;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedLength() <em>Specified Length</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedLength()
+ * @generated
+ * @ordered
+ */
+ protected int specifiedLength = SPECIFIED_LENGTH_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getLength() <em>Length</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLength()
+ * @generated
+ * @ordered
+ */
+ protected static final int LENGTH_EDEFAULT = 0;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected JavaDiscriminatorColumn() {
+ throw new UnsupportedOperationException();
+ }
+
+ protected JavaDiscriminatorColumn(Type type) {
+ super();
+ this.type = type;
+ this.discriminatorTypeAdapter = new ShortCircuitAnnotationElementAdapter(this.type, DISCRIMINATOR_TYPE_ADAPTER);
+ this.nameAdapter = new ShortCircuitAnnotationElementAdapter(this.type, NAME_ADAPTER);
+ this.lengthAdapter = new IntAnnotationElementAdapter(new ShortCircuitAnnotationElementAdapter(this.type, LENGTH_ADAPTER));
+ this.columnDefinitionAdapter = new ShortCircuitAnnotationElementAdapter(this.type, COLUMN_DEFINITION_ADAPTER);
+ }
+
+ @Override
+ protected void notifyChanged(Notification notification) {
+ super.notifyChanged(notification);
+ switch (notification.getFeatureID(INamedColumn.class)) {
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__SPECIFIED_NAME :
+ this.nameAdapter.setValue(notification.getNewValue());
+ break;
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE :
+ this.discriminatorTypeAdapter.setValue(((DiscriminatorType) notification.getNewValue()).convertToJavaAnnotationValue());
+ break;
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__COLUMN_DEFINITION :
+ this.columnDefinitionAdapter.setValue(notification.getNewValue());
+ break;
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__SPECIFIED_LENGTH :
+ this.lengthAdapter.setValue(notification.getNewIntValue());
+ break;
+ default :
+ break;
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_DISCRIMINATOR_COLUMN;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Name</em>' attribute.
+ * @see #setDefaultName(String)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIDiscriminatorColumn_DefaultName()
+ * @model
+ * @generated
+ */
+ public String getDefaultName() {
+ return defaultName;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaDiscriminatorColumn#getDefaultName <em>Default Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Default Name</em>' attribute.
+ * @see #getDefaultName()
+ * @generated
+ */
+ public void setDefaultName(String newDefaultName) {
+ String oldDefaultName = defaultName;
+ defaultName = newDefaultName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__DEFAULT_NAME, oldDefaultName, defaultName));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Name</em>' attribute.
+ * @see #setSpecifiedName(String)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIDiscriminatorColumn_SpecifiedName()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedName() {
+ return specifiedName;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaDiscriminatorColumn#getSpecifiedName <em>Specified Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Name</em>' attribute.
+ * @see #getSpecifiedName()
+ * @generated
+ */
+ public void setSpecifiedName(String newSpecifiedName) {
+ String oldSpecifiedName = specifiedName;
+ specifiedName = newSpecifiedName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__SPECIFIED_NAME, oldSpecifiedName, specifiedName));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIDiscriminatorColumn_Name()
+ * @model transient="true" changeable="false" volatile="true" derived="true"
+ * @generated NOT
+ */
+ public String getName() {
+ return (this.getSpecifiedName() == null) ? getDefaultName() : this.getSpecifiedName();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Discriminator Type</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DiscriminatorType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Discriminator 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>Discriminator Type</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DiscriminatorType
+ * @see #setDiscriminatorType(DiscriminatorType)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIDiscriminatorColumn_DiscriminatorType()
+ * @model
+ * @generated
+ */
+ public DiscriminatorType getDiscriminatorType() {
+ return discriminatorType;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaDiscriminatorColumn#getDiscriminatorType <em>Discriminator Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Discriminator Type</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DiscriminatorType
+ * @see #getDiscriminatorType()
+ * @generated
+ */
+ public void setDiscriminatorType(DiscriminatorType newDiscriminatorType) {
+ DiscriminatorType oldDiscriminatorType = discriminatorType;
+ discriminatorType = newDiscriminatorType == null ? DISCRIMINATOR_TYPE_EDEFAULT : newDiscriminatorType;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE, oldDiscriminatorType, discriminatorType));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Column Definition</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Column Definition</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Column Definition</em>' attribute.
+ * @see #setColumnDefinition(String)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIDiscriminatorColumn_ColumnDefinition()
+ * @model
+ * @generated
+ */
+ public String getColumnDefinition() {
+ return columnDefinition;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaDiscriminatorColumn#getColumnDefinition <em>Column Definition</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Column Definition</em>' attribute.
+ * @see #getColumnDefinition()
+ * @generated
+ */
+ public void setColumnDefinition(String newColumnDefinition) {
+ String oldColumnDefinition = columnDefinition;
+ columnDefinition = newColumnDefinition;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__COLUMN_DEFINITION, oldColumnDefinition, columnDefinition));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Length</b></em>' attribute.
+ * The default value is <code>"31"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Length</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Length</em>' attribute.
+ * @see #setDefaultLength(int)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIDiscriminatorColumn_DefaultLength()
+ * @model default="31"
+ * @generated
+ */
+ public int getDefaultLength() {
+ return defaultLength;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaDiscriminatorColumn#getDefaultLength <em>Default Length</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Default Length</em>' attribute.
+ * @see #getDefaultLength()
+ * @generated
+ */
+ public void setDefaultLength(int newDefaultLength) {
+ int oldDefaultLength = defaultLength;
+ defaultLength = newDefaultLength;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__DEFAULT_LENGTH, oldDefaultLength, defaultLength));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Length</b></em>' attribute.
+ * The default value is <code>"-1"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Length</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Length</em>' attribute.
+ * @see #setSpecifiedLength(int)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIDiscriminatorColumn_SpecifiedLength()
+ * @model default="-1"
+ * @generated
+ */
+ public int getSpecifiedLength() {
+ return specifiedLength;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaDiscriminatorColumn#getSpecifiedLength <em>Specified Length</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Length</em>' attribute.
+ * @see #getSpecifiedLength()
+ * @generated
+ */
+ public void setSpecifiedLength(int newSpecifiedLength) {
+ int oldSpecifiedLength = specifiedLength;
+ specifiedLength = newSpecifiedLength;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__SPECIFIED_LENGTH, oldSpecifiedLength, specifiedLength));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Length</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Length</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Length</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIDiscriminatorColumn_Length()
+ * @model transient="true" changeable="false" volatile="true" derived="true"
+ * @generated NOT
+ */
+ public int getLength() {
+ return (this.getSpecifiedLength() == -1) ? this.getDefaultLength() : this.getSpecifiedLength();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__DEFAULT_NAME :
+ return getDefaultName();
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__SPECIFIED_NAME :
+ return getSpecifiedName();
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__NAME :
+ return getName();
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE :
+ return getDiscriminatorType();
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__COLUMN_DEFINITION :
+ return getColumnDefinition();
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__DEFAULT_LENGTH :
+ return new Integer(getDefaultLength());
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__SPECIFIED_LENGTH :
+ return new Integer(getSpecifiedLength());
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__LENGTH :
+ return new Integer(getLength());
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__DEFAULT_NAME :
+ setDefaultName((String) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__SPECIFIED_NAME :
+ setSpecifiedName((String) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE :
+ setDiscriminatorType((DiscriminatorType) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__COLUMN_DEFINITION :
+ setColumnDefinition((String) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__DEFAULT_LENGTH :
+ setDefaultLength(((Integer) newValue).intValue());
+ return;
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__SPECIFIED_LENGTH :
+ setSpecifiedLength(((Integer) newValue).intValue());
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__DEFAULT_NAME :
+ setDefaultName(DEFAULT_NAME_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__SPECIFIED_NAME :
+ setSpecifiedName(SPECIFIED_NAME_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE :
+ setDiscriminatorType(DISCRIMINATOR_TYPE_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__COLUMN_DEFINITION :
+ setColumnDefinition(COLUMN_DEFINITION_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__DEFAULT_LENGTH :
+ setDefaultLength(DEFAULT_LENGTH_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__SPECIFIED_LENGTH :
+ setSpecifiedLength(SPECIFIED_LENGTH_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__DEFAULT_NAME :
+ return DEFAULT_NAME_EDEFAULT == null ? defaultName != null : !DEFAULT_NAME_EDEFAULT.equals(defaultName);
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__SPECIFIED_NAME :
+ return SPECIFIED_NAME_EDEFAULT == null ? specifiedName != null : !SPECIFIED_NAME_EDEFAULT.equals(specifiedName);
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__NAME :
+ return NAME_EDEFAULT == null ? getName() != null : !NAME_EDEFAULT.equals(getName());
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE :
+ return discriminatorType != DISCRIMINATOR_TYPE_EDEFAULT;
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__COLUMN_DEFINITION :
+ return COLUMN_DEFINITION_EDEFAULT == null ? columnDefinition != null : !COLUMN_DEFINITION_EDEFAULT.equals(columnDefinition);
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__DEFAULT_LENGTH :
+ return defaultLength != DEFAULT_LENGTH_EDEFAULT;
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__SPECIFIED_LENGTH :
+ return specifiedLength != SPECIFIED_LENGTH_EDEFAULT;
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__LENGTH :
+ return getLength() != LENGTH_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IDiscriminatorColumn.class) {
+ switch (derivedFeatureID) {
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__DEFAULT_NAME :
+ return JpaCoreMappingsPackage.IDISCRIMINATOR_COLUMN__DEFAULT_NAME;
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__SPECIFIED_NAME :
+ return JpaCoreMappingsPackage.IDISCRIMINATOR_COLUMN__SPECIFIED_NAME;
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__NAME :
+ return JpaCoreMappingsPackage.IDISCRIMINATOR_COLUMN__NAME;
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE :
+ return JpaCoreMappingsPackage.IDISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE;
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__COLUMN_DEFINITION :
+ return JpaCoreMappingsPackage.IDISCRIMINATOR_COLUMN__COLUMN_DEFINITION;
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__DEFAULT_LENGTH :
+ return JpaCoreMappingsPackage.IDISCRIMINATOR_COLUMN__DEFAULT_LENGTH;
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__SPECIFIED_LENGTH :
+ return JpaCoreMappingsPackage.IDISCRIMINATOR_COLUMN__SPECIFIED_LENGTH;
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__LENGTH :
+ return JpaCoreMappingsPackage.IDISCRIMINATOR_COLUMN__LENGTH;
+ 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 == IDiscriminatorColumn.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IDISCRIMINATOR_COLUMN__DEFAULT_NAME :
+ return JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__DEFAULT_NAME;
+ case JpaCoreMappingsPackage.IDISCRIMINATOR_COLUMN__SPECIFIED_NAME :
+ return JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__SPECIFIED_NAME;
+ case JpaCoreMappingsPackage.IDISCRIMINATOR_COLUMN__NAME :
+ return JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__NAME;
+ case JpaCoreMappingsPackage.IDISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE :
+ return JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE;
+ case JpaCoreMappingsPackage.IDISCRIMINATOR_COLUMN__COLUMN_DEFINITION :
+ return JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__COLUMN_DEFINITION;
+ case JpaCoreMappingsPackage.IDISCRIMINATOR_COLUMN__DEFAULT_LENGTH :
+ return JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__DEFAULT_LENGTH;
+ case JpaCoreMappingsPackage.IDISCRIMINATOR_COLUMN__SPECIFIED_LENGTH :
+ return JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__SPECIFIED_LENGTH;
+ case JpaCoreMappingsPackage.IDISCRIMINATOR_COLUMN__LENGTH :
+ return JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN__LENGTH;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (defaultName: ");
+ result.append(defaultName);
+ result.append(", specifiedName: ");
+ result.append(specifiedName);
+ result.append(", discriminatorType: ");
+ result.append(discriminatorType);
+ result.append(", columnDefinition: ");
+ result.append(columnDefinition);
+ result.append(", defaultLength: ");
+ result.append(defaultLength);
+ result.append(", specifiedLength: ");
+ result.append(specifiedLength);
+ result.append(')');
+ return result.toString();
+ }
+
+ public ITextRange getTextRange() {
+ return this.type.textRange();
+ }
+
+ public Table dbTable() {
+ return entity().primaryDbTable();
+ }
+
+ private IEntity entity() {
+ return (IEntity) eContainer();
+ }
+
+ // ********** java annotations -> persistence model **********
+ public void updateFromJava(CompilationUnit astRoot) {
+ setDiscriminatorType(DiscriminatorType.fromJavaAnnotationValue(this.discriminatorTypeAdapter.getValue(astRoot)));
+ setSpecifiedName((String) this.nameAdapter.getValue(astRoot));
+ setSpecifiedLength(this.lengthAdapter.getValue(astRoot));
+ setColumnDefinition((String) this.columnDefinitionAdapter.getValue(astRoot));
+ }
+
+ // ********** static methods **********
+ private static DeclarationAnnotationElementAdapter buildDiscriminatorTypeAdapter() {
+ return new EnumDeclarationAnnotationElementAdapter(ANNOTATION_ADAPTER, JPA.DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE);
+ }
+
+ private static DeclarationAnnotationElementAdapter buildAnnotationElementAdapter(String elementName) {
+ return new ConversionDeclarationAnnotationElementAdapter(ANNOTATION_ADAPTER, elementName);
+ }
+} // JavaDiscriminatorColumn
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbeddable.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbeddable.java
new file mode 100644
index 0000000000..12d9fa6d8c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbeddable.java
@@ -0,0 +1,99 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.SimpleDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Type;
+import org.eclipse.jpt.core.internal.mappings.IEmbeddable;
+import org.eclipse.jpt.core.internal.mappings.ITable;
+import org.eclipse.jpt.utility.internal.iterators.EmptyIterator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Embeddable</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaEmbeddable()
+ * @model kind="class"
+ * @generated
+ */
+public class JavaEmbeddable extends JavaTypeMapping implements IEmbeddable
+{
+ public static final DeclarationAnnotationAdapter ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.EMBEDDABLE);
+
+ protected JavaEmbeddable() {
+ throw new UnsupportedOperationException("Use JavaEmbeddable(Type) instead");
+ }
+
+ protected JavaEmbeddable(Type type) {
+ super(type);
+ }
+
+ @Override
+ protected DeclarationAnnotationAdapter declarationAnnotationAdapter() {
+ return ANNOTATION_ADAPTER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_EMBEDDABLE;
+ }
+
+ public String getKey() {
+ return IMappingKeys.EMBEDDABLE_TYPE_MAPPING_KEY;
+ }
+
+ public boolean tableNameIsInvalid(String tableName) {
+ return false;
+ }
+
+ public Iterator<String> associatedTableNamesIncludingInherited() {
+ return EmptyIterator.instance();
+ }
+
+ public Iterator<ITable> associatedTables() {
+ return EmptyIterator.instance();
+ }
+
+ public Iterator<ITable> associatedTablesIncludingInherited() {
+ return EmptyIterator.instance();
+ }
+
+ public Iterator<String> overridableAttributeNames() {
+ return EmptyIterator.instance();
+ }
+
+ public Iterator<String> overridableAssociationNames() {
+ return EmptyIterator.instance();
+ }
+
+ @Override
+ public boolean attributeMappingKeyAllowed(String attributeMappingKey) {
+ return attributeMappingKey == IMappingKeys.BASIC_ATTRIBUTE_MAPPING_KEY || attributeMappingKey == IMappingKeys.TRANSIENT_ATTRIBUTE_MAPPING_KEY;
+ }
+
+ public List<String> candidateValuesFor(int pos, CompilationUnit astRoot) {
+ return Collections.emptyList();
+ }
+
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbeddableProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbeddableProvider.java
new file mode 100644
index 0000000000..879b5f1f39
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbeddableProvider.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.content.java.IJavaTypeMapping;
+import org.eclipse.jpt.core.internal.content.java.IJavaTypeMappingProvider;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Type;
+
+/**
+ *
+ */
+public class JavaEmbeddableProvider
+ implements IJavaTypeMappingProvider
+{
+
+ // singleton
+ private static final JavaEmbeddableProvider INSTANCE = new JavaEmbeddableProvider();
+
+ /**
+ * Return the singleton.
+ */
+ public static IJavaTypeMappingProvider instance() {
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private JavaEmbeddableProvider() {
+ super();
+ }
+
+ public String key() {
+ return IMappingKeys.EMBEDDABLE_TYPE_MAPPING_KEY;
+ }
+
+ public IJavaTypeMapping buildMapping(Type type) {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaEmbeddable(type);
+ }
+
+ public DeclarationAnnotationAdapter declarationAnnotationAdapter() {
+ return JavaEmbeddable.ANNOTATION_ADAPTER;
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbedded.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbedded.java
new file mode 100644
index 0000000000..e8f0a82582
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbedded.java
@@ -0,0 +1,543 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+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.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.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.IPersistentAttribute;
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.SimpleDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.mappings.IAttributeOverride;
+import org.eclipse.jpt.core.internal.mappings.IEmbeddable;
+import org.eclipse.jpt.core.internal.mappings.IEmbedded;
+import org.eclipse.jpt.core.internal.mappings.IEntity;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+import org.eclipse.jpt.utility.internal.iterators.EmptyIterator;
+import org.eclipse.jpt.utility.internal.iterators.FilteringIterator;
+import org.eclipse.jpt.utility.internal.iterators.TransformationIterator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Embedded</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaEmbedded()
+ * @model kind="class"
+ * @generated
+ */
+public class JavaEmbedded extends JavaAttributeMapping implements IEmbedded
+{
+ /**
+ * The cached value of the '{@link #getSpecifiedAttributeOverrides() <em>Specified Attribute Overrides</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedAttributeOverrides()
+ * @generated
+ * @ordered
+ */
+ protected EList<IAttributeOverride> specifiedAttributeOverrides;
+
+ /**
+ * The cached value of the '{@link #getDefaultAttributeOverrides() <em>Default Attribute Overrides</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultAttributeOverrides()
+ * @generated
+ * @ordered
+ */
+ protected EList<IAttributeOverride> defaultAttributeOverrides;
+
+ public static final DeclarationAnnotationAdapter DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.EMBEDDED);
+
+ private IEmbeddable embeddable;
+
+ protected JavaEmbedded() {
+ throw new UnsupportedOperationException("Use JavaEmbedded(Attribute) instead");
+ }
+
+ protected JavaEmbedded(Attribute attribute) {
+ super(attribute);
+ }
+
+ /**
+ * check for changes to the 'specifiedJoinColumns' and
+ * 'specifiedInverseJoinColumns' lists so we can notify the
+ * model adapter of any changes;
+ * also listen for changes to the 'defaultJoinColumns' and
+ * 'defaultInverseJoinColumns' lists so we can spank the developer
+ */
+ @Override
+ protected void notifyChanged(Notification notification) {
+ super.notifyChanged(notification);
+ switch (notification.getFeatureID(IEntity.class)) {
+ case JpaCoreMappingsPackage.IEMBEDDED__SPECIFIED_ATTRIBUTE_OVERRIDES :
+ attributeOverridesChanged(notification);
+ break;
+ default :
+ break;
+ }
+ }
+
+ void attributeOverridesChanged(Notification notification) {
+ switch (notification.getEventType()) {
+ case Notification.ADD :
+ attributeOverrideAdded(notification.getPosition(), (JavaAttributeOverride) notification.getNewValue());
+ break;
+ case Notification.ADD_MANY :
+ attributeOverridesAdded(notification.getPosition(), (List<JavaAttributeOverride>) notification.getNewValue());
+ break;
+ case Notification.REMOVE :
+ attributeOverrideRemoved(notification.getPosition(), (JavaAttributeOverride) notification.getOldValue());
+ break;
+ case Notification.REMOVE_MANY :
+ if (notification.getPosition() == Notification.NO_INDEX) {
+ attributeOverridesCleared((List<JavaAttributeOverride>) notification.getOldValue());
+ }
+ else {
+ // Notification.getNewValue() returns an array of the positions of objects that were removed
+ attributeOverridesRemoved((int[]) notification.getNewValue(), (List<JavaAttributeOverride>) notification.getOldValue());
+ }
+ break;
+ case Notification.SET :
+ if (!notification.isTouch()) {
+ attributeOverrideSet(notification.getPosition(), (JavaAttributeOverride) notification.getOldValue(), (JavaAttributeOverride) notification.getNewValue());
+ }
+ break;
+ case Notification.MOVE :
+ // Notification.getOldValue() returns the source index
+ // Notification.getPositon() returns the target index
+ // Notification.getNewValue() returns the moved object
+ attributeOverrideMoved(notification.getOldIntValue(), notification.getPosition(), (JavaAttributeOverride) notification.getNewValue());
+ break;
+ default :
+ break;
+ }
+ }
+
+ // ********** jpa model -> java annotations **********
+ /**
+ * slide over all the annotations that follow the new join column
+ */
+ public void attributeOverrideAdded(int index, JavaAttributeOverride attributeOverride) {
+ //JoinColumn was added to persistence model when udating from java, do not need
+ //to edit the java in this case. TODO is there a better way to handle this??
+ if (attributeOverride.annotation(getAttribute().astRoot()) == null) {
+ this.synchAttributeOverrideAnnotationsAfterAdd(index + 1);
+ attributeOverride.newAnnotation();
+ }
+ }
+
+ public void attributeOverridesAdded(int index, List<JavaAttributeOverride> attributeOverrides) {
+ //JoinColumn was added to persistence model when udating from java, do not need
+ //to edit the java in this case. TODO is there a better way to handle this??
+ if (!attributeOverrides.isEmpty() && (attributeOverrides.get(0).annotation(getAttribute().astRoot()) == null)) {
+ this.synchAttributeOverrideAnnotationsAfterAdd(index + attributeOverrides.size());
+ for (JavaAttributeOverride attributeOverride : attributeOverrides) {
+ attributeOverride.newAnnotation();
+ }
+ }
+ }
+
+ public void attributeOverrideRemoved(int index, JavaAttributeOverride attributeOverride) {
+ attributeOverride.removeAnnotation();
+ this.synchAttributeOverrideAnnotationsAfterRemove(index);
+ }
+
+ public void attributeOverridesRemoved(int[] indexes, List<JavaAttributeOverride> attributeOverrides) {
+ for (JavaAttributeOverride attributeOverride : attributeOverrides) {
+ attributeOverride.removeAnnotation();
+ }
+ this.synchAttributeOverrideAnnotationsAfterRemove(indexes[0]);
+ }
+
+ public void attributeOverridesCleared(List<JavaAttributeOverride> attributeOverrides) {
+ for (JavaAttributeOverride attributeOverride : attributeOverrides) {
+ attributeOverride.removeAnnotation();
+ }
+ }
+
+ public void attributeOverrideSet(int index, JavaAttributeOverride oldAttributeOverride, JavaAttributeOverride newAttributeOverride) {
+ newAttributeOverride.newAnnotation();
+ }
+
+ public void attributeOverrideMoved(int sourceIndex, int targetIndex, JavaAttributeOverride attributeOverride) {
+ List<IAttributeOverride> attributeOverrides = getSpecifiedAttributeOverrides();
+ int begin = Math.min(sourceIndex, targetIndex);
+ int end = Math.max(sourceIndex, targetIndex);
+ for (int i = begin; i-- > end;) {
+ this.synch((JavaAttributeOverride) attributeOverrides.get(i), i);
+ }
+ }
+
+ /**
+ * synchronize the annotations with the model join columns,
+ * starting at the end of the list to prevent overlap
+ */
+ private void synchAttributeOverrideAnnotationsAfterAdd(int index) {
+ List<IAttributeOverride> attributeOverrides = getSpecifiedAttributeOverrides();
+ for (int i = attributeOverrides.size(); i-- > index;) {
+ this.synch((JavaAttributeOverride) attributeOverrides.get(i), i);
+ }
+ }
+
+ /**
+ * synchronize the annotations with the model join columns,
+ * starting at the specified index to prevent overlap
+ */
+ private void synchAttributeOverrideAnnotationsAfterRemove(int index) {
+ List<IAttributeOverride> attributeOverrides = getSpecifiedAttributeOverrides();
+ for (int i = index; i < attributeOverrides.size(); i++) {
+ this.synch((JavaAttributeOverride) attributeOverrides.get(i), i);
+ }
+ }
+
+ private void synch(JavaAttributeOverride attributeOverride, int index) {
+ attributeOverride.moveAnnotation(index);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_EMBEDDED;
+ }
+
+ public EList<IAttributeOverride> getAttributeOverrides() {
+ EList<IAttributeOverride> list = new BasicEList<IAttributeOverride>();
+ list.addAll(getSpecifiedAttributeOverrides());
+ list.addAll(getDefaultAttributeOverrides());
+ return list;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Attribute Overrides</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Attribute Overrides</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>Specified Attribute Overrides</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIEmbedded_SpecifiedAttributeOverrides()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IAttributeOverride" containment="true"
+ * @generated
+ */
+ public EList<IAttributeOverride> getSpecifiedAttributeOverrides() {
+ if (specifiedAttributeOverrides == null) {
+ specifiedAttributeOverrides = new EObjectContainmentEList<IAttributeOverride>(IAttributeOverride.class, this, JpaJavaMappingsPackage.JAVA_EMBEDDED__SPECIFIED_ATTRIBUTE_OVERRIDES);
+ }
+ return specifiedAttributeOverrides;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Attribute Overrides</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Attribute Overrides</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>Default Attribute Overrides</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIEmbedded_DefaultAttributeOverrides()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IAttributeOverride" containment="true"
+ * @generated
+ */
+ public EList<IAttributeOverride> getDefaultAttributeOverrides() {
+ if (defaultAttributeOverrides == null) {
+ defaultAttributeOverrides = new EObjectContainmentEList<IAttributeOverride>(IAttributeOverride.class, this, JpaJavaMappingsPackage.JAVA_EMBEDDED__DEFAULT_ATTRIBUTE_OVERRIDES);
+ }
+ return defaultAttributeOverrides;
+ }
+
+ public IEmbeddable embeddable() {
+ return this.embeddable;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_EMBEDDED__ATTRIBUTE_OVERRIDES :
+ return ((InternalEList<?>) getAttributeOverrides()).basicRemove(otherEnd, msgs);
+ case JpaJavaMappingsPackage.JAVA_EMBEDDED__SPECIFIED_ATTRIBUTE_OVERRIDES :
+ return ((InternalEList<?>) getSpecifiedAttributeOverrides()).basicRemove(otherEnd, msgs);
+ case JpaJavaMappingsPackage.JAVA_EMBEDDED__DEFAULT_ATTRIBUTE_OVERRIDES :
+ return ((InternalEList<?>) getDefaultAttributeOverrides()).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 JpaJavaMappingsPackage.JAVA_EMBEDDED__ATTRIBUTE_OVERRIDES :
+ return getAttributeOverrides();
+ case JpaJavaMappingsPackage.JAVA_EMBEDDED__SPECIFIED_ATTRIBUTE_OVERRIDES :
+ return getSpecifiedAttributeOverrides();
+ case JpaJavaMappingsPackage.JAVA_EMBEDDED__DEFAULT_ATTRIBUTE_OVERRIDES :
+ return getDefaultAttributeOverrides();
+ }
+ 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 JpaJavaMappingsPackage.JAVA_EMBEDDED__SPECIFIED_ATTRIBUTE_OVERRIDES :
+ getSpecifiedAttributeOverrides().clear();
+ getSpecifiedAttributeOverrides().addAll((Collection<? extends IAttributeOverride>) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_EMBEDDED__DEFAULT_ATTRIBUTE_OVERRIDES :
+ getDefaultAttributeOverrides().clear();
+ getDefaultAttributeOverrides().addAll((Collection<? extends IAttributeOverride>) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_EMBEDDED__SPECIFIED_ATTRIBUTE_OVERRIDES :
+ getSpecifiedAttributeOverrides().clear();
+ return;
+ case JpaJavaMappingsPackage.JAVA_EMBEDDED__DEFAULT_ATTRIBUTE_OVERRIDES :
+ getDefaultAttributeOverrides().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_EMBEDDED__ATTRIBUTE_OVERRIDES :
+ return !getAttributeOverrides().isEmpty();
+ case JpaJavaMappingsPackage.JAVA_EMBEDDED__SPECIFIED_ATTRIBUTE_OVERRIDES :
+ return specifiedAttributeOverrides != null && !specifiedAttributeOverrides.isEmpty();
+ case JpaJavaMappingsPackage.JAVA_EMBEDDED__DEFAULT_ATTRIBUTE_OVERRIDES :
+ return defaultAttributeOverrides != null && !defaultAttributeOverrides.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IEmbedded.class) {
+ switch (derivedFeatureID) {
+ case JpaJavaMappingsPackage.JAVA_EMBEDDED__ATTRIBUTE_OVERRIDES :
+ return JpaCoreMappingsPackage.IEMBEDDED__ATTRIBUTE_OVERRIDES;
+ case JpaJavaMappingsPackage.JAVA_EMBEDDED__SPECIFIED_ATTRIBUTE_OVERRIDES :
+ return JpaCoreMappingsPackage.IEMBEDDED__SPECIFIED_ATTRIBUTE_OVERRIDES;
+ case JpaJavaMappingsPackage.JAVA_EMBEDDED__DEFAULT_ATTRIBUTE_OVERRIDES :
+ return JpaCoreMappingsPackage.IEMBEDDED__DEFAULT_ATTRIBUTE_OVERRIDES;
+ 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 == IEmbedded.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IEMBEDDED__ATTRIBUTE_OVERRIDES :
+ return JpaJavaMappingsPackage.JAVA_EMBEDDED__ATTRIBUTE_OVERRIDES;
+ case JpaCoreMappingsPackage.IEMBEDDED__SPECIFIED_ATTRIBUTE_OVERRIDES :
+ return JpaJavaMappingsPackage.JAVA_EMBEDDED__SPECIFIED_ATTRIBUTE_OVERRIDES;
+ case JpaCoreMappingsPackage.IEMBEDDED__DEFAULT_ATTRIBUTE_OVERRIDES :
+ return JpaJavaMappingsPackage.JAVA_EMBEDDED__DEFAULT_ATTRIBUTE_OVERRIDES;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ @Override
+ protected DeclarationAnnotationAdapter declarationAnnotationAdapter() {
+ return DECLARATION_ANNOTATION_ADAPTER;
+ }
+
+ public String getKey() {
+ return IMappingKeys.EMBEDDED_ATTRIBUTE_MAPPING_KEY;
+ }
+
+ @Override
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ super.refreshDefaults(defaultsContext);
+ refreshEmbeddable(defaultsContext);
+ }
+
+ private void refreshEmbeddable(DefaultsContext defaultsContext) {
+ this.embeddable = embeddableFor(getAttribute(), defaultsContext);
+ }
+
+ @Override
+ public void updateFromJava(CompilationUnit astRoot) {
+ super.updateFromJava(astRoot);
+ updateAttributeOverridesFromJava(astRoot);
+ }
+
+ /**
+ * here we just worry about getting the attribute override lists the same size;
+ * then we delegate to the attribute overrides to synch themselves up
+ */
+ private void updateAttributeOverridesFromJava(CompilationUnit astRoot) {
+ // synchronize the model attribute overrides with the Java source
+ List<IAttributeOverride> attributeOverrides = getSpecifiedAttributeOverrides();
+ int persSize = attributeOverrides.size();
+ int javaSize = 0;
+ boolean allJavaAnnotationsFound = false;
+ for (int i = 0; i < persSize; i++) {
+ JavaAttributeOverride attributeOverride = (JavaAttributeOverride) attributeOverrides.get(i);
+ if (attributeOverride.annotation(astRoot) == null) {
+ allJavaAnnotationsFound = true;
+ break; // no need to go any further
+ }
+ attributeOverride.updateFromJava(astRoot);
+ javaSize++;
+ }
+ if (allJavaAnnotationsFound) {
+ // remove any model attribute overrides beyond those that correspond to the Java annotations
+ while (persSize > javaSize) {
+ persSize--;
+ attributeOverrides.remove(persSize);
+ }
+ }
+ else {
+ // add new model attribute overrides until they match the Java annotations
+ while (!allJavaAnnotationsFound) {
+ JavaAttributeOverride attributeOverride = this.createJavaAttributeOverride(javaSize);
+ if (attributeOverride.annotation(astRoot) == null) {
+ allJavaAnnotationsFound = true;
+ }
+ else {
+ getSpecifiedAttributeOverrides().add(attributeOverride);
+ attributeOverride.updateFromJava(astRoot);
+ javaSize++;
+ }
+ }
+ }
+ }
+
+ public boolean containsAttributeOverride(String name) {
+ return containsAttributeOverride(name, getAttributeOverrides());
+ }
+
+ public boolean containsSpecifiedAttributeOverride(String name) {
+ return containsAttributeOverride(name, getSpecifiedAttributeOverrides());
+ }
+
+ private boolean containsAttributeOverride(String name, List<IAttributeOverride> attributeOverrides) {
+ for (IAttributeOverride attributeOverride : attributeOverrides) {
+ String attributeOverrideName = attributeOverride.getName();
+ if (attributeOverrideName != null && attributeOverrideName.equals(name)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public Iterator<String> allOverridableAttributeNames() {
+ if (embeddable() != null) {
+ return new TransformationIterator(new FilteringIterator(embeddable().getPersistentType().attributes()) {
+ protected boolean accept(Object o) {
+ String key = ((IPersistentAttribute) o).getMappingKey();
+ return key == IMappingKeys.BASIC_ATTRIBUTE_MAPPING_KEY || key == IMappingKeys.ID_ATTRIBUTE_MAPPING_KEY;
+ }
+ }) {
+ protected Object transform(Object next) {
+ return ((IPersistentAttribute) next).getName();
+ }
+ };
+ }
+ return EmptyIterator.instance();
+ }
+
+ public IAttributeOverride createAttributeOverride(int index) {
+ return createJavaAttributeOverride(index);
+ }
+
+ private JavaAttributeOverride createJavaAttributeOverride(int index) {
+ return JavaAttributeOverride.createAttributeOverride(new AttributeOverrideOwner(this), this.getAttribute(), index);
+ }
+
+ //******* static methods *********
+ public static IEmbeddable embeddableFor(Attribute attribute, DefaultsContext defaultsContext) {
+ String resolvedTypeName = attribute.resolvedTypeName();
+ if (resolvedTypeName == null) {
+ return null;
+ }
+ IPersistentType persistentType = defaultsContext.persistentType(resolvedTypeName);
+ if (persistentType != null) {
+ if (persistentType.getMapping() instanceof IEmbeddable) {
+ return (IEmbeddable) persistentType.getMapping();
+ }
+ }
+ return null;
+ }
+} // JavaEmbedded
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbeddedId.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbeddedId.java
new file mode 100644
index 0000000000..9cd197e50e
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbeddedId.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.SimpleDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.mappings.IEmbeddedId;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Embedded Id</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaEmbeddedId()
+ * @model kind="class"
+ * @generated
+ */
+public class JavaEmbeddedId extends JavaAttributeMapping implements IEmbeddedId
+{
+ public static final DeclarationAnnotationAdapter DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.EMBEDDED_ID);
+
+ protected JavaEmbeddedId() {
+ throw new UnsupportedOperationException("Use JavaEmbeddedId(Attribute) instead");
+ }
+
+ protected JavaEmbeddedId(Attribute attribute) {
+ super(attribute);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_EMBEDDED_ID;
+ }
+
+ @Override
+ protected DeclarationAnnotationAdapter declarationAnnotationAdapter() {
+ return DECLARATION_ANNOTATION_ADAPTER;
+ }
+
+ public String getKey() {
+ return IMappingKeys.EMBEDDED_ID_ATTRIBUTE_MAPPING_KEY;
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbeddedIdProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbeddedIdProvider.java
new file mode 100644
index 0000000000..470cc40f0e
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbeddedIdProvider.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMapping;
+import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMappingProvider;
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+
+/**
+ *
+ */
+public class JavaEmbeddedIdProvider
+ implements IJavaAttributeMappingProvider
+{
+
+ // singleton
+ private static final JavaEmbeddedIdProvider INSTANCE = new JavaEmbeddedIdProvider();
+
+ /**
+ * Return the singleton.
+ */
+ public static IJavaAttributeMappingProvider instance() {
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private JavaEmbeddedIdProvider() {
+ super();
+ }
+
+ public String key() {
+ return IMappingKeys.EMBEDDED_ID_ATTRIBUTE_MAPPING_KEY;
+ }
+
+ public boolean defaultApplies(Attribute attribute, DefaultsContext defaultsContext) {
+ return false;
+ }
+
+ public IJavaAttributeMapping buildMapping(Attribute attribute) {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaEmbeddedId(attribute);
+ }
+
+ public DeclarationAnnotationAdapter declarationAnnotationAdapter() {
+ return JavaEmbeddedId.DECLARATION_ANNOTATION_ADAPTER;
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbeddedProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbeddedProvider.java
new file mode 100644
index 0000000000..6e39f23352
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEmbeddedProvider.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMapping;
+import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMappingProvider;
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.mappings.IEmbeddable;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+
+/**
+ *
+ */
+public class JavaEmbeddedProvider
+ implements IJavaAttributeMappingProvider
+{
+
+ // singleton
+ private static final JavaEmbeddedProvider INSTANCE = new JavaEmbeddedProvider();
+
+ /**
+ * Return the singleton.
+ */
+ public static IJavaAttributeMappingProvider instance() {
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private JavaEmbeddedProvider() {
+ super();
+ }
+
+ public String key() {
+ return IMappingKeys.EMBEDDED_ATTRIBUTE_MAPPING_KEY;
+ }
+
+ public boolean defaultApplies(Attribute attribute, DefaultsContext defaultsContext) {
+ return embeddableFor(attribute, defaultsContext) != null;
+ }
+
+ private IEmbeddable embeddableFor(Attribute attribute, DefaultsContext defaultsContext) {
+ String resolvedTypeName = attribute.resolvedTypeName();
+ if (resolvedTypeName == null) {
+ return null;
+ }
+ IPersistentType persistentType = defaultsContext.persistentType(resolvedTypeName);
+ if (persistentType != null && persistentType.getMappingKey() == IMappingKeys.EMBEDDABLE_TYPE_MAPPING_KEY) {
+ return (IEmbeddable) persistentType.getMapping();
+ }
+ return null;
+ }
+
+ public IJavaAttributeMapping buildMapping(Attribute attribute) {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaEmbedded(attribute);
+ }
+
+ public DeclarationAnnotationAdapter declarationAnnotationAdapter() {
+ return JavaEmbedded.DECLARATION_ANNOTATION_ADAPTER;
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEntity.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEntity.java
new file mode 100644
index 0000000000..5fe6cf40e0
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEntity.java
@@ -0,0 +1,2761 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+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.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.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.jdt.core.dom.Annotation;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.IPersistentAttribute;
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.jdtutility.AnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.AnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.ConversionDeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.EnumDeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.MemberAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.ShortCircuitAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.SimpleDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Type;
+import org.eclipse.jpt.core.internal.mappings.DiscriminatorType;
+import org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.IAssociationOverride;
+import org.eclipse.jpt.core.internal.mappings.IAttributeOverride;
+import org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn;
+import org.eclipse.jpt.core.internal.mappings.IEntity;
+import org.eclipse.jpt.core.internal.mappings.INamedNativeQuery;
+import org.eclipse.jpt.core.internal.mappings.INamedQuery;
+import org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.ISecondaryTable;
+import org.eclipse.jpt.core.internal.mappings.ISequenceGenerator;
+import org.eclipse.jpt.core.internal.mappings.ITable;
+import org.eclipse.jpt.core.internal.mappings.ITableGenerator;
+import org.eclipse.jpt.core.internal.mappings.InheritanceType;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.db.internal.Table;
+import org.eclipse.jpt.utility.internal.CollectionTools;
+import org.eclipse.jpt.utility.internal.iterators.CompositeIterator;
+import org.eclipse.jpt.utility.internal.iterators.EmptyIterator;
+import org.eclipse.jpt.utility.internal.iterators.FilteringIterator;
+import org.eclipse.jpt.utility.internal.iterators.TransformationIterator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Entity</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaEntity#getSecondaryTables <em>Secondary Tables</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaEntity()
+ * @model kind="class"
+ * @generated
+ */
+public class JavaEntity extends JavaTypeMapping implements IEntity
+{
+ /**
+ * The default value of the '{@link #getSpecifiedName() <em>Specified Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedName()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedName() <em>Specified Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedName()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedName = SPECIFIED_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultName() <em>Default Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultName()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultName() <em>Default Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultName()
+ * @generated
+ * @ordered
+ */
+ protected String defaultName = DEFAULT_NAME_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getTable() <em>Table</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTable()
+ * @generated
+ * @ordered
+ */
+ protected ITable table;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedPrimaryKeyJoinColumns() <em>Specified Primary Key Join Columns</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedPrimaryKeyJoinColumns()
+ * @generated
+ * @ordered
+ */
+ protected EList<IPrimaryKeyJoinColumn> specifiedPrimaryKeyJoinColumns;
+
+ /**
+ * The cached value of the '{@link #getDefaultPrimaryKeyJoinColumns() <em>Default Primary Key Join Columns</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultPrimaryKeyJoinColumns()
+ * @generated
+ * @ordered
+ */
+ protected EList<IPrimaryKeyJoinColumn> defaultPrimaryKeyJoinColumns;
+
+ /**
+ * The default value of the '{@link #getInheritanceStrategy() <em>Inheritance Strategy</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getInheritanceStrategy()
+ * @generated
+ * @ordered
+ */
+ protected static final InheritanceType INHERITANCE_STRATEGY_EDEFAULT = InheritanceType.DEFAULT;
+
+ /**
+ * The cached value of the '{@link #getInheritanceStrategy() <em>Inheritance Strategy</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getInheritanceStrategy()
+ * @generated
+ * @ordered
+ */
+ protected InheritanceType inheritanceStrategy = INHERITANCE_STRATEGY_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultDiscriminatorValue() <em>Default Discriminator Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultDiscriminatorValue()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_DISCRIMINATOR_VALUE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultDiscriminatorValue() <em>Default Discriminator Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultDiscriminatorValue()
+ * @generated
+ * @ordered
+ */
+ protected String defaultDiscriminatorValue = DEFAULT_DISCRIMINATOR_VALUE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getSpecifiedDiscriminatorValue() <em>Specified Discriminator Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedDiscriminatorValue()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_DISCRIMINATOR_VALUE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedDiscriminatorValue() <em>Specified Discriminator Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedDiscriminatorValue()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedDiscriminatorValue = SPECIFIED_DISCRIMINATOR_VALUE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDiscriminatorValue() <em>Discriminator Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDiscriminatorValue()
+ * @generated
+ * @ordered
+ */
+ protected static final String DISCRIMINATOR_VALUE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDiscriminatorColumn() <em>Discriminator Column</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDiscriminatorColumn()
+ * @generated
+ * @ordered
+ */
+ protected IDiscriminatorColumn discriminatorColumn;
+
+ /**
+ * The cached value of the '{@link #getSequenceGenerator() <em>Sequence Generator</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSequenceGenerator()
+ * @generated
+ * @ordered
+ */
+ protected ISequenceGenerator sequenceGenerator;
+
+ /**
+ * The cached value of the '{@link #getTableGenerator() <em>Table Generator</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTableGenerator()
+ * @generated
+ * @ordered
+ */
+ protected ITableGenerator tableGenerator;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedAttributeOverrides() <em>Specified Attribute Overrides</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedAttributeOverrides()
+ * @generated
+ * @ordered
+ */
+ protected EList<IAttributeOverride> specifiedAttributeOverrides;
+
+ /**
+ * The cached value of the '{@link #getDefaultAttributeOverrides() <em>Default Attribute Overrides</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultAttributeOverrides()
+ * @generated
+ * @ordered
+ */
+ protected EList<IAttributeOverride> defaultAttributeOverrides;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedAssociationOverrides() <em>Specified Association Overrides</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedAssociationOverrides()
+ * @generated
+ * @ordered
+ */
+ protected EList<IAssociationOverride> specifiedAssociationOverrides;
+
+ /**
+ * The cached value of the '{@link #getDefaultAssociationOverrides() <em>Default Association Overrides</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultAssociationOverrides()
+ * @generated
+ * @ordered
+ */
+ protected EList<IAssociationOverride> defaultAssociationOverrides;
+
+ /**
+ * The cached value of the '{@link #getNamedQueries() <em>Named Queries</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNamedQueries()
+ * @generated
+ * @ordered
+ */
+ protected EList<INamedQuery> namedQueries;
+
+ /**
+ * The cached value of the '{@link #getNamedNativeQueries() <em>Named Native Queries</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNamedNativeQueries()
+ * @generated
+ * @ordered
+ */
+ protected EList<INamedNativeQuery> namedNativeQueries;
+
+ /**
+ * The cached value of the '{@link #getSecondaryTables() <em>Secondary Tables</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSecondaryTables()
+ * @generated
+ * @ordered
+ */
+ protected EList<ISecondaryTable> secondaryTables;
+
+ private AnnotationElementAdapter nameAdapter;
+
+ private AnnotationElementAdapter inheritanceStrategyAdapter;
+
+ private final AnnotationElementAdapter discriminatorValueAdapter;
+
+ private AnnotationAdapter tableGeneratorAnnotationAdapter;
+
+ private AnnotationAdapter sequenceGeneratorAnnotationAdapter;
+
+ public static final DeclarationAnnotationAdapter ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.ENTITY);
+
+ private static final DeclarationAnnotationElementAdapter NAME_ADAPTER = buildNameAdapter();
+
+ private static final DeclarationAnnotationAdapter INHERITANCE_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.INHERITANCE);
+
+ private static final DeclarationAnnotationElementAdapter INHERITANCE_STRATEGY_ADAPTER = buildStrategyAdapter();
+
+ private static final DeclarationAnnotationAdapter DISCRIMINATOR_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.DISCRIMINATOR_VALUE);
+
+ private static final DeclarationAnnotationElementAdapter DISCRIMINATOR_VALUE_ADAPTER = buildValueAdapter();
+
+ protected JavaEntity() {
+ this(null);
+ }
+
+ protected JavaEntity(Type type) {
+ super(type);
+ this.table = JpaJavaMappingsFactory.eINSTANCE.createJavaTable(buildTableOwner(), getType());
+ ((InternalEObject) this.table).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - JpaJavaMappingsPackage.JAVA_ENTITY__TABLE, null, null);
+ this.discriminatorColumn = JpaJavaMappingsFactory.eINSTANCE.createJavaDiscriminatorColumn(type);
+ ((InternalEObject) this.discriminatorColumn).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - JpaJavaMappingsPackage.JAVA_ENTITY__DISCRIMINATOR_COLUMN, null, null);
+ // this.getDefaultPrimaryKeyJoinColumns().add(this.createPrimaryKeyJoinColumn(IPrimaryKeyJoinColumnModelAdapter.DEFAULT));
+ // this.eAdapters().add(this.buildListener());
+ this.nameAdapter = new ShortCircuitAnnotationElementAdapter(getType(), NAME_ADAPTER);
+ this.inheritanceStrategyAdapter = new ShortCircuitAnnotationElementAdapter(type, INHERITANCE_STRATEGY_ADAPTER);
+ this.discriminatorValueAdapter = new ShortCircuitAnnotationElementAdapter(type, DISCRIMINATOR_VALUE_ADAPTER);
+ this.getDefaultPrimaryKeyJoinColumns().add(this.createPrimaryKeyJoinColumn(0));
+ this.tableGeneratorAnnotationAdapter = new MemberAnnotationAdapter(getType(), JavaTableGenerator.DECLARATION_ANNOTATION_ADAPTER);
+ this.sequenceGeneratorAnnotationAdapter = new MemberAnnotationAdapter(getType(), JavaSequenceGenerator.DECLARATION_ANNOTATION_ADAPTER);
+ }
+
+ private ITable.Owner buildTableOwner() {
+ return new ITable.Owner() {
+ public ITextRange getTextRange() {
+ return JavaEntity.this.getTextRange();
+ }
+
+ public ITypeMapping getTypeMapping() {
+ return JavaEntity.this;
+ }
+ };
+ }
+
+ @Override
+ public DeclarationAnnotationAdapter declarationAnnotationAdapter() {
+ return ANNOTATION_ADAPTER;
+ }
+
+ private static DeclarationAnnotationElementAdapter buildNameAdapter() {
+ return new ConversionDeclarationAnnotationElementAdapter(ANNOTATION_ADAPTER, JPA.ENTITY__NAME, false); // false = do not remove annotation when empty
+ }
+
+ /**
+ * check for changes to the 'specifiedJoinColumns' and
+ * 'specifiedInverseJoinColumns' lists so we can notify the
+ * model adapter of any changes;
+ * also listen for changes to the 'defaultJoinColumns' and
+ * 'defaultInverseJoinColumns' lists so we can spank the developer
+ */
+ @Override
+ protected void notifyChanged(Notification notification) {
+ super.notifyChanged(notification);
+ switch (notification.getFeatureID(IEntity.class)) {
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_NAME :
+ this.nameAdapter.setValue(notification.getNewValue());
+ break;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__INHERITANCE_STRATEGY :
+ this.inheritanceStrategyAdapter.setValue(((InheritanceType) notification.getNewValue()).convertToJavaAnnotationValue());
+ break;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_DISCRIMINATOR_VALUE :
+ this.discriminatorValueAdapter.setValue(notification.getNewValue());
+ break;
+ case JpaCoreMappingsPackage.IENTITY__SPECIFIED_ATTRIBUTE_OVERRIDES :
+ this.attributeOverridesChanged(notification);
+ break;
+ case JpaCoreMappingsPackage.IENTITY__SPECIFIED_ASSOCIATION_OVERRIDES :
+ this.associationOverridesChanged(notification);
+ break;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SECONDARY_TABLES :
+ this.secondaryTablesChanged(notification);
+ break;
+ case JpaCoreMappingsPackage.IENTITY__SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS :
+ this.specifiedPrimaryKeyJoinColumnsChanged(notification);
+ break;
+ case JpaCoreMappingsPackage.IENTITY__NAMED_QUERIES :
+ this.namedQueriesChanged(notification);
+ break;
+ case JpaCoreMappingsPackage.IENTITY__NAMED_NATIVE_QUERIES :
+ this.namedNativeQueriesChanged(notification);
+ break;
+ case JpaCoreMappingsPackage.IENTITY__TABLE_GENERATOR :
+ attributeChanged(notification.getNewValue(), this.tableGeneratorAnnotationAdapter);
+ break;
+ case JpaCoreMappingsPackage.IENTITY__SEQUENCE_GENERATOR :
+ attributeChanged(notification.getNewValue(), this.sequenceGeneratorAnnotationAdapter);
+ default :
+ break;
+ }
+ }
+
+ void attributeOverridesChanged(Notification notification) {
+ switch (notification.getEventType()) {
+ case Notification.ADD :
+ attributeOverrideAdded(notification.getPosition(), (JavaAttributeOverride) notification.getNewValue());
+ break;
+ case Notification.ADD_MANY :
+ attributeOverridesAdded(notification.getPosition(), (List<JavaAttributeOverride>) notification.getNewValue());
+ break;
+ case Notification.REMOVE :
+ attributeOverrideRemoved(notification.getPosition(), (JavaAttributeOverride) notification.getOldValue());
+ break;
+ case Notification.REMOVE_MANY :
+ if (notification.getPosition() == Notification.NO_INDEX) {
+ attributeOverridesCleared((List) notification.getOldValue());
+ }
+ else {
+ // Notification.getNewValue() returns an array of the positions of objects that were removed
+ attributeOverridesRemoved((int[]) notification.getNewValue(), (List) notification.getOldValue());
+ }
+ break;
+ case Notification.SET :
+ if (!notification.isTouch()) {
+ attributeOverrideSet(notification.getPosition(), (JavaAttributeOverride) notification.getOldValue(), (JavaAttributeOverride) notification.getNewValue());
+ }
+ break;
+ case Notification.MOVE :
+ // Notification.getOldValue() returns the source index
+ // Notification.getPositon() returns the target index
+ // Notification.getNewValue() returns the moved object
+ attributeOverrideMoved(notification.getOldIntValue(), notification.getPosition(), (JavaAttributeOverride) notification.getNewValue());
+ break;
+ default :
+ break;
+ }
+ }
+
+ void associationOverridesChanged(Notification notification) {
+ switch (notification.getEventType()) {
+ case Notification.ADD :
+ associationOverrideAdded(notification.getPosition(), (JavaAssociationOverride) notification.getNewValue());
+ break;
+ case Notification.ADD_MANY :
+ associationOverridesAdded(notification.getPosition(), (List<JavaAssociationOverride>) notification.getNewValue());
+ break;
+ case Notification.REMOVE :
+ associationOverrideRemoved(notification.getPosition(), (JavaAssociationOverride) notification.getOldValue());
+ break;
+ case Notification.REMOVE_MANY :
+ if (notification.getPosition() == Notification.NO_INDEX) {
+ associationOverridesCleared((List<JavaAssociationOverride>) notification.getOldValue());
+ }
+ else {
+ // Notification.getNewValue() returns an array of the positions of objects that were removed
+ associationOverridesRemoved((int[]) notification.getNewValue(), (List<JavaAssociationOverride>) notification.getOldValue());
+ }
+ break;
+ case Notification.SET :
+ if (!notification.isTouch()) {
+ associationOverrideSet(notification.getPosition(), (JavaAssociationOverride) notification.getOldValue(), (JavaAssociationOverride) notification.getNewValue());
+ }
+ break;
+ case Notification.MOVE :
+ // Notification.getOldValue() returns the source index
+ // Notification.getPositon() returns the target index
+ // Notification.getNewValue() returns the moved object
+ associationOverrideMoved(notification.getOldIntValue(), notification.getPosition(), (JavaAssociationOverride) notification.getNewValue());
+ break;
+ default :
+ break;
+ }
+ }
+
+ void defaultJoinColumnsChanged(Notification notification) {
+ throw new IllegalStateException("'defaultJoinColumns' cannot be changed");
+ }
+
+ void secondaryTablesChanged(Notification notification) {
+ switch (notification.getEventType()) {
+ case Notification.ADD :
+ secondaryTableAdded(notification.getPosition(), (JavaSecondaryTable) notification.getNewValue());
+ break;
+ case Notification.ADD_MANY :
+ secondaryTablesAdded(notification.getPosition(), (List) notification.getNewValue());
+ break;
+ case Notification.REMOVE :
+ secondaryTableRemoved(notification.getPosition(), (JavaSecondaryTable) notification.getOldValue());
+ break;
+ case Notification.REMOVE_MANY :
+ if (notification.getPosition() == Notification.NO_INDEX) {
+ secondaryTablesCleared((List) notification.getOldValue());
+ }
+ else {
+ // Notification.getNewValue() returns an array of the positions of objects that were removed
+ secondaryTablesRemoved((int[]) notification.getNewValue(), (List) notification.getOldValue());
+ }
+ break;
+ case Notification.SET :
+ if (!notification.isTouch()) {
+ secondaryTableSet(notification.getPosition(), (JavaSecondaryTable) notification.getOldValue(), (JavaSecondaryTable) notification.getNewValue());
+ }
+ break;
+ case Notification.MOVE :
+ // Notification.getOldValue() returns the source index
+ // Notification.getPositon() returns the target index
+ // Notification.getNewValue() returns the moved object
+ secondaryTableMoved(notification.getOldIntValue(), notification.getPosition(), (ISecondaryTable) notification.getNewValue());
+ break;
+ default :
+ break;
+ }
+ }
+
+ void specifiedPrimaryKeyJoinColumnsChanged(Notification notification) {
+ switch (notification.getEventType()) {
+ case Notification.ADD :
+ specifiedPrimaryKeyJoinColumnAdded(notification.getPosition(), (JavaPrimaryKeyJoinColumn) notification.getNewValue());
+ break;
+ case Notification.ADD_MANY :
+ specifiedPrimaryKeyJoinColumnsAdded(notification.getPosition(), (List) notification.getNewValue());
+ break;
+ case Notification.REMOVE :
+ specifiedPrimaryKeyJoinColumnRemoved(notification.getPosition(), (JavaPrimaryKeyJoinColumn) notification.getOldValue());
+ break;
+ case Notification.REMOVE_MANY :
+ if (notification.getPosition() == Notification.NO_INDEX) {
+ specifiedPrimaryKeyJoinColumnsCleared((List) notification.getOldValue());
+ }
+ else {
+ // Notification.getNewValue() returns an array of the positions of objects that were removed
+ specifiedPrimaryKeyJoinColumnsRemoved((int[]) notification.getNewValue(), (List) notification.getOldValue());
+ }
+ break;
+ case Notification.SET :
+ if (!notification.isTouch()) {
+ specifiedPrimaryKeyJoinColumnSet(notification.getPosition(), (JavaPrimaryKeyJoinColumn) notification.getOldValue(), (JavaPrimaryKeyJoinColumn) notification.getNewValue());
+ }
+ break;
+ case Notification.MOVE :
+ // Notification.getOldValue() returns the source index
+ // Notification.getPositon() returns the target index
+ // Notification.getNewValue() returns the moved object
+ specifiedPrimaryKeyJoinColumnMoved(notification.getOldIntValue(), notification.getPosition(), (JavaPrimaryKeyJoinColumn) notification.getNewValue());
+ break;
+ default :
+ break;
+ }
+ }
+
+ void namedQueriesChanged(Notification notification) {
+ switch (notification.getEventType()) {
+ case Notification.ADD :
+ namedQueryAdded(notification.getPosition(), (JavaNamedQuery) notification.getNewValue());
+ break;
+ case Notification.ADD_MANY :
+ namedQueriesAdded(notification.getPosition(), (List<JavaNamedQuery>) notification.getNewValue());
+ break;
+ case Notification.REMOVE :
+ namedQueryRemoved(notification.getPosition(), (JavaNamedQuery) notification.getOldValue());
+ break;
+ case Notification.REMOVE_MANY :
+ if (notification.getPosition() == Notification.NO_INDEX) {
+ namedQueriesCleared((List<JavaNamedQuery>) notification.getOldValue());
+ }
+ else {
+ // Notification.getNewValue() returns an array of the positions of objects that were removed
+ namedQueriesRemoved((int[]) notification.getNewValue(), (List<JavaNamedQuery>) notification.getOldValue());
+ }
+ break;
+ case Notification.SET :
+ if (!notification.isTouch()) {
+ namedQuerySet(notification.getPosition(), (JavaNamedQuery) notification.getOldValue(), (JavaNamedQuery) notification.getNewValue());
+ }
+ break;
+ case Notification.MOVE :
+ // Notification.getOldValue() returns the source index
+ // Notification.getPositon() returns the target index
+ // Notification.getNewValue() returns the moved object
+ namedQueryMoved(notification.getOldIntValue(), notification.getPosition(), (JavaNamedQuery) notification.getNewValue());
+ break;
+ default :
+ break;
+ }
+ }
+
+ void namedNativeQueriesChanged(Notification notification) {
+ switch (notification.getEventType()) {
+ case Notification.ADD :
+ namedNativeQueryAdded(notification.getPosition(), (JavaNamedNativeQuery) notification.getNewValue());
+ break;
+ case Notification.ADD_MANY :
+ namedNativeQueriesAdded(notification.getPosition(), (List<JavaNamedNativeQuery>) notification.getNewValue());
+ break;
+ case Notification.REMOVE :
+ namedNativeQueryRemoved(notification.getPosition(), (JavaNamedNativeQuery) notification.getOldValue());
+ break;
+ case Notification.REMOVE_MANY :
+ if (notification.getPosition() == Notification.NO_INDEX) {
+ namedNativeQueriesCleared((List<JavaNamedNativeQuery>) notification.getOldValue());
+ }
+ else {
+ // Notification.getNewValue() returns an array of the positions of objects that were removed
+ namedNativeQueriesRemoved((int[]) notification.getNewValue(), (List<JavaNamedNativeQuery>) notification.getOldValue());
+ }
+ break;
+ case Notification.SET :
+ if (!notification.isTouch()) {
+ namedNativeQuerySet(notification.getPosition(), (JavaNamedNativeQuery) notification.getOldValue(), (JavaNamedNativeQuery) notification.getNewValue());
+ }
+ break;
+ case Notification.MOVE :
+ // Notification.getOldValue() returns the source index
+ // Notification.getPositon() returns the target index
+ // Notification.getNewValue() returns the moved object
+ namedNativeQueryMoved(notification.getOldIntValue(), notification.getPosition(), (JavaNamedNativeQuery) notification.getNewValue());
+ break;
+ default :
+ break;
+ }
+ }
+
+ // ********** jpa model -> java annotations **********
+ /**
+ * slide over all the annotations that follow the new attribute override
+ */
+ public void attributeOverrideAdded(int index, JavaAttributeOverride attributeOverride) {
+ //JoinColumn was added to persistence model when udating from java, do not need
+ //to edit the java in this case. TODO is there a better way to handle this??
+ if (attributeOverride.annotation(getType().astRoot()) == null) {
+ this.synchAttributeOverrideAnnotationsAfterAdd(index + 1);
+ attributeOverride.newAnnotation();
+ }
+ }
+
+ public void attributeOverridesAdded(int index, List<JavaAttributeOverride> attributeOverrides) {
+ //JoinColumn was added to persistence model when udating from java, do not need
+ //to edit the java in this case. TODO is there a better way to handle this??
+ if (!attributeOverrides.isEmpty() && (attributeOverrides.get(0).annotation(getType().astRoot()) == null)) {
+ this.synchAttributeOverrideAnnotationsAfterAdd(index + attributeOverrides.size());
+ for (JavaAttributeOverride attributeOverride : attributeOverrides) {
+ attributeOverride.newAnnotation();
+ }
+ }
+ }
+
+ public void attributeOverrideRemoved(int index, JavaAttributeOverride attributeOverride) {
+ attributeOverride.removeAnnotation();
+ this.synchAttributeOverrideAnnotationsAfterRemove(index);
+ }
+
+ public void attributeOverridesRemoved(int[] indexes, List<JavaAttributeOverride> attributeOverrides) {
+ for (JavaAttributeOverride attributeOverride : attributeOverrides) {
+ attributeOverride.removeAnnotation();
+ }
+ this.synchAttributeOverrideAnnotationsAfterRemove(indexes[0]);
+ }
+
+ public void attributeOverridesCleared(List<JavaAttributeOverride> attributeOverrides) {
+ for (JavaAttributeOverride attributeOverride : attributeOverrides) {
+ attributeOverride.removeAnnotation();
+ }
+ }
+
+ public void attributeOverrideSet(int index, JavaAttributeOverride oldAttributeOverride, JavaAttributeOverride newAttributeOverride) {
+ newAttributeOverride.newAnnotation();
+ }
+
+ public void attributeOverrideMoved(int sourceIndex, int targetIndex, JavaAttributeOverride attributeOverride) {
+ List<IAttributeOverride> attributeOverrides = getSpecifiedAttributeOverrides();
+ int begin = Math.min(sourceIndex, targetIndex);
+ int end = Math.max(sourceIndex, targetIndex);
+ for (int i = begin; i-- > end;) {
+ this.synch((JavaAttributeOverride) attributeOverrides.get(i), i);
+ }
+ }
+
+ /**
+ * synchronize the annotations with the model join columns,
+ * starting at the end of the list to prevent overlap
+ */
+ private void synchAttributeOverrideAnnotationsAfterAdd(int index) {
+ List<IAttributeOverride> attributeOverrides = getSpecifiedAttributeOverrides();
+ for (int i = attributeOverrides.size(); i-- > index;) {
+ this.synch((JavaAttributeOverride) attributeOverrides.get(i), i);
+ }
+ }
+
+ /**
+ * synchronize the annotations with the model join columns,
+ * starting at the specified index to prevent overlap
+ */
+ private void synchAttributeOverrideAnnotationsAfterRemove(int index) {
+ List<IAttributeOverride> attributeOverrides = getSpecifiedAttributeOverrides();
+ for (int i = index; i < attributeOverrides.size(); i++) {
+ this.synch((JavaAttributeOverride) attributeOverrides.get(i), i);
+ }
+ }
+
+ private void synch(JavaAttributeOverride attributeOverride, int index) {
+ attributeOverride.moveAnnotation(index);
+ }
+
+ /**
+ * slide over all the annotations that follow the new association override
+ */
+ public void associationOverrideAdded(int index, JavaAssociationOverride associationOverride) {
+ //JoinColumn was added to persistence model when udating from java, do not need
+ //to edit the java in this case. TODO is there a better way to handle this??
+ if (associationOverride.annotation(getType().astRoot()) == null) {
+ this.synchAssociationOverrideAnnotationsAfterAdd(index + 1);
+ associationOverride.newAnnotation();
+ }
+ }
+
+ public void associationOverridesAdded(int index, List<JavaAssociationOverride> associationOverrides) {
+ //JoinColumn was added to persistence model when udating from java, do not need
+ //to edit the java in this case. TODO is there a better way to handle this??
+ if (!associationOverrides.isEmpty() && (associationOverrides.get(0).annotation(getType().astRoot()) == null)) {
+ this.synchAssociationOverrideAnnotationsAfterAdd(index + associationOverrides.size());
+ for (JavaAssociationOverride associationOverride : associationOverrides) {
+ associationOverride.newAnnotation();
+ }
+ }
+ }
+
+ public void associationOverrideRemoved(int index, JavaAssociationOverride associationOverride) {
+ associationOverride.removeAnnotation();
+ this.synchAssociationOverrideAnnotationsAfterRemove(index);
+ }
+
+ public void associationOverridesRemoved(int[] indexes, List<JavaAssociationOverride> associationOverrides) {
+ for (JavaAssociationOverride associationOverride : associationOverrides) {
+ associationOverride.removeAnnotation();
+ }
+ this.synchAssociationOverrideAnnotationsAfterRemove(indexes[0]);
+ }
+
+ public void associationOverridesCleared(List<JavaAssociationOverride> associationOverrides) {
+ for (JavaAssociationOverride associationOverride : associationOverrides) {
+ associationOverride.removeAnnotation();
+ }
+ }
+
+ public void associationOverrideSet(int index, JavaAssociationOverride oldAssociationOverride, JavaAssociationOverride newAssociationOverride) {
+ newAssociationOverride.newAnnotation();
+ }
+
+ public void associationOverrideMoved(int sourceIndex, int targetIndex, JavaAssociationOverride associationOverride) {
+ List<IAssociationOverride> assocationOverrides = getSpecifiedAssociationOverrides();
+ int begin = Math.min(sourceIndex, targetIndex);
+ int end = Math.max(sourceIndex, targetIndex);
+ for (int i = begin; i-- > end;) {
+ this.synch((JavaAssociationOverride) assocationOverrides.get(i), i);
+ }
+ }
+
+ /**
+ * synchronize the annotations with the model join columns,
+ * starting at the end of the list to prevent overlap
+ */
+ private void synchAssociationOverrideAnnotationsAfterAdd(int index) {
+ List<IAssociationOverride> associationOverrides = getSpecifiedAssociationOverrides();
+ for (int i = associationOverrides.size(); i-- > index;) {
+ this.synch((JavaAssociationOverride) associationOverrides.get(i), i);
+ }
+ }
+
+ /**
+ * synchronize the annotations with the model join columns,
+ * starting at the specified index to prevent overlap
+ */
+ private void synchAssociationOverrideAnnotationsAfterRemove(int index) {
+ List<IAssociationOverride> assocationOverrides = getSpecifiedAssociationOverrides();
+ for (int i = index; i < assocationOverrides.size(); i++) {
+ this.synch((JavaAssociationOverride) assocationOverrides.get(i), i);
+ }
+ }
+
+ private void synch(JavaAssociationOverride associationOverride, int index) {
+ associationOverride.moveAnnotation(index);
+ }
+
+ /**
+ * slide over all the annotations that follow the new secondary table
+ */
+ // bjv look at this
+ public void secondaryTableAdded(int index, JavaSecondaryTable secondaryTable) {
+ //JoinColumn was added to persistence model when udating from java, do not need
+ //to edit the java in this case. TODO is there a better way to handle this??
+ if (secondaryTable.annotation(getType().astRoot()) == null) {
+ this.synchSecondaryTableAnnotationsAfterAdd(index + 1);
+ secondaryTable.newAnnotation();
+ }
+ }
+
+ public void secondaryTablesAdded(int index, List<ISecondaryTable> secondaryTables) {
+ //JoinColumn was added to persistence model when udating from java, do not need
+ //to edit the java in this case. TODO is there a better way to handle this??
+ if (!secondaryTables.isEmpty() && ((JavaSecondaryTable) secondaryTables.get(0)).annotation(getType().astRoot()) == null) {
+ this.synchSecondaryTableAnnotationsAfterAdd(index + secondaryTables.size());
+ for (Iterator<ISecondaryTable> stream = secondaryTables.iterator(); stream.hasNext();) {
+ JavaSecondaryTable secondaryTable = (JavaSecondaryTable) stream.next();
+ secondaryTable.newAnnotation();
+ }
+ }
+ }
+
+ public void secondaryTableRemoved(int index, JavaSecondaryTable secondaryTable) {
+ secondaryTable.removeAnnotation();
+ this.synchSecondaryTableAnnotationsAfterRemove(index);
+ }
+
+ public void secondaryTablesRemoved(int[] indexes, List<ISecondaryTable> secondaryTables) {
+ for (Iterator<ISecondaryTable> stream = secondaryTables.iterator(); stream.hasNext();) {
+ JavaSecondaryTable secondaryTable = (JavaSecondaryTable) stream.next();
+ secondaryTable.removeAnnotation();
+ }
+ this.synchSecondaryTableAnnotationsAfterRemove(indexes[0]);
+ }
+
+ public void secondaryTablesCleared(List<ISecondaryTable> secondaryTables) {
+ for (Iterator<ISecondaryTable> stream = secondaryTables.iterator(); stream.hasNext();) {
+ JavaSecondaryTable secondaryTable = (JavaSecondaryTable) stream.next();
+ secondaryTable.removeAnnotation();
+ }
+ }
+
+ public void secondaryTableSet(int index, JavaSecondaryTable oldSecondaryTable, JavaSecondaryTable newSecondaryTable) {
+ newSecondaryTable.newAnnotation();
+ }
+
+ public void secondaryTableMoved(int sourceIndex, int targetIndex, ISecondaryTable secondaryTable) {
+ List<ISecondaryTable> secondaryTables = getSecondaryTables();
+ int begin = Math.min(sourceIndex, targetIndex);
+ int end = Math.max(sourceIndex, targetIndex);
+ for (int i = begin; i-- > end;) {
+ this.synch((JavaSecondaryTable) secondaryTables.get(i), i);
+ }
+ }
+
+ /**
+ * synchronize the annotations with the model join columns,
+ * starting at the end of the list to prevent overlap
+ */
+ private void synchSecondaryTableAnnotationsAfterAdd(int index) {
+ List<ISecondaryTable> secondaryTables = getSecondaryTables();
+ for (int i = secondaryTables.size(); i-- > index;) {
+ this.synch((JavaSecondaryTable) secondaryTables.get(i), i);
+ }
+ }
+
+ /**
+ * synchronize the annotations with the model join columns,
+ * starting at the specified index to prevent overlap
+ */
+ private void synchSecondaryTableAnnotationsAfterRemove(int index) {
+ List<ISecondaryTable> secondaryTables = getSecondaryTables();
+ for (int i = index; i < secondaryTables.size(); i++) {
+ this.synch((JavaSecondaryTable) secondaryTables.get(i), i);
+ }
+ }
+
+ private void synch(JavaSecondaryTable secondaryTable, int index) {
+ secondaryTable.moveAnnotation(index);
+ }
+
+ /**
+ * slide over all the annotations that follow the new
+ * primary key join column
+ */
+ // bjv look at this
+ public void specifiedPrimaryKeyJoinColumnAdded(int index, JavaPrimaryKeyJoinColumn primaryKeyJoinColumn) {
+ if (primaryKeyJoinColumn.annotation(getType().astRoot()) == null) {
+ this.synchPKJCAnnotationsAfterAdd(index + 1);
+ primaryKeyJoinColumn.newAnnotation();
+ }
+ }
+
+ public void specifiedPrimaryKeyJoinColumnsAdded(int index, List<IPrimaryKeyJoinColumn> primaryKeyJoinColumns) {
+ if (!primaryKeyJoinColumns.isEmpty() && ((JavaPrimaryKeyJoinColumn) primaryKeyJoinColumns.get(0)).annotation(getType().astRoot()) == null) {
+ this.synchPKJCAnnotationsAfterAdd(index + primaryKeyJoinColumns.size());
+ for (Iterator<IPrimaryKeyJoinColumn> stream = primaryKeyJoinColumns.iterator(); stream.hasNext();) {
+ JavaPrimaryKeyJoinColumn primaryKeyJoinColumn = (JavaPrimaryKeyJoinColumn) stream.next();
+ primaryKeyJoinColumn.newAnnotation();
+ }
+ }
+ }
+
+ public void specifiedPrimaryKeyJoinColumnRemoved(int index, JavaPrimaryKeyJoinColumn primaryKeyJoinColumn) {
+ primaryKeyJoinColumn.removeAnnotation();
+ this.synchPKJCAnnotationsAfterRemove(index);
+ }
+
+ public void specifiedPrimaryKeyJoinColumnsRemoved(int[] indexes, List<IPrimaryKeyJoinColumn> primaryKeyJoinColumns) {
+ for (Iterator<IPrimaryKeyJoinColumn> stream = primaryKeyJoinColumns.iterator(); stream.hasNext();) {
+ JavaPrimaryKeyJoinColumn primaryKeyJoinColumn = (JavaPrimaryKeyJoinColumn) stream.next();
+ primaryKeyJoinColumn.removeAnnotation();
+ }
+ this.synchPKJCAnnotationsAfterRemove(indexes[0]);
+ }
+
+ public void specifiedPrimaryKeyJoinColumnsCleared(List primaryKeyJoinColumns) {
+ for (Iterator<IPrimaryKeyJoinColumn> stream = primaryKeyJoinColumns.iterator(); stream.hasNext();) {
+ JavaPrimaryKeyJoinColumn primaryKeyJoinColumn = (JavaPrimaryKeyJoinColumn) stream.next();
+ primaryKeyJoinColumn.removeAnnotation();
+ }
+ }
+
+ public void specifiedPrimaryKeyJoinColumnSet(int index, JavaPrimaryKeyJoinColumn oldPrimaryKeyJoinColumn, JavaPrimaryKeyJoinColumn newPrimaryKeyJoinColumn) {
+ newPrimaryKeyJoinColumn.newAnnotation();
+ }
+
+ public void specifiedPrimaryKeyJoinColumnMoved(int sourceIndex, int targetIndex, JavaPrimaryKeyJoinColumn primaryKeyJoinColumn) {
+ List<IPrimaryKeyJoinColumn> primaryKeyJoinColumns = getSpecifiedPrimaryKeyJoinColumns();
+ int begin = Math.min(sourceIndex, targetIndex);
+ int end = Math.max(sourceIndex, targetIndex);
+ for (int i = begin; i-- > end;) {
+ this.synch((JavaPrimaryKeyJoinColumn) primaryKeyJoinColumns.get(i), i);
+ }
+ }
+
+ /**
+ * synchronize the annotations with the model join columns,
+ * starting at the end of the list to prevent overlap
+ */
+ private void synchPKJCAnnotationsAfterAdd(int index) {
+ List<IPrimaryKeyJoinColumn> primaryKeyJoinColumns = getSpecifiedPrimaryKeyJoinColumns();
+ for (int i = primaryKeyJoinColumns.size(); i-- > index;) {
+ this.synch((JavaPrimaryKeyJoinColumn) primaryKeyJoinColumns.get(i), i);
+ }
+ }
+
+ /**
+ * synchronize the annotations with the model join columns,
+ * starting at the specified index to prevent overlap
+ */
+ private void synchPKJCAnnotationsAfterRemove(int index) {
+ List primaryKeyJoinColumns = getSpecifiedPrimaryKeyJoinColumns();
+ for (int i = index; i < primaryKeyJoinColumns.size(); i++) {
+ this.synch((JavaPrimaryKeyJoinColumn) primaryKeyJoinColumns.get(i), i);
+ }
+ }
+
+ private void synch(JavaPrimaryKeyJoinColumn primaryKeyJoinColumn, int index) {
+ primaryKeyJoinColumn.moveAnnotation(index);
+ }
+
+ /**
+ * slide over all the annotations that follow the new secondary table
+ */
+ // bjv look at this
+ public void namedQueryAdded(int index, JavaNamedQuery namedQuery) {
+ //JoinColumn was added to persistence model when udating from java, do not need
+ //to edit the java in this case. TODO is there a better way to handle this??
+ if (namedQuery.annotation(getType().astRoot()) == null) {
+ this.synchNamedQueryAnnotationsAfterAdd(index + 1);
+ namedQuery.newAnnotation();
+ }
+ }
+
+ public void namedQueriesAdded(int index, List<JavaNamedQuery> namedQueries) {
+ //JoinColumn was added to persistence model when udating from java, do not need
+ //to edit the java in this case. TODO is there a better way to handle this??
+ if (!namedQueries.isEmpty() && namedQueries.get(0).annotation(getType().astRoot()) == null) {
+ this.synchNamedQueryAnnotationsAfterAdd(index + namedQueries.size());
+ for (JavaNamedQuery namedQuery : namedQueries) {
+ namedQuery.newAnnotation();
+ }
+ }
+ }
+
+ public void namedQueryRemoved(int index, JavaNamedQuery namedQuery) {
+ namedQuery.removeAnnotation();
+ this.synchNamedQueryAnnotationsAfterRemove(index);
+ }
+
+ public void namedQueriesRemoved(int[] indexes, List<JavaNamedQuery> namedQueries) {
+ for (JavaNamedQuery namedQuery : namedQueries) {
+ namedQuery.removeAnnotation();
+ }
+ this.synchNamedQueryAnnotationsAfterRemove(indexes[0]);
+ }
+
+ public void namedQueriesCleared(List<JavaNamedQuery> namedQueries) {
+ for (JavaNamedQuery namedQuery : namedQueries) {
+ namedQuery.removeAnnotation();
+ }
+ }
+
+ public void namedQuerySet(int index, JavaNamedQuery oldNamedQuery, JavaNamedQuery newNamedQuery) {
+ newNamedQuery.newAnnotation();
+ }
+
+ public void namedQueryMoved(int sourceIndex, int targetIndex, JavaNamedQuery namedQuery) {
+ List<INamedQuery> namedQueries = getNamedQueries();
+ int begin = Math.min(sourceIndex, targetIndex);
+ int end = Math.max(sourceIndex, targetIndex);
+ for (int i = begin; i-- > end;) {
+ this.synch((JavaNamedQuery) namedQueries.get(i), i);
+ }
+ }
+
+ /**
+ * synchronize the annotations with the model join columns,
+ * starting at the end of the list to prevent overlap
+ */
+ private void synchNamedQueryAnnotationsAfterAdd(int index) {
+ List<INamedQuery> namedQueries = getNamedQueries();
+ for (int i = namedQueries.size(); i-- > index;) {
+ this.synch((JavaNamedQuery) namedQueries.get(i), i);
+ }
+ }
+
+ /**
+ * synchronize the annotations with the model join columns,
+ * starting at the specified index to prevent overlap
+ */
+ private void synchNamedQueryAnnotationsAfterRemove(int index) {
+ List<INamedQuery> namedQueries = getNamedQueries();
+ for (int i = index; i < namedQueries.size(); i++) {
+ this.synch((JavaNamedQuery) namedQueries.get(i), i);
+ }
+ }
+
+ private void synch(JavaNamedQuery namedQuery, int index) {
+ namedQuery.moveAnnotation(index);
+ }
+
+ /**
+ * slide over all the annotations that follow the new secondary table
+ */
+ // bjv look at this
+ public void namedNativeQueryAdded(int index, JavaNamedNativeQuery namedQuery) {
+ //JoinColumn was added to persistence model when udating from java, do not need
+ //to edit the java in this case. TODO is there a better way to handle this??
+ if (namedQuery.annotation(getType().astRoot()) == null) {
+ this.synchNamedNativeQueryAnnotationsAfterAdd(index + 1);
+ namedQuery.newAnnotation();
+ }
+ }
+
+ public void namedNativeQueriesAdded(int index, List<JavaNamedNativeQuery> namedQueries) {
+ //JoinColumn was added to persistence model when udating from java, do not need
+ //to edit the java in this case. TODO is there a better way to handle this??
+ if (!namedQueries.isEmpty() && namedQueries.get(0).annotation(getType().astRoot()) == null) {
+ this.synchNamedNativeQueryAnnotationsAfterAdd(index + namedQueries.size());
+ for (JavaNamedNativeQuery namedQuery : namedQueries) {
+ namedQuery.newAnnotation();
+ }
+ }
+ }
+
+ public void namedNativeQueryRemoved(int index, JavaNamedNativeQuery namedQuery) {
+ namedQuery.removeAnnotation();
+ this.synchNamedNativeQueryAnnotationsAfterRemove(index);
+ }
+
+ public void namedNativeQueriesRemoved(int[] indexes, List<JavaNamedNativeQuery> namedQueries) {
+ for (JavaNamedNativeQuery namedQuery : namedQueries) {
+ namedQuery.removeAnnotation();
+ }
+ this.synchNamedNativeQueryAnnotationsAfterRemove(indexes[0]);
+ }
+
+ public void namedNativeQueriesCleared(List<JavaNamedNativeQuery> namedQueries) {
+ for (JavaNamedNativeQuery namedQuery : namedQueries) {
+ namedQuery.removeAnnotation();
+ }
+ }
+
+ public void namedNativeQuerySet(int index, JavaNamedNativeQuery oldNamedQuery, JavaNamedNativeQuery newNamedQuery) {
+ newNamedQuery.newAnnotation();
+ }
+
+ public void namedNativeQueryMoved(int sourceIndex, int targetIndex, JavaNamedNativeQuery namedQuery) {
+ List<INamedNativeQuery> namedQueries = getNamedNativeQueries();
+ int begin = Math.min(sourceIndex, targetIndex);
+ int end = Math.max(sourceIndex, targetIndex);
+ for (int i = begin; i-- > end;) {
+ this.synch((JavaNamedNativeQuery) namedQueries.get(i), i);
+ }
+ }
+
+ /**
+ * synchronize the annotations with the model join columns,
+ * starting at the end of the list to prevent overlap
+ */
+ private void synchNamedNativeQueryAnnotationsAfterAdd(int index) {
+ List<INamedNativeQuery> namedQueries = getNamedNativeQueries();
+ for (int i = namedQueries.size(); i-- > index;) {
+ this.synch((JavaNamedNativeQuery) namedQueries.get(i), i);
+ }
+ }
+
+ /**
+ * synchronize the annotations with the model join columns,
+ * starting at the specified index to prevent overlap
+ */
+ private void synchNamedNativeQueryAnnotationsAfterRemove(int index) {
+ List<INamedNativeQuery> namedQueries = getNamedNativeQueries();
+ for (int i = index; i < namedQueries.size(); i++) {
+ this.synch((JavaNamedNativeQuery) namedQueries.get(i), i);
+ }
+ }
+
+ private void synch(JavaNamedNativeQuery namedQuery, int index) {
+ namedQuery.moveAnnotation(index);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_ENTITY;
+ }
+
+ @Override
+ public String getName() {
+ return (this.getSpecifiedName() == null) ? this.getDefaultName() : this.getSpecifiedName();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Name</em>' attribute.
+ * @see #setSpecifiedName(String)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIEntity_SpecifiedName()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedName() {
+ return specifiedName;
+ }
+
+ private String specifiedNameFromJava() {
+ return (String) this.getType().annotationElementValue(NAME_ADAPTER);
+ }
+
+ private String defaultNameFromJava() {
+ return super.getName();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaEntity#getSpecifiedName <em>Specified Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Name</em>' attribute.
+ * @see #getSpecifiedName()
+ * @generated
+ */
+ public void setSpecifiedName(String newSpecifiedName) {
+ String oldSpecifiedName = specifiedName;
+ specifiedName = newSpecifiedName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_NAME, oldSpecifiedName, specifiedName));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIEntity_DefaultName()
+ * @model changeable="false"
+ * @generated
+ */
+ public String getDefaultName() {
+ return defaultName;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Table</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Table</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Table</em>' containment reference.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIEntity_Table()
+ * @model containment="true" required="true" changeable="false"
+ * @generated
+ */
+ public ITable getTable() {
+ return table;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetTable(ITable newTable, NotificationChain msgs) {
+ ITable oldTable = table;
+ table = newTable;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_ENTITY__TABLE, oldTable, newTable);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Secondary Tables</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.ISecondaryTable}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Secondary Tables</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>Secondary Tables</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaEntity_SecondaryTables()
+ * @model type="org.eclipse.jpt.core.internal.mappings.ISecondaryTable" containment="true"
+ * @generated
+ */
+ public EList<ISecondaryTable> getSecondaryTables() {
+ if (secondaryTables == null) {
+ secondaryTables = new EObjectContainmentEList<ISecondaryTable>(ISecondaryTable.class, this, JpaJavaMappingsPackage.JAVA_ENTITY__SECONDARY_TABLES);
+ }
+ return secondaryTables;
+ }
+
+ public boolean containsSecondaryTable(String name) {
+ for (ISecondaryTable secondaryTable : getSecondaryTables()) {
+ String secondaryTableName = secondaryTable.getName();
+ if (secondaryTableName != null && secondaryTableName.equals(name)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Inheritance Strategy</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.InheritanceType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Inheritance Strategy</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Inheritance Strategy</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.InheritanceType
+ * @see #setInheritanceStrategy(InheritanceType)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIEntity_InheritanceStrategy()
+ * @model
+ * @generated
+ */
+ public InheritanceType getInheritanceStrategy() {
+ return inheritanceStrategy;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaEntity#getInheritanceStrategy <em>Inheritance Strategy</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Inheritance Strategy</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.InheritanceType
+ * @see #getInheritanceStrategy()
+ * @generated
+ */
+ public void setInheritanceStrategy(InheritanceType newInheritanceStrategy) {
+ InheritanceType oldInheritanceStrategy = inheritanceStrategy;
+ inheritanceStrategy = newInheritanceStrategy == null ? INHERITANCE_STRATEGY_EDEFAULT : newInheritanceStrategy;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_ENTITY__INHERITANCE_STRATEGY, oldInheritanceStrategy, inheritanceStrategy));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Discriminator Column</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Discriminator Column</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Discriminator Column</em>' containment reference.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIEntity_DiscriminatorColumn()
+ * @model containment="true" changeable="false"
+ * @generated
+ */
+ public IDiscriminatorColumn getDiscriminatorColumn() {
+ return discriminatorColumn;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetDiscriminatorColumn(IDiscriminatorColumn newDiscriminatorColumn, NotificationChain msgs) {
+ IDiscriminatorColumn oldDiscriminatorColumn = discriminatorColumn;
+ discriminatorColumn = newDiscriminatorColumn;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_ENTITY__DISCRIMINATOR_COLUMN, oldDiscriminatorColumn, newDiscriminatorColumn);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Sequence Generator</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Sequence Generator</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Sequence Generator</em>' containment reference.
+ * @see #setSequenceGenerator(ISequenceGenerator)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIEntity_SequenceGenerator()
+ * @model containment="true"
+ * @generated
+ */
+ public ISequenceGenerator getSequenceGenerator() {
+ return sequenceGenerator;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetSequenceGenerator(ISequenceGenerator newSequenceGenerator, NotificationChain msgs) {
+ ISequenceGenerator oldSequenceGenerator = sequenceGenerator;
+ sequenceGenerator = newSequenceGenerator;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_ENTITY__SEQUENCE_GENERATOR, oldSequenceGenerator, newSequenceGenerator);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaEntity#getSequenceGenerator <em>Sequence Generator</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Sequence Generator</em>' containment reference.
+ * @see #getSequenceGenerator()
+ * @generated
+ */
+ public void setSequenceGenerator(ISequenceGenerator newSequenceGenerator) {
+ if (newSequenceGenerator != sequenceGenerator) {
+ NotificationChain msgs = null;
+ if (sequenceGenerator != null)
+ msgs = ((InternalEObject) sequenceGenerator).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - JpaJavaMappingsPackage.JAVA_ENTITY__SEQUENCE_GENERATOR, null, msgs);
+ if (newSequenceGenerator != null)
+ msgs = ((InternalEObject) newSequenceGenerator).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - JpaJavaMappingsPackage.JAVA_ENTITY__SEQUENCE_GENERATOR, null, msgs);
+ msgs = basicSetSequenceGenerator(newSequenceGenerator, msgs);
+ if (msgs != null)
+ msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_ENTITY__SEQUENCE_GENERATOR, newSequenceGenerator, newSequenceGenerator));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Table Generator</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Table Generator</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Table Generator</em>' containment reference.
+ * @see #setTableGenerator(ITableGenerator)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIEntity_TableGenerator()
+ * @model containment="true"
+ * @generated
+ */
+ public ITableGenerator getTableGenerator() {
+ return tableGenerator;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetTableGenerator(ITableGenerator newTableGenerator, NotificationChain msgs) {
+ ITableGenerator oldTableGenerator = tableGenerator;
+ tableGenerator = newTableGenerator;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_ENTITY__TABLE_GENERATOR, oldTableGenerator, newTableGenerator);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaEntity#getTableGenerator <em>Table Generator</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Table Generator</em>' containment reference.
+ * @see #getTableGenerator()
+ * @generated
+ */
+ public void setTableGenerator(ITableGenerator newTableGenerator) {
+ if (newTableGenerator != tableGenerator) {
+ NotificationChain msgs = null;
+ if (tableGenerator != null)
+ msgs = ((InternalEObject) tableGenerator).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - JpaJavaMappingsPackage.JAVA_ENTITY__TABLE_GENERATOR, null, msgs);
+ if (newTableGenerator != null)
+ msgs = ((InternalEObject) newTableGenerator).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - JpaJavaMappingsPackage.JAVA_ENTITY__TABLE_GENERATOR, null, msgs);
+ msgs = basicSetTableGenerator(newTableGenerator, msgs);
+ if (msgs != null)
+ msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_ENTITY__TABLE_GENERATOR, newTableGenerator, newTableGenerator));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Discriminator Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Discriminator 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>Default Discriminator Value</em>' attribute.
+ * @see #setDefaultDiscriminatorValue(String)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIEntity_DefaultDiscriminatorValue()
+ * @model
+ * @generated
+ */
+ public String getDefaultDiscriminatorValue() {
+ return defaultDiscriminatorValue;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaEntity#getDefaultDiscriminatorValue <em>Default Discriminator Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Default Discriminator Value</em>' attribute.
+ * @see #getDefaultDiscriminatorValue()
+ * @generated
+ */
+ public void setDefaultDiscriminatorValue(String newDefaultDiscriminatorValue) {
+ String oldDefaultDiscriminatorValue = defaultDiscriminatorValue;
+ defaultDiscriminatorValue = newDefaultDiscriminatorValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_DISCRIMINATOR_VALUE, oldDefaultDiscriminatorValue, defaultDiscriminatorValue));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Discriminator Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Discriminator 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>Specified Discriminator Value</em>' attribute.
+ * @see #setSpecifiedDiscriminatorValue(String)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIEntity_SpecifiedDiscriminatorValue()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedDiscriminatorValue() {
+ return specifiedDiscriminatorValue;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaEntity#getSpecifiedDiscriminatorValue <em>Specified Discriminator Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Discriminator Value</em>' attribute.
+ * @see #getSpecifiedDiscriminatorValue()
+ * @generated
+ */
+ public void setSpecifiedDiscriminatorValue(String newSpecifiedDiscriminatorValue) {
+ String oldSpecifiedDiscriminatorValue = specifiedDiscriminatorValue;
+ specifiedDiscriminatorValue = newSpecifiedDiscriminatorValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_DISCRIMINATOR_VALUE, oldSpecifiedDiscriminatorValue, specifiedDiscriminatorValue));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Discriminator Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Discriminator 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>Discriminator Value</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIEntity_DiscriminatorValue()
+ * @model transient="true" changeable="false" volatile="true" derived="true"
+ * @generated NOT
+ */
+ public String getDiscriminatorValue() {
+ return (this.getSpecifiedDiscriminatorValue() == null) ? getDefaultDiscriminatorValue() : this.getSpecifiedDiscriminatorValue();
+ }
+
+ public EList<IPrimaryKeyJoinColumn> getPrimaryKeyJoinColumns() {
+ return this.getSpecifiedPrimaryKeyJoinColumns().isEmpty() ? this.getDefaultPrimaryKeyJoinColumns() : this.getSpecifiedPrimaryKeyJoinColumns();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Primary Key Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Primary Key Join Columns</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>Specified Primary Key Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIEntity_SpecifiedPrimaryKeyJoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn" containment="true"
+ * @generated
+ */
+ public EList<IPrimaryKeyJoinColumn> getSpecifiedPrimaryKeyJoinColumns() {
+ if (specifiedPrimaryKeyJoinColumns == null) {
+ specifiedPrimaryKeyJoinColumns = new EObjectContainmentEList<IPrimaryKeyJoinColumn>(IPrimaryKeyJoinColumn.class, this, JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS);
+ }
+ return specifiedPrimaryKeyJoinColumns;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Primary Key Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Primary Key Join Columns</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>Default Primary Key Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIEntity_DefaultPrimaryKeyJoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn" containment="true"
+ * @generated
+ */
+ public EList<IPrimaryKeyJoinColumn> getDefaultPrimaryKeyJoinColumns() {
+ if (defaultPrimaryKeyJoinColumns == null) {
+ defaultPrimaryKeyJoinColumns = new EObjectContainmentEList<IPrimaryKeyJoinColumn>(IPrimaryKeyJoinColumn.class, this, JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_PRIMARY_KEY_JOIN_COLUMNS);
+ }
+ return defaultPrimaryKeyJoinColumns;
+ }
+
+ public EList<IAttributeOverride> getAttributeOverrides() {
+ EList<IAttributeOverride> list = new BasicEList<IAttributeOverride>();
+ list.addAll(getSpecifiedAttributeOverrides());
+ list.addAll(getDefaultAttributeOverrides());
+ return list;
+ }
+
+ public boolean containsAttributeOverride(String name) {
+ return containsAttributeOverride(name, getAttributeOverrides());
+ }
+
+ public boolean containsSpecifiedAttributeOverride(String name) {
+ return containsAttributeOverride(name, getSpecifiedAttributeOverrides());
+ }
+
+ private boolean containsAttributeOverride(String name, List<IAttributeOverride> attributeOverrides) {
+ for (IAttributeOverride attributeOverride : attributeOverrides) {
+ String attributeOverrideName = attributeOverride.getName();
+ if (attributeOverrideName != null && attributeOverrideName.equals(name)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public boolean containsAssociationOverride(String name) {
+ return containsAssociationOverride(name, getAssociationOverrides());
+ }
+
+ public boolean containsSpecifiedAssociationOverride(String name) {
+ return containsAssociationOverride(name, getSpecifiedAssociationOverrides());
+ }
+
+ private boolean containsAssociationOverride(String name, List<IAssociationOverride> associationOverrides) {
+ for (IAssociationOverride associationOverride : associationOverrides) {
+ String overrideName = associationOverride.getName();
+ if (overrideName != null && overrideName.equals(name)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Attribute Overrides</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Attribute Overrides</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>Specified Attribute Overrides</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIEntity_SpecifiedAttributeOverrides()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IAttributeOverride" containment="true"
+ * @generated
+ */
+ public EList<IAttributeOverride> getSpecifiedAttributeOverrides() {
+ if (specifiedAttributeOverrides == null) {
+ specifiedAttributeOverrides = new EObjectContainmentEList<IAttributeOverride>(IAttributeOverride.class, this, JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_ATTRIBUTE_OVERRIDES);
+ }
+ return specifiedAttributeOverrides;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Attribute Overrides</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Attribute Overrides</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>Default Attribute Overrides</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIEntity_DefaultAttributeOverrides()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IAttributeOverride" containment="true"
+ * @generated
+ */
+ public EList<IAttributeOverride> getDefaultAttributeOverrides() {
+ if (defaultAttributeOverrides == null) {
+ defaultAttributeOverrides = new EObjectContainmentEList<IAttributeOverride>(IAttributeOverride.class, this, JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_ATTRIBUTE_OVERRIDES);
+ }
+ return defaultAttributeOverrides;
+ }
+
+ public EList<IAssociationOverride> getAssociationOverrides() {
+ EList<IAssociationOverride> list = new BasicEList<IAssociationOverride>();
+ list.addAll(getSpecifiedAssociationOverrides());
+ list.addAll(getDefaultAssociationOverrides());
+ return list;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Association Overrides</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAssociationOverride}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Association Overrides</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>Specified Association Overrides</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIEntity_SpecifiedAssociationOverrides()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IAssociationOverride" containment="true"
+ * @generated
+ */
+ public EList<IAssociationOverride> getSpecifiedAssociationOverrides() {
+ if (specifiedAssociationOverrides == null) {
+ specifiedAssociationOverrides = new EObjectContainmentEList<IAssociationOverride>(IAssociationOverride.class, this, JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_ASSOCIATION_OVERRIDES);
+ }
+ return specifiedAssociationOverrides;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Association Overrides</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAssociationOverride}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Association Overrides</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>Default Association Overrides</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIEntity_DefaultAssociationOverrides()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IAssociationOverride" containment="true"
+ * @generated
+ */
+ public EList<IAssociationOverride> getDefaultAssociationOverrides() {
+ if (defaultAssociationOverrides == null) {
+ defaultAssociationOverrides = new EObjectContainmentEList<IAssociationOverride>(IAssociationOverride.class, this, JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_ASSOCIATION_OVERRIDES);
+ }
+ return defaultAssociationOverrides;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Named Queries</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.INamedQuery}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Named Queries</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>Named Queries</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIEntity_NamedQueries()
+ * @model type="org.eclipse.jpt.core.internal.mappings.INamedQuery" containment="true"
+ * @generated
+ */
+ public EList<INamedQuery> getNamedQueries() {
+ if (namedQueries == null) {
+ namedQueries = new EObjectContainmentEList<INamedQuery>(INamedQuery.class, this, JpaJavaMappingsPackage.JAVA_ENTITY__NAMED_QUERIES);
+ }
+ return namedQueries;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Named Native Queries</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.INamedNativeQuery}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Named Native Queries</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>Named Native Queries</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIEntity_NamedNativeQueries()
+ * @model type="org.eclipse.jpt.core.internal.mappings.INamedNativeQuery" containment="true"
+ * @generated
+ */
+ public EList<INamedNativeQuery> getNamedNativeQueries() {
+ if (namedNativeQueries == null) {
+ namedNativeQueries = new EObjectContainmentEList<INamedNativeQuery>(INamedNativeQuery.class, this, JpaJavaMappingsPackage.JAVA_ENTITY__NAMED_NATIVE_QUERIES);
+ }
+ return namedNativeQueries;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated NOT
+ */
+ public boolean discriminatorValueIsAllowed() {
+ return !getType().isAbstract();
+ }
+
+ public IEntity parentEntity() {
+ for (Iterator<IPersistentType> i = getPersistentType().inheritanceHierarchy(); i.hasNext();) {
+ ITypeMapping typeMapping = i.next().getMapping();
+ if (typeMapping != this && typeMapping instanceof IEntity) {
+ return (IEntity) typeMapping;
+ }
+ }
+ return this;
+ }
+
+ public IEntity rootEntity() {
+ IEntity rootEntity = null;
+ for (Iterator<IPersistentType> i = getPersistentType().inheritanceHierarchy(); i.hasNext();) {
+ IPersistentType persistentType = i.next();
+ if (persistentType.getMapping() instanceof IEntity) {
+ rootEntity = (IEntity) persistentType.getMapping();
+ }
+ }
+ return rootEntity;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_ENTITY__TABLE :
+ return basicSetTable(null, msgs);
+ case JpaJavaMappingsPackage.JAVA_ENTITY__PRIMARY_KEY_JOIN_COLUMNS :
+ return ((InternalEList<?>) getPrimaryKeyJoinColumns()).basicRemove(otherEnd, msgs);
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS :
+ return ((InternalEList<?>) getSpecifiedPrimaryKeyJoinColumns()).basicRemove(otherEnd, msgs);
+ case JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_PRIMARY_KEY_JOIN_COLUMNS :
+ return ((InternalEList<?>) getDefaultPrimaryKeyJoinColumns()).basicRemove(otherEnd, msgs);
+ case JpaJavaMappingsPackage.JAVA_ENTITY__DISCRIMINATOR_COLUMN :
+ return basicSetDiscriminatorColumn(null, msgs);
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SEQUENCE_GENERATOR :
+ return basicSetSequenceGenerator(null, msgs);
+ case JpaJavaMappingsPackage.JAVA_ENTITY__TABLE_GENERATOR :
+ return basicSetTableGenerator(null, msgs);
+ case JpaJavaMappingsPackage.JAVA_ENTITY__ATTRIBUTE_OVERRIDES :
+ return ((InternalEList<?>) getAttributeOverrides()).basicRemove(otherEnd, msgs);
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_ATTRIBUTE_OVERRIDES :
+ return ((InternalEList<?>) getSpecifiedAttributeOverrides()).basicRemove(otherEnd, msgs);
+ case JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_ATTRIBUTE_OVERRIDES :
+ return ((InternalEList<?>) getDefaultAttributeOverrides()).basicRemove(otherEnd, msgs);
+ case JpaJavaMappingsPackage.JAVA_ENTITY__ASSOCIATION_OVERRIDES :
+ return ((InternalEList<?>) getAssociationOverrides()).basicRemove(otherEnd, msgs);
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_ASSOCIATION_OVERRIDES :
+ return ((InternalEList<?>) getSpecifiedAssociationOverrides()).basicRemove(otherEnd, msgs);
+ case JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_ASSOCIATION_OVERRIDES :
+ return ((InternalEList<?>) getDefaultAssociationOverrides()).basicRemove(otherEnd, msgs);
+ case JpaJavaMappingsPackage.JAVA_ENTITY__NAMED_QUERIES :
+ return ((InternalEList<?>) getNamedQueries()).basicRemove(otherEnd, msgs);
+ case JpaJavaMappingsPackage.JAVA_ENTITY__NAMED_NATIVE_QUERIES :
+ return ((InternalEList<?>) getNamedNativeQueries()).basicRemove(otherEnd, msgs);
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SECONDARY_TABLES :
+ return ((InternalEList<?>) getSecondaryTables()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ protected void setDefaultName(String newDefaultName) {
+ String oldDefaultName = defaultName;
+ defaultName = newDefaultName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_NAME, oldDefaultName, defaultName));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_NAME :
+ return getSpecifiedName();
+ case JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_NAME :
+ return getDefaultName();
+ case JpaJavaMappingsPackage.JAVA_ENTITY__TABLE :
+ return getTable();
+ case JpaJavaMappingsPackage.JAVA_ENTITY__PRIMARY_KEY_JOIN_COLUMNS :
+ return getPrimaryKeyJoinColumns();
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS :
+ return getSpecifiedPrimaryKeyJoinColumns();
+ case JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_PRIMARY_KEY_JOIN_COLUMNS :
+ return getDefaultPrimaryKeyJoinColumns();
+ case JpaJavaMappingsPackage.JAVA_ENTITY__INHERITANCE_STRATEGY :
+ return getInheritanceStrategy();
+ case JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_DISCRIMINATOR_VALUE :
+ return getDefaultDiscriminatorValue();
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_DISCRIMINATOR_VALUE :
+ return getSpecifiedDiscriminatorValue();
+ case JpaJavaMappingsPackage.JAVA_ENTITY__DISCRIMINATOR_VALUE :
+ return getDiscriminatorValue();
+ case JpaJavaMappingsPackage.JAVA_ENTITY__DISCRIMINATOR_COLUMN :
+ return getDiscriminatorColumn();
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SEQUENCE_GENERATOR :
+ return getSequenceGenerator();
+ case JpaJavaMappingsPackage.JAVA_ENTITY__TABLE_GENERATOR :
+ return getTableGenerator();
+ case JpaJavaMappingsPackage.JAVA_ENTITY__ATTRIBUTE_OVERRIDES :
+ return getAttributeOverrides();
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_ATTRIBUTE_OVERRIDES :
+ return getSpecifiedAttributeOverrides();
+ case JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_ATTRIBUTE_OVERRIDES :
+ return getDefaultAttributeOverrides();
+ case JpaJavaMappingsPackage.JAVA_ENTITY__ASSOCIATION_OVERRIDES :
+ return getAssociationOverrides();
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_ASSOCIATION_OVERRIDES :
+ return getSpecifiedAssociationOverrides();
+ case JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_ASSOCIATION_OVERRIDES :
+ return getDefaultAssociationOverrides();
+ case JpaJavaMappingsPackage.JAVA_ENTITY__NAMED_QUERIES :
+ return getNamedQueries();
+ case JpaJavaMappingsPackage.JAVA_ENTITY__NAMED_NATIVE_QUERIES :
+ return getNamedNativeQueries();
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SECONDARY_TABLES :
+ return getSecondaryTables();
+ }
+ 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 JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_NAME :
+ setSpecifiedName((String) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS :
+ getSpecifiedPrimaryKeyJoinColumns().clear();
+ getSpecifiedPrimaryKeyJoinColumns().addAll((Collection<? extends IPrimaryKeyJoinColumn>) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_PRIMARY_KEY_JOIN_COLUMNS :
+ getDefaultPrimaryKeyJoinColumns().clear();
+ getDefaultPrimaryKeyJoinColumns().addAll((Collection<? extends IPrimaryKeyJoinColumn>) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__INHERITANCE_STRATEGY :
+ setInheritanceStrategy((InheritanceType) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_DISCRIMINATOR_VALUE :
+ setDefaultDiscriminatorValue((String) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_DISCRIMINATOR_VALUE :
+ setSpecifiedDiscriminatorValue((String) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SEQUENCE_GENERATOR :
+ setSequenceGenerator((ISequenceGenerator) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__TABLE_GENERATOR :
+ setTableGenerator((ITableGenerator) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_ATTRIBUTE_OVERRIDES :
+ getSpecifiedAttributeOverrides().clear();
+ getSpecifiedAttributeOverrides().addAll((Collection<? extends IAttributeOverride>) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_ATTRIBUTE_OVERRIDES :
+ getDefaultAttributeOverrides().clear();
+ getDefaultAttributeOverrides().addAll((Collection<? extends IAttributeOverride>) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_ASSOCIATION_OVERRIDES :
+ getSpecifiedAssociationOverrides().clear();
+ getSpecifiedAssociationOverrides().addAll((Collection<? extends IAssociationOverride>) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_ASSOCIATION_OVERRIDES :
+ getDefaultAssociationOverrides().clear();
+ getDefaultAssociationOverrides().addAll((Collection<? extends IAssociationOverride>) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__NAMED_QUERIES :
+ getNamedQueries().clear();
+ getNamedQueries().addAll((Collection<? extends INamedQuery>) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__NAMED_NATIVE_QUERIES :
+ getNamedNativeQueries().clear();
+ getNamedNativeQueries().addAll((Collection<? extends INamedNativeQuery>) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SECONDARY_TABLES :
+ getSecondaryTables().clear();
+ getSecondaryTables().addAll((Collection<? extends ISecondaryTable>) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_NAME :
+ setSpecifiedName(SPECIFIED_NAME_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS :
+ getSpecifiedPrimaryKeyJoinColumns().clear();
+ return;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_PRIMARY_KEY_JOIN_COLUMNS :
+ getDefaultPrimaryKeyJoinColumns().clear();
+ return;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__INHERITANCE_STRATEGY :
+ setInheritanceStrategy(INHERITANCE_STRATEGY_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_DISCRIMINATOR_VALUE :
+ setDefaultDiscriminatorValue(DEFAULT_DISCRIMINATOR_VALUE_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_DISCRIMINATOR_VALUE :
+ setSpecifiedDiscriminatorValue(SPECIFIED_DISCRIMINATOR_VALUE_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SEQUENCE_GENERATOR :
+ setSequenceGenerator((ISequenceGenerator) null);
+ return;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__TABLE_GENERATOR :
+ setTableGenerator((ITableGenerator) null);
+ return;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_ATTRIBUTE_OVERRIDES :
+ getSpecifiedAttributeOverrides().clear();
+ return;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_ATTRIBUTE_OVERRIDES :
+ getDefaultAttributeOverrides().clear();
+ return;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_ASSOCIATION_OVERRIDES :
+ getSpecifiedAssociationOverrides().clear();
+ return;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_ASSOCIATION_OVERRIDES :
+ getDefaultAssociationOverrides().clear();
+ return;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__NAMED_QUERIES :
+ getNamedQueries().clear();
+ return;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__NAMED_NATIVE_QUERIES :
+ getNamedNativeQueries().clear();
+ return;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SECONDARY_TABLES :
+ getSecondaryTables().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_NAME :
+ return SPECIFIED_NAME_EDEFAULT == null ? specifiedName != null : !SPECIFIED_NAME_EDEFAULT.equals(specifiedName);
+ case JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_NAME :
+ return DEFAULT_NAME_EDEFAULT == null ? defaultName != null : !DEFAULT_NAME_EDEFAULT.equals(defaultName);
+ case JpaJavaMappingsPackage.JAVA_ENTITY__TABLE :
+ return table != null;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__PRIMARY_KEY_JOIN_COLUMNS :
+ return !getPrimaryKeyJoinColumns().isEmpty();
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS :
+ return specifiedPrimaryKeyJoinColumns != null && !specifiedPrimaryKeyJoinColumns.isEmpty();
+ case JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_PRIMARY_KEY_JOIN_COLUMNS :
+ return defaultPrimaryKeyJoinColumns != null && !defaultPrimaryKeyJoinColumns.isEmpty();
+ case JpaJavaMappingsPackage.JAVA_ENTITY__INHERITANCE_STRATEGY :
+ return inheritanceStrategy != INHERITANCE_STRATEGY_EDEFAULT;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_DISCRIMINATOR_VALUE :
+ return DEFAULT_DISCRIMINATOR_VALUE_EDEFAULT == null ? defaultDiscriminatorValue != null : !DEFAULT_DISCRIMINATOR_VALUE_EDEFAULT.equals(defaultDiscriminatorValue);
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_DISCRIMINATOR_VALUE :
+ return SPECIFIED_DISCRIMINATOR_VALUE_EDEFAULT == null ? specifiedDiscriminatorValue != null : !SPECIFIED_DISCRIMINATOR_VALUE_EDEFAULT.equals(specifiedDiscriminatorValue);
+ case JpaJavaMappingsPackage.JAVA_ENTITY__DISCRIMINATOR_VALUE :
+ return DISCRIMINATOR_VALUE_EDEFAULT == null ? getDiscriminatorValue() != null : !DISCRIMINATOR_VALUE_EDEFAULT.equals(getDiscriminatorValue());
+ case JpaJavaMappingsPackage.JAVA_ENTITY__DISCRIMINATOR_COLUMN :
+ return discriminatorColumn != null;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SEQUENCE_GENERATOR :
+ return sequenceGenerator != null;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__TABLE_GENERATOR :
+ return tableGenerator != null;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__ATTRIBUTE_OVERRIDES :
+ return !getAttributeOverrides().isEmpty();
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_ATTRIBUTE_OVERRIDES :
+ return specifiedAttributeOverrides != null && !specifiedAttributeOverrides.isEmpty();
+ case JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_ATTRIBUTE_OVERRIDES :
+ return defaultAttributeOverrides != null && !defaultAttributeOverrides.isEmpty();
+ case JpaJavaMappingsPackage.JAVA_ENTITY__ASSOCIATION_OVERRIDES :
+ return !getAssociationOverrides().isEmpty();
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_ASSOCIATION_OVERRIDES :
+ return specifiedAssociationOverrides != null && !specifiedAssociationOverrides.isEmpty();
+ case JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_ASSOCIATION_OVERRIDES :
+ return defaultAssociationOverrides != null && !defaultAssociationOverrides.isEmpty();
+ case JpaJavaMappingsPackage.JAVA_ENTITY__NAMED_QUERIES :
+ return namedQueries != null && !namedQueries.isEmpty();
+ case JpaJavaMappingsPackage.JAVA_ENTITY__NAMED_NATIVE_QUERIES :
+ return namedNativeQueries != null && !namedNativeQueries.isEmpty();
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SECONDARY_TABLES :
+ return secondaryTables != null && !secondaryTables.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IEntity.class) {
+ switch (derivedFeatureID) {
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_NAME :
+ return JpaCoreMappingsPackage.IENTITY__SPECIFIED_NAME;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_NAME :
+ return JpaCoreMappingsPackage.IENTITY__DEFAULT_NAME;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__TABLE :
+ return JpaCoreMappingsPackage.IENTITY__TABLE;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__PRIMARY_KEY_JOIN_COLUMNS :
+ return JpaCoreMappingsPackage.IENTITY__PRIMARY_KEY_JOIN_COLUMNS;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS :
+ return JpaCoreMappingsPackage.IENTITY__SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_PRIMARY_KEY_JOIN_COLUMNS :
+ return JpaCoreMappingsPackage.IENTITY__DEFAULT_PRIMARY_KEY_JOIN_COLUMNS;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__INHERITANCE_STRATEGY :
+ return JpaCoreMappingsPackage.IENTITY__INHERITANCE_STRATEGY;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_DISCRIMINATOR_VALUE :
+ return JpaCoreMappingsPackage.IENTITY__DEFAULT_DISCRIMINATOR_VALUE;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_DISCRIMINATOR_VALUE :
+ return JpaCoreMappingsPackage.IENTITY__SPECIFIED_DISCRIMINATOR_VALUE;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__DISCRIMINATOR_VALUE :
+ return JpaCoreMappingsPackage.IENTITY__DISCRIMINATOR_VALUE;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__DISCRIMINATOR_COLUMN :
+ return JpaCoreMappingsPackage.IENTITY__DISCRIMINATOR_COLUMN;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SEQUENCE_GENERATOR :
+ return JpaCoreMappingsPackage.IENTITY__SEQUENCE_GENERATOR;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__TABLE_GENERATOR :
+ return JpaCoreMappingsPackage.IENTITY__TABLE_GENERATOR;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__ATTRIBUTE_OVERRIDES :
+ return JpaCoreMappingsPackage.IENTITY__ATTRIBUTE_OVERRIDES;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_ATTRIBUTE_OVERRIDES :
+ return JpaCoreMappingsPackage.IENTITY__SPECIFIED_ATTRIBUTE_OVERRIDES;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_ATTRIBUTE_OVERRIDES :
+ return JpaCoreMappingsPackage.IENTITY__DEFAULT_ATTRIBUTE_OVERRIDES;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__ASSOCIATION_OVERRIDES :
+ return JpaCoreMappingsPackage.IENTITY__ASSOCIATION_OVERRIDES;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_ASSOCIATION_OVERRIDES :
+ return JpaCoreMappingsPackage.IENTITY__SPECIFIED_ASSOCIATION_OVERRIDES;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_ASSOCIATION_OVERRIDES :
+ return JpaCoreMappingsPackage.IENTITY__DEFAULT_ASSOCIATION_OVERRIDES;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__NAMED_QUERIES :
+ return JpaCoreMappingsPackage.IENTITY__NAMED_QUERIES;
+ case JpaJavaMappingsPackage.JAVA_ENTITY__NAMED_NATIVE_QUERIES :
+ return JpaCoreMappingsPackage.IENTITY__NAMED_NATIVE_QUERIES;
+ 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 == IEntity.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IENTITY__SPECIFIED_NAME :
+ return JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_NAME;
+ case JpaCoreMappingsPackage.IENTITY__DEFAULT_NAME :
+ return JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_NAME;
+ case JpaCoreMappingsPackage.IENTITY__TABLE :
+ return JpaJavaMappingsPackage.JAVA_ENTITY__TABLE;
+ case JpaCoreMappingsPackage.IENTITY__PRIMARY_KEY_JOIN_COLUMNS :
+ return JpaJavaMappingsPackage.JAVA_ENTITY__PRIMARY_KEY_JOIN_COLUMNS;
+ case JpaCoreMappingsPackage.IENTITY__SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS :
+ return JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS;
+ case JpaCoreMappingsPackage.IENTITY__DEFAULT_PRIMARY_KEY_JOIN_COLUMNS :
+ return JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_PRIMARY_KEY_JOIN_COLUMNS;
+ case JpaCoreMappingsPackage.IENTITY__INHERITANCE_STRATEGY :
+ return JpaJavaMappingsPackage.JAVA_ENTITY__INHERITANCE_STRATEGY;
+ case JpaCoreMappingsPackage.IENTITY__DEFAULT_DISCRIMINATOR_VALUE :
+ return JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_DISCRIMINATOR_VALUE;
+ case JpaCoreMappingsPackage.IENTITY__SPECIFIED_DISCRIMINATOR_VALUE :
+ return JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_DISCRIMINATOR_VALUE;
+ case JpaCoreMappingsPackage.IENTITY__DISCRIMINATOR_VALUE :
+ return JpaJavaMappingsPackage.JAVA_ENTITY__DISCRIMINATOR_VALUE;
+ case JpaCoreMappingsPackage.IENTITY__DISCRIMINATOR_COLUMN :
+ return JpaJavaMappingsPackage.JAVA_ENTITY__DISCRIMINATOR_COLUMN;
+ case JpaCoreMappingsPackage.IENTITY__SEQUENCE_GENERATOR :
+ return JpaJavaMappingsPackage.JAVA_ENTITY__SEQUENCE_GENERATOR;
+ case JpaCoreMappingsPackage.IENTITY__TABLE_GENERATOR :
+ return JpaJavaMappingsPackage.JAVA_ENTITY__TABLE_GENERATOR;
+ case JpaCoreMappingsPackage.IENTITY__ATTRIBUTE_OVERRIDES :
+ return JpaJavaMappingsPackage.JAVA_ENTITY__ATTRIBUTE_OVERRIDES;
+ case JpaCoreMappingsPackage.IENTITY__SPECIFIED_ATTRIBUTE_OVERRIDES :
+ return JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_ATTRIBUTE_OVERRIDES;
+ case JpaCoreMappingsPackage.IENTITY__DEFAULT_ATTRIBUTE_OVERRIDES :
+ return JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_ATTRIBUTE_OVERRIDES;
+ case JpaCoreMappingsPackage.IENTITY__ASSOCIATION_OVERRIDES :
+ return JpaJavaMappingsPackage.JAVA_ENTITY__ASSOCIATION_OVERRIDES;
+ case JpaCoreMappingsPackage.IENTITY__SPECIFIED_ASSOCIATION_OVERRIDES :
+ return JpaJavaMappingsPackage.JAVA_ENTITY__SPECIFIED_ASSOCIATION_OVERRIDES;
+ case JpaCoreMappingsPackage.IENTITY__DEFAULT_ASSOCIATION_OVERRIDES :
+ return JpaJavaMappingsPackage.JAVA_ENTITY__DEFAULT_ASSOCIATION_OVERRIDES;
+ case JpaCoreMappingsPackage.IENTITY__NAMED_QUERIES :
+ return JpaJavaMappingsPackage.JAVA_ENTITY__NAMED_QUERIES;
+ case JpaCoreMappingsPackage.IENTITY__NAMED_NATIVE_QUERIES :
+ return JpaJavaMappingsPackage.JAVA_ENTITY__NAMED_NATIVE_QUERIES;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (specifiedName: ");
+ result.append(specifiedName);
+ result.append(", defaultName: ");
+ result.append(defaultName);
+ result.append(", inheritanceStrategy: ");
+ result.append(inheritanceStrategy);
+ result.append(", defaultDiscriminatorValue: ");
+ result.append(defaultDiscriminatorValue);
+ result.append(", specifiedDiscriminatorValue: ");
+ result.append(specifiedDiscriminatorValue);
+ result.append(')');
+ return result.toString();
+ }
+
+ public String getKey() {
+ return IMappingKeys.ENTITY_TYPE_MAPPING_KEY;
+ }
+
+ @Override
+ public String getTableName() {
+ return getTable().getName();
+ }
+
+ @Override
+ public Table primaryDbTable() {
+ return getTable().dbTable();
+ }
+
+ @Override
+ public Table dbTable(String tableName) {
+ for (Iterator<ITable> stream = this.associatedTablesIncludingInherited(); stream.hasNext();) {
+ Table dbTable = stream.next().dbTable();
+ if (dbTable != null && dbTable.matchesShortJavaClassName(tableName)) {
+ return dbTable;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public void updateFromJava(CompilationUnit astRoot) {
+ //TODO creating a new AST for each of these, maybe we should reduce this
+ //and have the javaChanged(ElementChangedEvent) pass the AST.
+ //same problem in the xml world, the defaults are taken from java
+ this.setSpecifiedName(specifiedNameFromJava());
+ this.setDefaultName(defaultNameFromJava());
+ ((JavaTable) this.getTable()).updateFromJava(astRoot);
+ this.updateSecondaryTablesFromJava(astRoot);
+ this.updateNamedQueriesFromJava(astRoot);
+ this.updateNamedNativeQueriesFromJava(astRoot);
+ this.updateAttributeOverridesFromJava(astRoot);
+ this.setInheritanceStrategy(InheritanceType.fromJavaAnnotationValue(this.inheritanceStrategyAdapter.getValue(astRoot)));
+ ((JavaDiscriminatorColumn) this.getDiscriminatorColumn()).updateFromJava(astRoot);
+ this.setSpecifiedDiscriminatorValue((String) this.discriminatorValueAdapter.getValue(astRoot));
+ this.setDefaultDiscriminatorValue(this.javaDefaultDiscriminatorValue());
+ this.updateTableGeneratorFromJava(astRoot);
+ this.updateSequenceGeneratorFromJava(astRoot);
+ }
+
+ private void updateTableGeneratorFromJava(CompilationUnit astRoot) {
+ if (this.tableGeneratorAnnotationAdapter.getAnnotation(astRoot) == null) {
+ if (getTableGenerator() != null) {
+ setTableGenerator(null);
+ }
+ }
+ else {
+ if (getTableGenerator() == null) {
+ setTableGenerator(createTableGenerator());
+ }
+ ((JavaTableGenerator) getTableGenerator()).updateFromJava(astRoot);
+ }
+ }
+
+ private void updateSequenceGeneratorFromJava(CompilationUnit astRoot) {
+ if (this.sequenceGeneratorAnnotationAdapter.getAnnotation(astRoot) == null) {
+ if (getSequenceGenerator() != null) {
+ setSequenceGenerator(null);
+ }
+ }
+ else {
+ if (getSequenceGenerator() == null) {
+ setSequenceGenerator(createSequenceGenerator());
+ }
+ ((JavaSequenceGenerator) getSequenceGenerator()).updateFromJava(astRoot);
+ }
+ }
+
+ /**
+ * From the Spec:
+ * If the DiscriminatorValue annotation is not specified, a
+ * provider-specific function to generate a value representing
+ * the entity type is used for the value of the discriminator
+ * column. If the DiscriminatorType is STRING, the discriminator
+ * value default is the entity name.
+ *
+ * TODO extension point for provider-specific function?
+ */
+ private String javaDefaultDiscriminatorValue() {
+ return ((!getType().isAbstract()) && this.discriminatorType().isString()) ? getName() : null;
+ }
+
+ private DiscriminatorType discriminatorType() {
+ return this.getDiscriminatorColumn().getDiscriminatorType();
+ }
+
+ /**
+ * here we just worry about getting the attribute override lists the same size;
+ * then we delegate to the attribute overrides to synch themselves up
+ */
+ private void updateAttributeOverridesFromJava(CompilationUnit astRoot) {
+ // synchronize the model attribute overrides with the Java source
+ List<IAttributeOverride> attributeOverrides = getSpecifiedAttributeOverrides();
+ int persSize = attributeOverrides.size();
+ int javaSize = 0;
+ boolean allJavaAnnotationsFound = false;
+ for (int i = 0; i < persSize; i++) {
+ JavaAttributeOverride attributeOverride = (JavaAttributeOverride) attributeOverrides.get(i);
+ if (attributeOverride.annotation(astRoot) == null) {
+ allJavaAnnotationsFound = true;
+ break; // no need to go any further
+ }
+ attributeOverride.updateFromJava(astRoot);
+ javaSize++;
+ }
+ if (allJavaAnnotationsFound) {
+ // remove any model attribute overrides beyond those that correspond to the Java annotations
+ while (persSize > javaSize) {
+ persSize--;
+ attributeOverrides.remove(persSize);
+ }
+ }
+ else {
+ // add new model attribute overrides until they match the Java annotations
+ while (!allJavaAnnotationsFound) {
+ JavaAttributeOverride attributeOverride = this.createJavaAttributeOverride(javaSize);
+ if (attributeOverride.annotation(astRoot) == null) {
+ allJavaAnnotationsFound = true;
+ }
+ else {
+ getSpecifiedAttributeOverrides().add(attributeOverride);
+ attributeOverride.updateFromJava(astRoot);
+ javaSize++;
+ }
+ }
+ }
+ }
+
+ /**
+ * here we just worry about getting the secondary table lists the same size;
+ * then we delegate to the secondary tables to synch themselves up
+ */
+ private void updateSecondaryTablesFromJava(CompilationUnit astRoot) {
+ // synchronize the model secondary tables with the Java source
+ List<ISecondaryTable> sTables = this.getSecondaryTables();
+ int persSize = sTables.size();
+ int javaSize = 0;
+ boolean allJavaAnnotationsFound = false;
+ for (int i = 0; i < persSize; i++) {
+ JavaSecondaryTable secondaryTable = (JavaSecondaryTable) sTables.get(i);
+ if (secondaryTable.annotation(astRoot) == null) {
+ allJavaAnnotationsFound = true;
+ break; // no need to go any further
+ }
+ secondaryTable.updateFromJava(astRoot);
+ javaSize++;
+ }
+ if (allJavaAnnotationsFound) {
+ // remove any model secondary tables beyond those that correspond to the Java annotations
+ while (persSize > javaSize) {
+ persSize--;
+ sTables.remove(persSize);
+ }
+ }
+ else {
+ // add new model join columns until they match the Java annotations
+ while (!allJavaAnnotationsFound) {
+ JavaSecondaryTable secondaryTable = this.createJavaSecondaryTable(javaSize);
+ if (secondaryTable.annotation(astRoot) == null) {
+ allJavaAnnotationsFound = true;
+ }
+ else {
+ getSecondaryTables().add(secondaryTable);
+ secondaryTable.updateFromJava(astRoot);
+ javaSize++;
+ }
+ }
+ }
+ }
+
+ /**
+ * here we just worry about getting the named query lists the same size;
+ * then we delegate to the named queries to synch themselves up
+ */
+ private void updateNamedQueriesFromJava(CompilationUnit astRoot) {
+ // synchronize the model named queries with the Java source
+ List<INamedQuery> queries = this.getNamedQueries();
+ int persSize = queries.size();
+ int javaSize = 0;
+ boolean allJavaAnnotationsFound = false;
+ for (int i = 0; i < persSize; i++) {
+ JavaNamedQuery namedQuery = (JavaNamedQuery) queries.get(i);
+ if (namedQuery.annotation(astRoot) == null) {
+ allJavaAnnotationsFound = true;
+ break; // no need to go any further
+ }
+ namedQuery.updateFromJava(astRoot);
+ javaSize++;
+ }
+ if (allJavaAnnotationsFound) {
+ // remove any model named queries beyond those that correspond to the Java annotations
+ while (persSize > javaSize) {
+ persSize--;
+ queries.remove(persSize);
+ }
+ }
+ else {
+ // add new model join columns until they match the Java annotations
+ while (!allJavaAnnotationsFound) {
+ JavaNamedQuery javaNamedQuery = this.createJavaNamedQuery(javaSize);
+ if (javaNamedQuery.annotation(astRoot) == null) {
+ allJavaAnnotationsFound = true;
+ }
+ else {
+ getNamedQueries().add(javaNamedQuery);
+ javaNamedQuery.updateFromJava(astRoot);
+ javaSize++;
+ }
+ }
+ }
+ }
+
+ /**
+ * here we just worry about getting the named native query lists the same size;
+ * then we delegate to the named native queries to synch themselves up
+ */
+ private void updateNamedNativeQueriesFromJava(CompilationUnit astRoot) {
+ // synchronize the model named queries with the Java source
+ List<INamedNativeQuery> queries = this.getNamedNativeQueries();
+ int persSize = queries.size();
+ int javaSize = 0;
+ boolean allJavaAnnotationsFound = false;
+ for (int i = 0; i < persSize; i++) {
+ JavaNamedNativeQuery namedQuery = (JavaNamedNativeQuery) queries.get(i);
+ if (namedQuery.annotation(astRoot) == null) {
+ allJavaAnnotationsFound = true;
+ break; // no need to go any further
+ }
+ namedQuery.updateFromJava(astRoot);
+ javaSize++;
+ }
+ if (allJavaAnnotationsFound) {
+ // remove any model named queries beyond those that correspond to the Java annotations
+ while (persSize > javaSize) {
+ persSize--;
+ queries.remove(persSize);
+ }
+ }
+ else {
+ // add new model join columns until they match the Java annotations
+ while (!allJavaAnnotationsFound) {
+ JavaNamedNativeQuery javaNamedQuery = this.createJavaNamedNativeQuery(javaSize);
+ if (javaNamedQuery.annotation(astRoot) == null) {
+ allJavaAnnotationsFound = true;
+ }
+ else {
+ getNamedNativeQueries().add(javaNamedQuery);
+ javaNamedQuery.updateFromJava(astRoot);
+ javaSize++;
+ }
+ }
+ }
+ }
+
+ /**
+ * here we just worry about getting the primary key join column lists
+ * the same size; then we delegate to the join columns to synch
+ * themselves up
+ */
+ private void updatePersSpecifiedPrimaryKeyJoinColumns(CompilationUnit astRoot) {
+ // synchronize the model primary key join columns with the Java source
+ List<IPrimaryKeyJoinColumn> pkJoinColumns = getSpecifiedPrimaryKeyJoinColumns();
+ int persSize = pkJoinColumns.size();
+ int javaSize = 0;
+ boolean allJavaAnnotationsFound = false;
+ for (int i = 0; i < persSize; i++) {
+ JavaPrimaryKeyJoinColumn pkJoinColumn = (JavaPrimaryKeyJoinColumn) pkJoinColumns.get(i);
+ if (pkJoinColumn.annotation(astRoot) == null) {
+ allJavaAnnotationsFound = true;
+ break; // no need to go any further
+ }
+ pkJoinColumn.updateFromJava(astRoot);
+ javaSize++;
+ }
+ if (allJavaAnnotationsFound) {
+ // remove any model primary key join columns beyond those that correspond to the Java annotations
+ while (persSize > javaSize) {
+ persSize--;
+ pkJoinColumns.remove(persSize);
+ }
+ }
+ else {
+ // add new model join columns until they match the Java annotations
+ while (!allJavaAnnotationsFound) {
+ JavaPrimaryKeyJoinColumn jpkjc = this.createJavaPrimaryKeyJoinColumn(javaSize);
+ if (jpkjc.annotation(astRoot) == null) {
+ allJavaAnnotationsFound = true;
+ }
+ else {
+ getSpecifiedPrimaryKeyJoinColumns().add(jpkjc);
+ jpkjc.updateFromJava(astRoot);
+ javaSize++;
+ }
+ }
+ }
+ }
+
+ public String primaryKeyColumnName() {
+ String pkColumnName = null;
+ for (Iterator<IPersistentAttribute> stream = getPersistentType().allAttributes(); stream.hasNext();) {
+ IPersistentAttribute attribute = stream.next();
+ String name = attribute.primaryKeyColumnName();
+ if (pkColumnName == null) {
+ pkColumnName = name;
+ }
+ else if (name != null) {
+ // if we encounter a composite primary key, return null
+ return null;
+ }
+ }
+ // if we encounter only a single primary key column name, return it
+ return pkColumnName;
+ }
+
+ public String primaryKeyAttributeName() {
+ String pkColumnName = null;
+ String pkAttributeName = null;
+ for (Iterator<IPersistentAttribute> stream = getPersistentType().allAttributes(); stream.hasNext();) {
+ IPersistentAttribute attribute = stream.next();
+ String name = attribute.primaryKeyColumnName();
+ if (pkColumnName == null) {
+ pkColumnName = name;
+ pkAttributeName = attribute.getName();
+ }
+ else if (name != null) {
+ // if we encounter a composite primary key, return null
+ return null;
+ }
+ }
+ // if we encounter only a single primary key column name, return it
+ return pkAttributeName;
+ }
+
+ public boolean tableNameIsInvalid(String tableName) {
+ return !CollectionTools.contains(this.associatedTableNamesIncludingInherited(), tableName);
+ }
+
+ public Iterator<ITable> associatedTables() {
+ return new CompositeIterator<ITable>(this.getTable(), this.getSecondaryTables().iterator());
+ }
+
+ public Iterator<ITable> associatedTablesIncludingInherited() {
+ return new CompositeIterator<ITable>(new TransformationIterator<ITypeMapping, Iterator<ITable>>(this.inheritanceHierarchy()) {
+ @Override
+ protected Iterator<ITable> transform(ITypeMapping mapping) {
+ return new FilteringIterator<ITable>(mapping.associatedTables()) {
+ @Override
+ protected boolean accept(Object o) {
+ return true;
+ //TODO
+ //filtering these out so as to avoid the duplicate table, root and children share the same table
+ //return !(o instanceof SingleTableInheritanceChildTableImpl);
+ }
+ };
+ }
+ });
+ }
+
+ public Iterator<String> associatedTableNamesIncludingInherited() {
+ return this.nonNullTableNames(this.associatedTablesIncludingInherited());
+ }
+
+ private Iterator<String> nonNullTableNames(Iterator<ITable> tables) {
+ return new FilteringIterator<String>(this.tableNames(tables)) {
+ @Override
+ protected boolean accept(Object o) {
+ return o != null;
+ }
+ };
+ }
+
+ private Iterator<String> tableNames(Iterator<ITable> tables) {
+ return new TransformationIterator<ITable, String>(tables) {
+ @Override
+ protected String transform(ITable t) {
+ return t.getName();
+ }
+ };
+ }
+
+ /**
+ * Return an iterator of Entities, each which inherits from the one before,
+ * and terminates at the root entity (or at the point of cyclicity).
+ */
+ private Iterator<ITypeMapping> inheritanceHierarchy() {
+ return new TransformationIterator<IPersistentType, ITypeMapping>(getPersistentType().inheritanceHierarchy()) {
+ @Override
+ protected ITypeMapping transform(IPersistentType type) {
+ return type.getMapping();
+ }
+ };
+ //TODO once we support inheritance, which of these should we use??
+ //return this.getInheritance().typeMappingLineage();
+ }
+
+ public Iterator<String> allOverridableAttributeNames() {
+ return new CompositeIterator<String>(new TransformationIterator<ITypeMapping, Iterator<String>>(this.inheritanceHierarchy()) {
+ @Override
+ protected Iterator<String> transform(ITypeMapping mapping) {
+ return mapping.overridableAttributeNames();
+ }
+ });
+ }
+
+ public Iterator<String> allOverridableAssociationNames() {
+ return new CompositeIterator<String>(new TransformationIterator<ITypeMapping, Iterator<String>>(this.inheritanceHierarchy()) {
+ @Override
+ protected Iterator<String> transform(ITypeMapping mapping) {
+ return mapping.overridableAssociationNames();
+ }
+ });
+ }
+
+ public Iterator<String> overridableAttributeNames() {
+ return EmptyIterator.instance();
+ }
+
+ public Iterator<String> overridableAssociationNames() {
+ return EmptyIterator.instance();
+ }
+
+ public IAttributeOverride createAttributeOverride(int index) {
+ return createJavaAttributeOverride(index);
+ }
+
+ private JavaAttributeOverride createJavaAttributeOverride(int index) {
+ return JavaAttributeOverride.createAttributeOverride(new AttributeOverrideOwner(this), this.getType(), index);
+ }
+
+ public IAssociationOverride createAssociationOverride(int index) {
+ return createJavaAssociationOverride(index);
+ }
+
+ private JavaAssociationOverride createJavaAssociationOverride(int index) {
+ return JavaAssociationOverride.createAssociationOverride(new AssociationOverrideOwner(this), this.getType(), index);
+ }
+
+ public JavaSecondaryTable createSecondaryTable(int index) {
+ return createJavaSecondaryTable(index);
+ }
+
+ private JavaSecondaryTable createJavaSecondaryTable(int index) {
+ return JavaSecondaryTable.createJavaSecondaryTable(buildSecondaryTableOwner(), this.getType(), index);
+ }
+
+ private ITable.Owner buildSecondaryTableOwner() {
+ return new ITable.Owner() {
+ public ITextRange getTextRange() {
+ return JavaEntity.this.getTextRange();
+ }
+
+ public ITypeMapping getTypeMapping() {
+ return JavaEntity.this;
+ }
+ };
+ }
+
+ public boolean containsSpecifiedPrimaryKeyJoinColumns() {
+ return !this.getSpecifiedPrimaryKeyJoinColumns().isEmpty();
+ }
+
+ public IPrimaryKeyJoinColumn createPrimaryKeyJoinColumn(int index) {
+ return this.createJavaPrimaryKeyJoinColumn(index);
+ }
+
+ private JavaPrimaryKeyJoinColumn createJavaPrimaryKeyJoinColumn(int index) {
+ return JavaPrimaryKeyJoinColumn.createJavaPrimaryKeyJoinColumn(buildPkJoinColumnOwner(), this.getType(), index);
+ }
+
+ protected IAbstractJoinColumn.Owner buildPkJoinColumnOwner() {
+ return new IEntity.PrimaryKeyJoinColumnOwner(this);
+ }
+
+ public JavaNamedQuery createNamedQuery(int index) {
+ return createJavaNamedQuery(index);
+ }
+
+ private JavaNamedQuery createJavaNamedQuery(int index) {
+ return JavaNamedQuery.createJavaNamedQuery(this.getType(), index);
+ }
+
+ public JavaNamedNativeQuery createNamedNativeQuery(int index) {
+ return createJavaNamedNativeQuery(index);
+ }
+
+ private JavaNamedNativeQuery createJavaNamedNativeQuery(int index) {
+ return JavaNamedNativeQuery.createJavaNamedNativeQuery(this.getType(), index);
+ }
+
+ public ISequenceGenerator createSequenceGenerator() {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaSequenceGenerator(getType());
+ }
+
+ public ITableGenerator createTableGenerator() {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaTableGenerator(getType());
+ }
+
+ // ********** misc **********
+ private static void attributeChanged(Object value, AnnotationAdapter annotationAdapter) {
+ Annotation annotation = annotationAdapter.getAnnotation();
+ if (value == null) {
+ if (annotation != null) {
+ annotationAdapter.removeAnnotation();
+ }
+ }
+ else {
+ if (annotation == null) {
+ annotationAdapter.newMarkerAnnotation();
+ }
+ }
+ }
+
+ public List<String> candidateValuesFor(int pos, CompilationUnit astRoot) {
+ return Collections.emptyList();
+ }
+
+ // ********** static methods **********
+ protected static DeclarationAnnotationElementAdapter buildStrategyAdapter() {
+ return new EnumDeclarationAnnotationElementAdapter(INHERITANCE_ANNOTATION_ADAPTER, JPA.INHERITANCE__STRATEGY);
+ }
+
+ private static DeclarationAnnotationElementAdapter buildValueAdapter() {
+ return new ConversionDeclarationAnnotationElementAdapter(DISCRIMINATOR_ANNOTATION_ADAPTER, JPA.DISCRIMINATOR_VALUE__VALUE);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEntityProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEntityProvider.java
new file mode 100644
index 0000000000..868c5d918f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaEntityProvider.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.content.java.IJavaTypeMapping;
+import org.eclipse.jpt.core.internal.content.java.IJavaTypeMappingProvider;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Type;
+
+/**
+ *
+ */
+public class JavaEntityProvider
+ implements IJavaTypeMappingProvider
+{
+
+ // singleton
+ private static final JavaEntityProvider INSTANCE = new JavaEntityProvider();
+
+ /**
+ * Return the singleton.
+ */
+ public static IJavaTypeMappingProvider instance() {
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private JavaEntityProvider() {
+ super();
+ }
+
+ public String key() {
+ return IMappingKeys.ENTITY_TYPE_MAPPING_KEY;
+ }
+
+ public IJavaTypeMapping buildMapping(Type type) {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaEntity(type);
+ }
+
+ public DeclarationAnnotationAdapter declarationAnnotationAdapter() {
+ return JavaEntity.ANNOTATION_ADAPTER;
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaGeneratedValue.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaGeneratedValue.java
new file mode 100644
index 0000000000..e76d6e55cd
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaGeneratedValue.java
@@ -0,0 +1,343 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.content.java.JavaEObject;
+import org.eclipse.jpt.core.internal.jdtutility.AnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.ConversionDeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.EnumDeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Member;
+import org.eclipse.jpt.core.internal.jdtutility.ShortCircuitAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.SimpleDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.mappings.GenerationType;
+import org.eclipse.jpt.core.internal.mappings.IGeneratedValue;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Generated Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaGeneratedValue()
+ * @model kind="class"
+ * @generated
+ */
+public class JavaGeneratedValue extends JavaEObject implements IGeneratedValue
+{
+ private Member member;
+
+ private final AnnotationElementAdapter strategyAdapter;
+
+ private final AnnotationElementAdapter generatorAdapter;
+
+ public static final DeclarationAnnotationAdapter DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.GENERATED_VALUE);
+
+ private static final DeclarationAnnotationElementAdapter STRATEGY_ADAPTER = buildStrategyAdapter();
+
+ private static final DeclarationAnnotationElementAdapter GENERATOR_ADAPTER = buildGeneratorAdapter();
+
+ /**
+ * The default value of the '{@link #getStrategy() <em>Strategy</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getStrategy()
+ * @generated
+ * @ordered
+ */
+ protected static final GenerationType STRATEGY_EDEFAULT = GenerationType.DEFAULT;
+
+ /**
+ * The cached value of the '{@link #getStrategy() <em>Strategy</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getStrategy()
+ * @generated
+ * @ordered
+ */
+ protected GenerationType strategy = STRATEGY_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getGenerator() <em>Generator</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getGenerator()
+ * @generated
+ * @ordered
+ */
+ protected static final String GENERATOR_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getGenerator() <em>Generator</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getGenerator()
+ * @generated
+ * @ordered
+ */
+ protected String generator = GENERATOR_EDEFAULT;
+
+ protected JavaGeneratedValue() {
+ throw new UnsupportedOperationException("Use JavaGeneratedValue(Member) instead");
+ }
+
+ protected JavaGeneratedValue(Member member) {
+ super();
+ this.member = member;
+ this.strategyAdapter = new ShortCircuitAnnotationElementAdapter(this.member, STRATEGY_ADAPTER);
+ this.generatorAdapter = new ShortCircuitAnnotationElementAdapter(this.member, GENERATOR_ADAPTER);
+ }
+
+ @Override
+ protected void notifyChanged(Notification notification) {
+ super.notifyChanged(notification);
+ switch (notification.getFeatureID(IGeneratedValue.class)) {
+ case JpaJavaMappingsPackage.JAVA_GENERATED_VALUE__GENERATOR :
+ this.generatorAdapter.setValue(notification.getNewValue());
+ break;
+ case JpaJavaMappingsPackage.JAVA_GENERATED_VALUE__STRATEGY :
+ this.strategyAdapter.setValue(((GenerationType) notification.getNewValue()).convertToJavaAnnotationValue());
+ break;
+ default :
+ break;
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_GENERATED_VALUE;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Strategy</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.GenerationType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Strategy</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Strategy</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.GenerationType
+ * @see #setStrategy(GenerationType)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIGeneratedValue_Strategy()
+ * @model
+ * @generated
+ */
+ public GenerationType getStrategy() {
+ return strategy;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaGeneratedValue#getStrategy <em>Strategy</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Strategy</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.GenerationType
+ * @see #getStrategy()
+ * @generated
+ */
+ public void setStrategy(GenerationType newStrategy) {
+ GenerationType oldStrategy = strategy;
+ strategy = newStrategy == null ? STRATEGY_EDEFAULT : newStrategy;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_GENERATED_VALUE__STRATEGY, oldStrategy, strategy));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Generator</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Generator</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Generator</em>' attribute.
+ * @see #setGenerator(String)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIGeneratedValue_Generator()
+ * @model
+ * @generated
+ */
+ public String getGenerator() {
+ return generator;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaGeneratedValue#getGenerator <em>Generator</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Generator</em>' attribute.
+ * @see #getGenerator()
+ * @generated
+ */
+ public void setGenerator(String newGenerator) {
+ String oldGenerator = generator;
+ generator = newGenerator;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_GENERATED_VALUE__GENERATOR, oldGenerator, generator));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_GENERATED_VALUE__STRATEGY :
+ return getStrategy();
+ case JpaJavaMappingsPackage.JAVA_GENERATED_VALUE__GENERATOR :
+ return getGenerator();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_GENERATED_VALUE__STRATEGY :
+ setStrategy((GenerationType) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_GENERATED_VALUE__GENERATOR :
+ setGenerator((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_GENERATED_VALUE__STRATEGY :
+ setStrategy(STRATEGY_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.JAVA_GENERATED_VALUE__GENERATOR :
+ setGenerator(GENERATOR_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_GENERATED_VALUE__STRATEGY :
+ return strategy != STRATEGY_EDEFAULT;
+ case JpaJavaMappingsPackage.JAVA_GENERATED_VALUE__GENERATOR :
+ return GENERATOR_EDEFAULT == null ? generator != null : !GENERATOR_EDEFAULT.equals(generator);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IGeneratedValue.class) {
+ switch (derivedFeatureID) {
+ case JpaJavaMappingsPackage.JAVA_GENERATED_VALUE__STRATEGY :
+ return JpaCoreMappingsPackage.IGENERATED_VALUE__STRATEGY;
+ case JpaJavaMappingsPackage.JAVA_GENERATED_VALUE__GENERATOR :
+ return JpaCoreMappingsPackage.IGENERATED_VALUE__GENERATOR;
+ 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 == IGeneratedValue.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IGENERATED_VALUE__STRATEGY :
+ return JpaJavaMappingsPackage.JAVA_GENERATED_VALUE__STRATEGY;
+ case JpaCoreMappingsPackage.IGENERATED_VALUE__GENERATOR :
+ return JpaJavaMappingsPackage.JAVA_GENERATED_VALUE__GENERATOR;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (strategy: ");
+ result.append(strategy);
+ result.append(", generator: ");
+ result.append(generator);
+ result.append(')');
+ return result.toString();
+ }
+
+ public ITextRange getTextRange() {
+ return this.member.annotationTextRange(DECLARATION_ANNOTATION_ADAPTER);
+ }
+
+ // ********** java annotations -> persistence model **********
+ public void updateFromJava(CompilationUnit astRoot) {
+ setStrategy(GenerationType.fromJavaAnnotationValue(this.strategyAdapter.getValue(astRoot)));
+ setGenerator((String) this.generatorAdapter.getValue(astRoot));
+ }
+
+ // ********** static methods **********
+ private static DeclarationAnnotationElementAdapter buildStrategyAdapter() {
+ return new EnumDeclarationAnnotationElementAdapter(DECLARATION_ANNOTATION_ADAPTER, JPA.GENERATED_VALUE__STRATEGY, false);
+ }
+
+ private static DeclarationAnnotationElementAdapter buildGeneratorAdapter() {
+ return new ConversionDeclarationAnnotationElementAdapter(DECLARATION_ANNOTATION_ADAPTER, JPA.GENERATED_VALUE__GENERATOR, false);
+ }
+} // JavaGeneratedValue
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaGenerator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaGenerator.java
new file mode 100644
index 0000000000..f4dea062fb
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaGenerator.java
@@ -0,0 +1,574 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.content.java.JavaEObject;
+import org.eclipse.jpt.core.internal.jdtutility.AnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.ConversionDeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Member;
+import org.eclipse.jpt.core.internal.jdtutility.NumberStringExpressionConverter;
+import org.eclipse.jpt.core.internal.jdtutility.ShortCircuitAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.mappings.IGenerator;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Generator</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaGenerator()
+ * @model kind="class" abstract="true"
+ * @generated
+ */
+public abstract class JavaGenerator extends JavaEObject implements IGenerator
+{
+ private final Member member;
+
+ private final AnnotationElementAdapter nameAdapter;
+
+ private final IntAnnotationElementAdapter initialValueAdapter;
+
+ private final IntAnnotationElementAdapter allocationSizeAdapter;
+
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getInitialValue() <em>Initial Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getInitialValue()
+ * @generated
+ * @ordered
+ */
+ protected static final int INITIAL_VALUE_EDEFAULT = 0;
+
+ /**
+ * The default value of the '{@link #getSpecifiedInitialValue() <em>Specified Initial Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedInitialValue()
+ * @generated
+ * @ordered
+ */
+ protected static final int SPECIFIED_INITIAL_VALUE_EDEFAULT = -1;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedInitialValue() <em>Specified Initial Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedInitialValue()
+ * @generated
+ * @ordered
+ */
+ protected int specifiedInitialValue = SPECIFIED_INITIAL_VALUE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultInitialValue() <em>Default Initial Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultInitialValue()
+ * @generated
+ * @ordered
+ */
+ protected static final int DEFAULT_INITIAL_VALUE_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getDefaultInitialValue() <em>Default Initial Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultInitialValue()
+ * @generated
+ * @ordered
+ */
+ protected int defaultInitialValue = DEFAULT_INITIAL_VALUE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getAllocationSize() <em>Allocation Size</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAllocationSize()
+ * @generated
+ * @ordered
+ */
+ protected static final int ALLOCATION_SIZE_EDEFAULT = 0;
+
+ /**
+ * The default value of the '{@link #getSpecifiedAllocationSize() <em>Specified Allocation Size</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedAllocationSize()
+ * @generated
+ * @ordered
+ */
+ protected static final int SPECIFIED_ALLOCATION_SIZE_EDEFAULT = -1;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedAllocationSize() <em>Specified Allocation Size</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedAllocationSize()
+ * @generated
+ * @ordered
+ */
+ protected int specifiedAllocationSize = SPECIFIED_ALLOCATION_SIZE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultAllocationSize() <em>Default Allocation Size</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultAllocationSize()
+ * @generated
+ * @ordered
+ */
+ protected static final int DEFAULT_ALLOCATION_SIZE_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getDefaultAllocationSize() <em>Default Allocation Size</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultAllocationSize()
+ * @generated
+ * @ordered
+ */
+ protected int defaultAllocationSize = DEFAULT_ALLOCATION_SIZE_EDEFAULT;
+
+ protected JavaGenerator() {
+ throw new UnsupportedOperationException("Use JavaGenerator(Member) instead");
+ }
+
+ protected JavaGenerator(Member member) {
+ super();
+ this.member = member;
+ this.nameAdapter = this.buildAdapter(this.nameAdapter());
+ this.initialValueAdapter = this.buildIntAdapter(this.initialValueAdapter());
+ this.allocationSizeAdapter = this.buildIntAdapter(this.allocationSizeAdapter());
+ }
+
+ // ********** initialization **********
+ protected AnnotationElementAdapter buildAdapter(DeclarationAnnotationElementAdapter daea) {
+ return new ShortCircuitAnnotationElementAdapter(this.member, daea);
+ }
+
+ protected IntAnnotationElementAdapter buildIntAdapter(DeclarationAnnotationElementAdapter daea) {
+ return new IntAnnotationElementAdapter(this.buildAdapter(daea));
+ }
+
+ protected abstract DeclarationAnnotationAdapter annotationAdapter();
+
+ protected abstract DeclarationAnnotationElementAdapter nameAdapter();
+
+ protected abstract DeclarationAnnotationElementAdapter initialValueAdapter();
+
+ protected abstract DeclarationAnnotationElementAdapter allocationSizeAdapter();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_GENERATOR;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIGenerator_Name()
+ * @model
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaGenerator#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ public void setNameGen(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_GENERATOR__NAME, oldName, name));
+ }
+
+ public void setName(String newName) {
+ setNameGen(newName);
+ setNameInJava(newName);
+ }
+
+ private void setNameInJava(String newName) {
+ this.nameAdapter.setValue(newName);
+ }
+
+ public int getInitialValue() {
+ return (this.getSpecifiedInitialValue() == -1) ? this.getDefaultInitialValue() : this.getSpecifiedInitialValue();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Initial Value</b></em>' attribute.
+ * The default value is <code>"-1"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Initial 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>Specified Initial Value</em>' attribute.
+ * @see #setSpecifiedInitialValue(int)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIGenerator_SpecifiedInitialValue()
+ * @model default="-1"
+ * @generated
+ */
+ public int getSpecifiedInitialValue() {
+ return specifiedInitialValue;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaGenerator#getSpecifiedInitialValue <em>Specified Initial Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Initial Value</em>' attribute.
+ * @see #getSpecifiedInitialValue()
+ * @generated
+ */
+ public void setSpecifiedInitialValueGen(int newSpecifiedInitialValue) {
+ int oldSpecifiedInitialValue = specifiedInitialValue;
+ specifiedInitialValue = newSpecifiedInitialValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_GENERATOR__SPECIFIED_INITIAL_VALUE, oldSpecifiedInitialValue, specifiedInitialValue));
+ }
+
+ public void setSpecifiedInitialValue(int newSpecifiedInitialValue) {
+ setSpecifiedInitialValueGen(newSpecifiedInitialValue);
+ setSpecifiedInitialValueInJava(newSpecifiedInitialValue);
+ }
+
+ private void setSpecifiedInitialValueInJava(int newSpecifiedInitialValue) {
+ this.initialValueAdapter.setValue(newSpecifiedInitialValue);
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Initial Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Initial 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>Default Initial Value</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIGenerator_DefaultInitialValue()
+ * @model changeable="false"
+ * @generated
+ */
+ public int getDefaultInitialValue() {
+ return defaultInitialValue;
+ }
+
+ public int getAllocationSize() {
+ return (this.getSpecifiedAllocationSize() == -1) ? this.getDefaultAllocationSize() : this.getSpecifiedAllocationSize();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Allocation Size</b></em>' attribute.
+ * The default value is <code>"-1"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Allocation Size</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Allocation Size</em>' attribute.
+ * @see #setSpecifiedAllocationSize(int)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIGenerator_SpecifiedAllocationSize()
+ * @model default="-1"
+ * @generated
+ */
+ public int getSpecifiedAllocationSize() {
+ return specifiedAllocationSize;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaGenerator#getSpecifiedAllocationSize <em>Specified Allocation Size</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Allocation Size</em>' attribute.
+ * @see #getSpecifiedAllocationSize()
+ * @generated
+ */
+ public void setSpecifiedAllocationSizeGen(int newSpecifiedAllocationSize) {
+ int oldSpecifiedAllocationSize = specifiedAllocationSize;
+ specifiedAllocationSize = newSpecifiedAllocationSize;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_GENERATOR__SPECIFIED_ALLOCATION_SIZE, oldSpecifiedAllocationSize, specifiedAllocationSize));
+ }
+
+ public void setSpecifiedAllocationSize(int newSpecifiedAllocationSize) {
+ setSpecifiedAllocationSizeGen(newSpecifiedAllocationSize);
+ setSpecifiedAllocationSizeInJava(newSpecifiedAllocationSize);
+ }
+
+ private void setSpecifiedAllocationSizeInJava(int newSpecifiedAllocationSize) {
+ this.allocationSizeAdapter.setValue(newSpecifiedAllocationSize);
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Allocation Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Allocation Size</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Allocation Size</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIGenerator_DefaultAllocationSize()
+ * @model changeable="false"
+ * @generated
+ */
+ public int getDefaultAllocationSize() {
+ return defaultAllocationSize;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_GENERATOR__NAME :
+ return getName();
+ case JpaJavaMappingsPackage.JAVA_GENERATOR__INITIAL_VALUE :
+ return new Integer(getInitialValue());
+ case JpaJavaMappingsPackage.JAVA_GENERATOR__SPECIFIED_INITIAL_VALUE :
+ return new Integer(getSpecifiedInitialValue());
+ case JpaJavaMappingsPackage.JAVA_GENERATOR__DEFAULT_INITIAL_VALUE :
+ return new Integer(getDefaultInitialValue());
+ case JpaJavaMappingsPackage.JAVA_GENERATOR__ALLOCATION_SIZE :
+ return new Integer(getAllocationSize());
+ case JpaJavaMappingsPackage.JAVA_GENERATOR__SPECIFIED_ALLOCATION_SIZE :
+ return new Integer(getSpecifiedAllocationSize());
+ case JpaJavaMappingsPackage.JAVA_GENERATOR__DEFAULT_ALLOCATION_SIZE :
+ return new Integer(getDefaultAllocationSize());
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_GENERATOR__NAME :
+ setName((String) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_GENERATOR__SPECIFIED_INITIAL_VALUE :
+ setSpecifiedInitialValue(((Integer) newValue).intValue());
+ return;
+ case JpaJavaMappingsPackage.JAVA_GENERATOR__SPECIFIED_ALLOCATION_SIZE :
+ setSpecifiedAllocationSize(((Integer) newValue).intValue());
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_GENERATOR__NAME :
+ setName(NAME_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.JAVA_GENERATOR__SPECIFIED_INITIAL_VALUE :
+ setSpecifiedInitialValue(SPECIFIED_INITIAL_VALUE_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.JAVA_GENERATOR__SPECIFIED_ALLOCATION_SIZE :
+ setSpecifiedAllocationSize(SPECIFIED_ALLOCATION_SIZE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_GENERATOR__NAME :
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case JpaJavaMappingsPackage.JAVA_GENERATOR__INITIAL_VALUE :
+ return getInitialValue() != INITIAL_VALUE_EDEFAULT;
+ case JpaJavaMappingsPackage.JAVA_GENERATOR__SPECIFIED_INITIAL_VALUE :
+ return specifiedInitialValue != SPECIFIED_INITIAL_VALUE_EDEFAULT;
+ case JpaJavaMappingsPackage.JAVA_GENERATOR__DEFAULT_INITIAL_VALUE :
+ return defaultInitialValue != DEFAULT_INITIAL_VALUE_EDEFAULT;
+ case JpaJavaMappingsPackage.JAVA_GENERATOR__ALLOCATION_SIZE :
+ return getAllocationSize() != ALLOCATION_SIZE_EDEFAULT;
+ case JpaJavaMappingsPackage.JAVA_GENERATOR__SPECIFIED_ALLOCATION_SIZE :
+ return specifiedAllocationSize != SPECIFIED_ALLOCATION_SIZE_EDEFAULT;
+ case JpaJavaMappingsPackage.JAVA_GENERATOR__DEFAULT_ALLOCATION_SIZE :
+ return defaultAllocationSize != DEFAULT_ALLOCATION_SIZE_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IGenerator.class) {
+ switch (derivedFeatureID) {
+ case JpaJavaMappingsPackage.JAVA_GENERATOR__NAME :
+ return JpaCoreMappingsPackage.IGENERATOR__NAME;
+ case JpaJavaMappingsPackage.JAVA_GENERATOR__INITIAL_VALUE :
+ return JpaCoreMappingsPackage.IGENERATOR__INITIAL_VALUE;
+ case JpaJavaMappingsPackage.JAVA_GENERATOR__SPECIFIED_INITIAL_VALUE :
+ return JpaCoreMappingsPackage.IGENERATOR__SPECIFIED_INITIAL_VALUE;
+ case JpaJavaMappingsPackage.JAVA_GENERATOR__DEFAULT_INITIAL_VALUE :
+ return JpaCoreMappingsPackage.IGENERATOR__DEFAULT_INITIAL_VALUE;
+ case JpaJavaMappingsPackage.JAVA_GENERATOR__ALLOCATION_SIZE :
+ return JpaCoreMappingsPackage.IGENERATOR__ALLOCATION_SIZE;
+ case JpaJavaMappingsPackage.JAVA_GENERATOR__SPECIFIED_ALLOCATION_SIZE :
+ return JpaCoreMappingsPackage.IGENERATOR__SPECIFIED_ALLOCATION_SIZE;
+ case JpaJavaMappingsPackage.JAVA_GENERATOR__DEFAULT_ALLOCATION_SIZE :
+ return JpaCoreMappingsPackage.IGENERATOR__DEFAULT_ALLOCATION_SIZE;
+ 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 == IGenerator.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IGENERATOR__NAME :
+ return JpaJavaMappingsPackage.JAVA_GENERATOR__NAME;
+ case JpaCoreMappingsPackage.IGENERATOR__INITIAL_VALUE :
+ return JpaJavaMappingsPackage.JAVA_GENERATOR__INITIAL_VALUE;
+ case JpaCoreMappingsPackage.IGENERATOR__SPECIFIED_INITIAL_VALUE :
+ return JpaJavaMappingsPackage.JAVA_GENERATOR__SPECIFIED_INITIAL_VALUE;
+ case JpaCoreMappingsPackage.IGENERATOR__DEFAULT_INITIAL_VALUE :
+ return JpaJavaMappingsPackage.JAVA_GENERATOR__DEFAULT_INITIAL_VALUE;
+ case JpaCoreMappingsPackage.IGENERATOR__ALLOCATION_SIZE :
+ return JpaJavaMappingsPackage.JAVA_GENERATOR__ALLOCATION_SIZE;
+ case JpaCoreMappingsPackage.IGENERATOR__SPECIFIED_ALLOCATION_SIZE :
+ return JpaJavaMappingsPackage.JAVA_GENERATOR__SPECIFIED_ALLOCATION_SIZE;
+ case JpaCoreMappingsPackage.IGENERATOR__DEFAULT_ALLOCATION_SIZE :
+ return JpaJavaMappingsPackage.JAVA_GENERATOR__DEFAULT_ALLOCATION_SIZE;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(", specifiedInitialValue: ");
+ result.append(specifiedInitialValue);
+ result.append(", defaultInitialValue: ");
+ result.append(defaultInitialValue);
+ result.append(", specifiedAllocationSize: ");
+ result.append(specifiedAllocationSize);
+ result.append(", defaultAllocationSize: ");
+ result.append(defaultAllocationSize);
+ result.append(')');
+ return result.toString();
+ }
+
+ public ITextRange getTextRange() {
+ return this.member.annotationTextRange(this.annotationAdapter());
+ }
+
+ // ********** java annotations -> persistence model **********
+ public void updateFromJava(CompilationUnit astRoot) {
+ setName((String) this.nameAdapter.getValue(astRoot));
+ setSpecifiedInitialValue(this.initialValueAdapter.getValue(astRoot));
+ setSpecifiedAllocationSize(this.allocationSizeAdapter.getValue(astRoot));
+ }
+
+ // ********** static methods **********
+ protected static DeclarationAnnotationElementAdapter buildAdapter(DeclarationAnnotationAdapter annotationAdapter, String elementName) {
+ return new ConversionDeclarationAnnotationElementAdapter(annotationAdapter, elementName);
+ }
+
+ protected static DeclarationAnnotationElementAdapter buildNumberAdapter(DeclarationAnnotationAdapter annotationAdapter, String elementName) {
+ return new ConversionDeclarationAnnotationElementAdapter(annotationAdapter, elementName, NumberStringExpressionConverter.instance());
+ }
+} // JavaGenerator
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaId.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaId.java
new file mode 100644
index 0000000000..40725d78fd
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaId.java
@@ -0,0 +1,736 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+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.jdt.core.dom.Annotation;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.jdtutility.AnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.AnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.EnumDeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.MemberAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.ShortCircuitAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.SimpleDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.mappings.IColumn;
+import org.eclipse.jpt.core.internal.mappings.IColumnMapping;
+import org.eclipse.jpt.core.internal.mappings.IGeneratedValue;
+import org.eclipse.jpt.core.internal.mappings.IId;
+import org.eclipse.jpt.core.internal.mappings.ISequenceGenerator;
+import org.eclipse.jpt.core.internal.mappings.ITableGenerator;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.core.internal.mappings.TemporalType;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Id</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaId()
+ * @model kind="class"
+ * @generated
+ */
+public class JavaId extends JavaAttributeMapping implements IId
+{
+ private AnnotationAdapter generatedValueAnnotationAdapter;
+
+ private AnnotationAdapter tableGeneratorAnnotationAdapter;
+
+ private AnnotationAdapter sequenceGeneratorAnnotationAdapter;
+
+ private final AnnotationAdapter temporalAnnotationAdapter;
+
+ private final AnnotationElementAdapter temporalValueAdapter;
+
+ public static final DeclarationAnnotationAdapter DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.ID);
+
+ private static final DeclarationAnnotationAdapter TEMPORAL_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.TEMPORAL);
+
+ private static final DeclarationAnnotationElementAdapter TEMPORAL_VALUE_ADAPTER = buildTemporalValueAdapter();
+
+ /**
+ * The cached value of the '{@link #getColumn() <em>Column</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getColumn()
+ * @generated
+ * @ordered
+ */
+ protected IColumn column;
+
+ /**
+ * The cached value of the '{@link #getGeneratedValue() <em>Generated Value</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getGeneratedValue()
+ * @generated
+ * @ordered
+ */
+ protected IGeneratedValue generatedValue;
+
+ /**
+ * The default value of the '{@link #getTemporal() <em>Temporal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTemporal()
+ * @generated
+ * @ordered
+ */
+ protected static final TemporalType TEMPORAL_EDEFAULT = TemporalType.NULL;
+
+ /**
+ * The cached value of the '{@link #getTemporal() <em>Temporal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTemporal()
+ * @generated
+ * @ordered
+ */
+ protected TemporalType temporal = TEMPORAL_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getTableGenerator() <em>Table Generator</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTableGenerator()
+ * @generated
+ * @ordered
+ */
+ protected ITableGenerator tableGenerator;
+
+ /**
+ * The cached value of the '{@link #getSequenceGenerator() <em>Sequence Generator</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSequenceGenerator()
+ * @generated
+ * @ordered
+ */
+ protected ISequenceGenerator sequenceGenerator;
+
+ protected JavaId() {
+ throw new UnsupportedOperationException("Use JavaId(Attribute) instead");
+ }
+
+ protected JavaId(Attribute attribute) {
+ super(attribute);
+ this.column = JavaColumn.createColumnMappingColumn(buildColumnOwner(), getAttribute());
+ ((InternalEObject) this.column).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - JpaJavaMappingsPackage.JAVA_ID__COLUMN, null, null);
+ this.temporalAnnotationAdapter = new MemberAnnotationAdapter(this.getAttribute(), TEMPORAL_ADAPTER);
+ this.temporalValueAdapter = new ShortCircuitAnnotationElementAdapter(attribute, TEMPORAL_VALUE_ADAPTER);
+ this.generatedValueAnnotationAdapter = this.buildAnnotationAdapter(JavaGeneratedValue.DECLARATION_ANNOTATION_ADAPTER);
+ this.tableGeneratorAnnotationAdapter = this.buildAnnotationAdapter(JavaTableGenerator.DECLARATION_ANNOTATION_ADAPTER);
+ this.sequenceGeneratorAnnotationAdapter = this.buildAnnotationAdapter(JavaSequenceGenerator.DECLARATION_ANNOTATION_ADAPTER);
+ }
+
+ protected DeclarationAnnotationAdapter declarationAnnotationAdapter() {
+ return DECLARATION_ANNOTATION_ADAPTER;
+ }
+
+ @Override
+ protected void notifyChanged(Notification notification) {
+ super.notifyChanged(notification);
+ switch (notification.getFeatureID(IId.class)) {
+ case JpaCoreMappingsPackage.IID__TABLE_GENERATOR :
+ attributeChanged(notification.getNewValue(), this.tableGeneratorAnnotationAdapter);
+ break;
+ case JpaCoreMappingsPackage.IID__SEQUENCE_GENERATOR :
+ attributeChanged(notification.getNewValue(), this.sequenceGeneratorAnnotationAdapter);
+ break;
+ case JpaCoreMappingsPackage.IID__GENERATED_VALUE :
+ attributeChanged(notification.getNewValue(), this.generatedValueAnnotationAdapter);
+ default :
+ break;
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_ID;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Column</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Column</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Column</em>' containment reference.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIId_Column()
+ * @model containment="true" required="true" changeable="false"
+ * @generated
+ */
+ public IColumn getColumn() {
+ return column;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetColumn(IColumn newColumn, NotificationChain msgs) {
+ IColumn oldColumn = column;
+ column = newColumn;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_ID__COLUMN, oldColumn, newColumn);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Generated Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Generated 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>Generated Value</em>' containment reference.
+ * @see #setGeneratedValue(IGeneratedValue)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIId_GeneratedValue()
+ * @model containment="true"
+ * @generated
+ */
+ public IGeneratedValue getGeneratedValue() {
+ return generatedValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetGeneratedValue(IGeneratedValue newGeneratedValue, NotificationChain msgs) {
+ IGeneratedValue oldGeneratedValue = generatedValue;
+ generatedValue = newGeneratedValue;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_ID__GENERATED_VALUE, oldGeneratedValue, newGeneratedValue);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaId#getGeneratedValue <em>Generated Value</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Generated Value</em>' containment reference.
+ * @see #getGeneratedValue()
+ * @generated
+ */
+ public void setGeneratedValue(IGeneratedValue newGeneratedValue) {
+ if (newGeneratedValue != generatedValue) {
+ NotificationChain msgs = null;
+ if (generatedValue != null)
+ msgs = ((InternalEObject) generatedValue).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - JpaJavaMappingsPackage.JAVA_ID__GENERATED_VALUE, null, msgs);
+ if (newGeneratedValue != null)
+ msgs = ((InternalEObject) newGeneratedValue).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - JpaJavaMappingsPackage.JAVA_ID__GENERATED_VALUE, null, msgs);
+ msgs = basicSetGeneratedValue(newGeneratedValue, msgs);
+ if (msgs != null)
+ msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_ID__GENERATED_VALUE, newGeneratedValue, newGeneratedValue));
+ }
+
+ private static void attributeChanged(Object value, AnnotationAdapter annotationAdapter) {
+ Annotation annotation = annotationAdapter.getAnnotation();
+ if (value == null) {
+ if (annotation != null) {
+ annotationAdapter.removeAnnotation();
+ }
+ }
+ else {
+ if (annotation == null) {
+ annotationAdapter.newMarkerAnnotation();
+ }
+ }
+ }
+
+ /**
+ * Returns the value of the '<em><b>Temporal</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.TemporalType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Temporal</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Temporal</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.TemporalType
+ * @see #setTemporal(TemporalType)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIId_Temporal()
+ * @model
+ * @generated
+ */
+ public TemporalType getTemporal() {
+ return temporal;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaId#getTemporal <em>Temporal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Temporal</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.TemporalType
+ * @see #getTemporal()
+ * @generated
+ */
+ public void setTemporalGen(TemporalType newTemporal) {
+ TemporalType oldTemporal = temporal;
+ temporal = newTemporal == null ? TEMPORAL_EDEFAULT : newTemporal;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_ID__TEMPORAL, oldTemporal, temporal));
+ }
+
+ public void setTemporal(TemporalType newTemporal) {
+ if (newTemporal != TemporalType.NULL) {
+ if (this.temporalAnnotationAdapter.getAnnotation() == null) {
+ this.temporalAnnotationAdapter.newMarkerAnnotation();
+ }
+ this.temporalValueAdapter.setValue(newTemporal.convertToJavaAnnotationValue());
+ }
+ else if (this.temporalAnnotationAdapter.getAnnotation() != null) {
+ this.temporalAnnotationAdapter.removeAnnotation();
+ }
+ setTemporalGen(newTemporal);
+ }
+
+ /**
+ * Returns the value of the '<em><b>Table Generator</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Table Generator</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Table Generator</em>' containment reference.
+ * @see #setTableGenerator(ITableGenerator)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIId_TableGenerator()
+ * @model containment="true"
+ * @generated
+ */
+ public ITableGenerator getTableGenerator() {
+ return tableGenerator;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetTableGenerator(ITableGenerator newTableGenerator, NotificationChain msgs) {
+ ITableGenerator oldTableGenerator = tableGenerator;
+ tableGenerator = newTableGenerator;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_ID__TABLE_GENERATOR, oldTableGenerator, newTableGenerator);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaId#getTableGenerator <em>Table Generator</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Table Generator</em>' containment reference.
+ * @see #getTableGenerator()
+ * @generated
+ */
+ public void setTableGenerator(ITableGenerator newTableGenerator) {
+ if (newTableGenerator != tableGenerator) {
+ NotificationChain msgs = null;
+ if (tableGenerator != null)
+ msgs = ((InternalEObject) tableGenerator).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - JpaJavaMappingsPackage.JAVA_ID__TABLE_GENERATOR, null, msgs);
+ if (newTableGenerator != null)
+ msgs = ((InternalEObject) newTableGenerator).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - JpaJavaMappingsPackage.JAVA_ID__TABLE_GENERATOR, null, msgs);
+ msgs = basicSetTableGenerator(newTableGenerator, msgs);
+ if (msgs != null)
+ msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_ID__TABLE_GENERATOR, newTableGenerator, newTableGenerator));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Sequence Generator</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Sequence Generator</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Sequence Generator</em>' containment reference.
+ * @see #setSequenceGenerator(ISequenceGenerator)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIId_SequenceGenerator()
+ * @model containment="true"
+ * @generated
+ */
+ public ISequenceGenerator getSequenceGenerator() {
+ return sequenceGenerator;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetSequenceGenerator(ISequenceGenerator newSequenceGenerator, NotificationChain msgs) {
+ ISequenceGenerator oldSequenceGenerator = sequenceGenerator;
+ sequenceGenerator = newSequenceGenerator;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_ID__SEQUENCE_GENERATOR, oldSequenceGenerator, newSequenceGenerator);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaId#getSequenceGenerator <em>Sequence Generator</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Sequence Generator</em>' containment reference.
+ * @see #getSequenceGenerator()
+ * @generated
+ */
+ public void setSequenceGenerator(ISequenceGenerator newSequenceGenerator) {
+ if (newSequenceGenerator != sequenceGenerator) {
+ NotificationChain msgs = null;
+ if (sequenceGenerator != null)
+ msgs = ((InternalEObject) sequenceGenerator).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - JpaJavaMappingsPackage.JAVA_ID__SEQUENCE_GENERATOR, null, msgs);
+ if (newSequenceGenerator != null)
+ msgs = ((InternalEObject) newSequenceGenerator).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - JpaJavaMappingsPackage.JAVA_ID__SEQUENCE_GENERATOR, null, msgs);
+ msgs = basicSetSequenceGenerator(newSequenceGenerator, msgs);
+ if (msgs != null)
+ msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_ID__SEQUENCE_GENERATOR, newSequenceGenerator, newSequenceGenerator));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_ID__COLUMN :
+ return basicSetColumn(null, msgs);
+ case JpaJavaMappingsPackage.JAVA_ID__GENERATED_VALUE :
+ return basicSetGeneratedValue(null, msgs);
+ case JpaJavaMappingsPackage.JAVA_ID__TABLE_GENERATOR :
+ return basicSetTableGenerator(null, msgs);
+ case JpaJavaMappingsPackage.JAVA_ID__SEQUENCE_GENERATOR :
+ return basicSetSequenceGenerator(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 JpaJavaMappingsPackage.JAVA_ID__COLUMN :
+ return getColumn();
+ case JpaJavaMappingsPackage.JAVA_ID__GENERATED_VALUE :
+ return getGeneratedValue();
+ case JpaJavaMappingsPackage.JAVA_ID__TEMPORAL :
+ return getTemporal();
+ case JpaJavaMappingsPackage.JAVA_ID__TABLE_GENERATOR :
+ return getTableGenerator();
+ case JpaJavaMappingsPackage.JAVA_ID__SEQUENCE_GENERATOR :
+ return getSequenceGenerator();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_ID__GENERATED_VALUE :
+ setGeneratedValue((IGeneratedValue) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_ID__TEMPORAL :
+ setTemporal((TemporalType) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_ID__TABLE_GENERATOR :
+ setTableGenerator((ITableGenerator) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_ID__SEQUENCE_GENERATOR :
+ setSequenceGenerator((ISequenceGenerator) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_ID__GENERATED_VALUE :
+ setGeneratedValue((IGeneratedValue) null);
+ return;
+ case JpaJavaMappingsPackage.JAVA_ID__TEMPORAL :
+ setTemporal(TEMPORAL_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.JAVA_ID__TABLE_GENERATOR :
+ setTableGenerator((ITableGenerator) null);
+ return;
+ case JpaJavaMappingsPackage.JAVA_ID__SEQUENCE_GENERATOR :
+ setSequenceGenerator((ISequenceGenerator) null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_ID__COLUMN :
+ return column != null;
+ case JpaJavaMappingsPackage.JAVA_ID__GENERATED_VALUE :
+ return generatedValue != null;
+ case JpaJavaMappingsPackage.JAVA_ID__TEMPORAL :
+ return temporal != TEMPORAL_EDEFAULT;
+ case JpaJavaMappingsPackage.JAVA_ID__TABLE_GENERATOR :
+ return tableGenerator != null;
+ case JpaJavaMappingsPackage.JAVA_ID__SEQUENCE_GENERATOR :
+ return sequenceGenerator != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IColumnMapping.class) {
+ switch (derivedFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IId.class) {
+ switch (derivedFeatureID) {
+ case JpaJavaMappingsPackage.JAVA_ID__COLUMN :
+ return JpaCoreMappingsPackage.IID__COLUMN;
+ case JpaJavaMappingsPackage.JAVA_ID__GENERATED_VALUE :
+ return JpaCoreMappingsPackage.IID__GENERATED_VALUE;
+ case JpaJavaMappingsPackage.JAVA_ID__TEMPORAL :
+ return JpaCoreMappingsPackage.IID__TEMPORAL;
+ case JpaJavaMappingsPackage.JAVA_ID__TABLE_GENERATOR :
+ return JpaCoreMappingsPackage.IID__TABLE_GENERATOR;
+ case JpaJavaMappingsPackage.JAVA_ID__SEQUENCE_GENERATOR :
+ return JpaCoreMappingsPackage.IID__SEQUENCE_GENERATOR;
+ 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 == IColumnMapping.class) {
+ switch (baseFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IId.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IID__COLUMN :
+ return JpaJavaMappingsPackage.JAVA_ID__COLUMN;
+ case JpaCoreMappingsPackage.IID__GENERATED_VALUE :
+ return JpaJavaMappingsPackage.JAVA_ID__GENERATED_VALUE;
+ case JpaCoreMappingsPackage.IID__TEMPORAL :
+ return JpaJavaMappingsPackage.JAVA_ID__TEMPORAL;
+ case JpaCoreMappingsPackage.IID__TABLE_GENERATOR :
+ return JpaJavaMappingsPackage.JAVA_ID__TABLE_GENERATOR;
+ case JpaCoreMappingsPackage.IID__SEQUENCE_GENERATOR :
+ return JpaJavaMappingsPackage.JAVA_ID__SEQUENCE_GENERATOR;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (temporal: ");
+ result.append(temporal);
+ result.append(')');
+ return result.toString();
+ }
+
+ public String getKey() {
+ return IMappingKeys.ID_ATTRIBUTE_MAPPING_KEY;
+ }
+
+ @Override
+ public void updateFromJava(CompilationUnit astRoot) {
+ super.updateFromJava(astRoot);
+ this.updateTemporalFromJava(astRoot);
+ ((JavaColumn) this.column).updateFromJava(astRoot);
+ this.updateGeneratedValueFromJava(astRoot);
+ this.updateTableGeneratorFromJava(astRoot);
+ this.updateSequenceGeneratorFromJava(astRoot);
+ }
+
+ private void updateGeneratedValueFromJava(CompilationUnit astRoot) {
+ if (this.generatedValueAnnotationAdapter.getAnnotation(astRoot) == null) {
+ if (getGeneratedValue() != null) {
+ setGeneratedValue(null);
+ }
+ }
+ else {
+ if (getGeneratedValue() == null) {
+ setGeneratedValue(createGeneratedValue());
+ }
+ ((JavaGeneratedValue) getGeneratedValue()).updateFromJava(astRoot);
+ }
+ }
+
+ private void updateTableGeneratorFromJava(CompilationUnit astRoot) {
+ if (this.tableGeneratorAnnotationAdapter.getAnnotation(astRoot) == null) {
+ if (getTableGenerator() != null) {
+ setTableGenerator(null);
+ }
+ }
+ else {
+ if (getTableGenerator() == null) {
+ setTableGenerator(createTableGenerator());
+ }
+ ((JavaTableGenerator) getTableGenerator()).updateFromJava(astRoot);
+ }
+ }
+
+ private void updateSequenceGeneratorFromJava(CompilationUnit astRoot) {
+ if (this.sequenceGeneratorAnnotationAdapter.getAnnotation(astRoot) == null) {
+ if (getSequenceGenerator() != null) {
+ setSequenceGenerator(null);
+ }
+ }
+ else {
+ if (getSequenceGenerator() == null) {
+ setSequenceGenerator(createSequenceGenerator());
+ }
+ ((JavaSequenceGenerator) getSequenceGenerator()).updateFromJava(astRoot);
+ }
+ }
+
+ /*
+ * The @Temporal annotation is a bit different than most JPA annotations.
+ * For some indecipherable reason it has no default value (e.g. TIMESTAMP).
+ * Also, it is *required* for any attribute declared with a type of
+ * java.util.Date or java.util.Calendar; otherwise, it is *prohibited*.
+ * As a result we allow a Basic mapping to have a null 'temporal',
+ * indicating that the annotation is completely missing, as opposed
+ * to the annotation being present but its value is invalid (e.g.
+ * @Temporal(FRIDAY)).
+ *
+ * TODO this comment is wrong now, revisit this with Brian at some point
+ */
+ private void updateTemporalFromJava(CompilationUnit astRoot) {
+ if (this.temporalAnnotationAdapter.getAnnotation(astRoot) == null) {
+ setTemporalGen(TemporalType.NULL);
+ }
+ else {
+ setTemporalGen(TemporalType.fromJavaAnnotationValue(this.temporalValueAdapter.getValue(astRoot)));
+ }
+ }
+
+ public String primaryKeyColumnName() {
+ return this.getColumn().getName();
+ }
+
+ public IGeneratedValue createGeneratedValue() {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaGeneratedValue(getAttribute());
+ }
+
+ public ISequenceGenerator createSequenceGenerator() {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaSequenceGenerator(getAttribute());
+ }
+
+ public ITableGenerator createTableGenerator() {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaTableGenerator(getAttribute());
+ }
+
+ // ********** static methods **********
+ private static DeclarationAnnotationElementAdapter buildTemporalValueAdapter() {
+ return new EnumDeclarationAnnotationElementAdapter(TEMPORAL_ADAPTER, JPA.TEMPORAL__VALUE, false);
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaIdProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaIdProvider.java
new file mode 100644
index 0000000000..7b77578c86
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaIdProvider.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMapping;
+import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMappingProvider;
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+
+/**
+ *
+ */
+public class JavaIdProvider
+ implements IJavaAttributeMappingProvider
+{
+
+ // singleton
+ private static final JavaIdProvider INSTANCE = new JavaIdProvider();
+
+ /**
+ * Return the singleton.
+ */
+ public static IJavaAttributeMappingProvider instance() {
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private JavaIdProvider() {
+ super();
+ }
+
+ public String key() {
+ return IMappingKeys.ID_ATTRIBUTE_MAPPING_KEY;
+ }
+
+ public boolean defaultApplies(Attribute attribute, DefaultsContext defaultsContext) {
+ return false;
+ }
+
+ public IJavaAttributeMapping buildMapping(Attribute attribute) {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaId(attribute);
+ }
+
+ public DeclarationAnnotationAdapter declarationAnnotationAdapter() {
+ return JavaId.DECLARATION_ANNOTATION_ADAPTER;
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaJoinColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaJoinColumn.java
new file mode 100644
index 0000000000..fe1dc2c75a
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaJoinColumn.java
@@ -0,0 +1,477 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jdt.core.dom.Annotation;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.jdtutility.AnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.CombinationIndexedDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.IndexedAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.IndexedDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Member;
+import org.eclipse.jpt.core.internal.jdtutility.MemberIndexedAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.NestedIndexedDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.SimpleDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.core.internal.platform.BaseJpaPlatform;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+import org.eclipse.jpt.db.internal.Column;
+import org.eclipse.jpt.db.internal.Table;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Join Column</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaJoinColumn()
+ * @model kind="class"
+ * @generated
+ */
+public class JavaJoinColumn extends AbstractJavaColumn implements IJoinColumn
+{
+ /**
+ * The default value of the '{@link #getReferencedColumnName() <em>Referenced Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getReferencedColumnName()
+ * @generated
+ * @ordered
+ */
+ protected static final String REFERENCED_COLUMN_NAME_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getSpecifiedReferencedColumnName() <em>Specified Referenced Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedReferencedColumnName()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_REFERENCED_COLUMN_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedReferencedColumnName() <em>Specified Referenced Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedReferencedColumnName()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedReferencedColumnName = SPECIFIED_REFERENCED_COLUMN_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultReferencedColumnName() <em>Default Referenced Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultReferencedColumnName()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_REFERENCED_COLUMN_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultReferencedColumnName() <em>Default Referenced Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultReferencedColumnName()
+ * @generated
+ * @ordered
+ */
+ protected String defaultReferencedColumnName = DEFAULT_REFERENCED_COLUMN_NAME_EDEFAULT;
+
+ private final IndexedAnnotationAdapter annotationAdapter;
+
+ // hold this so we can get the 'referenced column name' text range
+ private final DeclarationAnnotationElementAdapter referencedColumnNameDeclarationAdapter;
+
+ private final AnnotationElementAdapter referencedColumnNameAdapter;
+
+ public static final SimpleDeclarationAnnotationAdapter SINGLE_DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.JOIN_COLUMN);
+
+ public static final SimpleDeclarationAnnotationAdapter MULTIPLE_DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.JOIN_COLUMNS);
+
+ protected JavaJoinColumn() {
+ super();
+ throw new UnsupportedOperationException("Use JavaJoinColumn(Owner, Member, IndexedDeclarationAnnotationAdapter) instead");
+ }
+
+ protected JavaJoinColumn(IJoinColumn.Owner owner, Member member, IndexedDeclarationAnnotationAdapter daa) {
+ super(owner, member, daa);
+ this.annotationAdapter = new MemberIndexedAnnotationAdapter(member, daa);
+ this.referencedColumnNameDeclarationAdapter = this.buildStringElementAdapter(JPA.JOIN_COLUMN__REFERENCED_COLUMN_NAME);
+ this.referencedColumnNameAdapter = this.buildShortCircuitElementAdapter(this.referencedColumnNameDeclarationAdapter);
+ }
+
+ @Override
+ protected String nameElementName() {
+ return JPA.JOIN_COLUMN__NAME;
+ }
+
+ @Override
+ protected String columnDefinitionElementName() {
+ return JPA.JOIN_COLUMN__COLUMN_DEFINITION;
+ }
+
+ @Override
+ protected String tableElementName() {
+ return JPA.JOIN_COLUMN__TABLE;
+ }
+
+ @Override
+ protected String uniqueElementName() {
+ return JPA.JOIN_COLUMN__UNIQUE;
+ }
+
+ @Override
+ protected String nullableElementName() {
+ return JPA.JOIN_COLUMN__NULLABLE;
+ }
+
+ @Override
+ protected String insertableElementName() {
+ return JPA.JOIN_COLUMN__INSERTABLE;
+ }
+
+ @Override
+ protected String updatableElementName() {
+ return JPA.JOIN_COLUMN__UPDATABLE;
+ }
+
+ @Override
+ protected void notifyChanged(Notification notification) {
+ super.notifyChanged(notification);
+ switch (notification.getFeatureID(IAbstractJoinColumn.class)) {
+ case JpaCoreMappingsPackage.IABSTRACT_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME :
+ this.referencedColumnNameAdapter.setValue(notification.getNewValue());
+ break;
+ default :
+ break;
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_JOIN_COLUMN;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Referenced Column Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Referenced Column Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIJoinColumn_ReferencedColumnName()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated NOT
+ */
+ public String getReferencedColumnName() {
+ return (this.specifiedReferencedColumnName == null) ? this.defaultReferencedColumnName : this.specifiedReferencedColumnName;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Referenced Column Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Referenced Column Name</em>' attribute.
+ * @see #setSpecifiedReferencedColumnName(String)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIAbstractJoinColumn_SpecifiedReferencedColumnName()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedReferencedColumnName() {
+ return specifiedReferencedColumnName;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaJoinColumn#getSpecifiedReferencedColumnName <em>Specified Referenced Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Referenced Column Name</em>' attribute.
+ * @see #getSpecifiedReferencedColumnName()
+ * @generated
+ */
+ public void setSpecifiedReferencedColumnName(String newSpecifiedReferencedColumnName) {
+ String oldSpecifiedReferencedColumnName = specifiedReferencedColumnName;
+ specifiedReferencedColumnName = newSpecifiedReferencedColumnName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME, oldSpecifiedReferencedColumnName, specifiedReferencedColumnName));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Referenced Column Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Referenced Column Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIAbstractJoinColumn_DefaultReferencedColumnName()
+ * @model changeable="false"
+ * @generated
+ */
+ public String getDefaultReferencedColumnName() {
+ return defaultReferencedColumnName;
+ }
+
+ protected void setDefaultReferencedColumnName(String newDefaultReferencedColumnName) {
+ String oldDefaultReferencedColumnName = this.defaultReferencedColumnName;
+ this.defaultReferencedColumnName = newDefaultReferencedColumnName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME, oldDefaultReferencedColumnName, newDefaultReferencedColumnName));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_JOIN_COLUMN__REFERENCED_COLUMN_NAME :
+ return getReferencedColumnName();
+ case JpaJavaMappingsPackage.JAVA_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME :
+ return getSpecifiedReferencedColumnName();
+ case JpaJavaMappingsPackage.JAVA_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME :
+ return getDefaultReferencedColumnName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME :
+ setSpecifiedReferencedColumnName((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME :
+ setSpecifiedReferencedColumnName(SPECIFIED_REFERENCED_COLUMN_NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_JOIN_COLUMN__REFERENCED_COLUMN_NAME :
+ return REFERENCED_COLUMN_NAME_EDEFAULT == null ? getReferencedColumnName() != null : !REFERENCED_COLUMN_NAME_EDEFAULT.equals(getReferencedColumnName());
+ case JpaJavaMappingsPackage.JAVA_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME :
+ return SPECIFIED_REFERENCED_COLUMN_NAME_EDEFAULT == null ? specifiedReferencedColumnName != null : !SPECIFIED_REFERENCED_COLUMN_NAME_EDEFAULT.equals(specifiedReferencedColumnName);
+ case JpaJavaMappingsPackage.JAVA_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME :
+ return DEFAULT_REFERENCED_COLUMN_NAME_EDEFAULT == null ? defaultReferencedColumnName != null : !DEFAULT_REFERENCED_COLUMN_NAME_EDEFAULT.equals(defaultReferencedColumnName);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IAbstractJoinColumn.class) {
+ switch (derivedFeatureID) {
+ case JpaJavaMappingsPackage.JAVA_JOIN_COLUMN__REFERENCED_COLUMN_NAME :
+ return JpaCoreMappingsPackage.IABSTRACT_JOIN_COLUMN__REFERENCED_COLUMN_NAME;
+ case JpaJavaMappingsPackage.JAVA_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME :
+ return JpaCoreMappingsPackage.IABSTRACT_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME;
+ case JpaJavaMappingsPackage.JAVA_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME :
+ return JpaCoreMappingsPackage.IABSTRACT_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IJoinColumn.class) {
+ switch (derivedFeatureID) {
+ 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 == IAbstractJoinColumn.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IABSTRACT_JOIN_COLUMN__REFERENCED_COLUMN_NAME :
+ return JpaJavaMappingsPackage.JAVA_JOIN_COLUMN__REFERENCED_COLUMN_NAME;
+ case JpaCoreMappingsPackage.IABSTRACT_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME :
+ return JpaJavaMappingsPackage.JAVA_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME;
+ case JpaCoreMappingsPackage.IABSTRACT_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME :
+ return JpaJavaMappingsPackage.JAVA_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IJoinColumn.class) {
+ switch (baseFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (specifiedReferencedColumnName: ");
+ result.append(specifiedReferencedColumnName);
+ result.append(", defaultReferencedColumnName: ");
+ result.append(defaultReferencedColumnName);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public IJoinColumn.Owner getOwner() {
+ return (IJoinColumn.Owner) super.getOwner();
+ }
+
+ public Table dbReferencedColumnTable() {
+ return getOwner().dbReferencedColumnTable();
+ }
+
+ public Column dbReferencedColumn() {
+ Table table = this.dbReferencedColumnTable();
+ return (table == null) ? null : table.columnNamed(this.getReferencedColumnName());
+ }
+
+ public boolean isReferencedColumnResolved() {
+ return dbReferencedColumn() != null;
+ }
+
+ public ITextRange getReferencedColumnNameTextRange() {
+ return elementTextRange(this.referencedColumnNameDeclarationAdapter);
+ }
+
+ /**
+ * allow owners to verify the annotation
+ */
+ public Annotation annotation(CompilationUnit astRoot) {
+ return this.annotationAdapter.getAnnotation(astRoot);
+ }
+
+ @Override
+ public void updateFromJava(CompilationUnit astRoot) {
+ super.updateFromJava(astRoot);
+ this.setSpecifiedReferencedColumnName((String) this.referencedColumnNameAdapter.getValue(astRoot));
+ }
+
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ this.setDefaultReferencedColumnName((String) defaultsContext.getDefault(BaseJpaPlatform.DEFAULT_JOIN_COLUMN_REFERENCED_COLUMN_NAME_KEY));
+ this.setDefaultName((String) defaultsContext.getDefault(BaseJpaPlatform.DEFAULT_JOIN_COLUMN_NAME_KEY));
+ this.setDefaultTable((String) defaultsContext.getDefault(BaseJpaPlatform.DEFAULT_JOIN_COLUMN_TABLE_KEY));
+ }
+
+ // ********** persistence model -> java annotations **********
+ void moveAnnotation(int newIndex) {
+ this.annotationAdapter.moveAnnotation(newIndex);
+ }
+
+ void newAnnotation() {
+ this.annotationAdapter.newMarkerAnnotation();
+ }
+
+ void removeAnnotation() {
+ this.annotationAdapter.removeAnnotation();
+ }
+
+ // ********** static methods **********
+ static JavaJoinColumn createSingleRelationshipMappingJoinColumn(IJoinColumn.Owner owner, Member member, int index) {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaJoinColumn(owner, member, buildSingleRelationshipMappingAnnotationAdapter(index));
+ }
+
+ private static IndexedDeclarationAnnotationAdapter buildSingleRelationshipMappingAnnotationAdapter(int index) {
+ return new CombinationIndexedDeclarationAnnotationAdapter(SINGLE_DECLARATION_ANNOTATION_ADAPTER, MULTIPLE_DECLARATION_ANNOTATION_ADAPTER, index, JPA.JOIN_COLUMN);
+ }
+
+ static JavaJoinColumn createAssociationOverrideJoinColumn(IJoinColumn.Owner owner, Member member, int index) {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaJoinColumn(owner, member, buildAssociationOverrideAnnotationAdapter(index));
+ }
+
+ private static IndexedDeclarationAnnotationAdapter buildAssociationOverrideAnnotationAdapter(int index) {
+ return new NestedIndexedDeclarationAnnotationAdapter(JavaAssociationOverride.SINGLE_DECLARATION_ANNOTATION_ADAPTER, JPA.ASSOCIATION_OVERRIDE__JOIN_COLUMNS, index, JPA.JOIN_COLUMN);
+ }
+
+ static JavaJoinColumn createJoinTableJoinColumn(IJoinColumn.Owner owner, Member member, int index) {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaJoinColumn(owner, member, buildJoinTableAnnotationAdapter(index));
+ }
+
+ private static IndexedDeclarationAnnotationAdapter buildJoinTableAnnotationAdapter(int index) {
+ return new NestedIndexedDeclarationAnnotationAdapter(JavaJoinTable.DECLARATION_ANNOTATION_ADAPTER, JPA.JOIN_TABLE__JOIN_COLUMNS, index, JPA.JOIN_COLUMN);
+ }
+
+ static JavaJoinColumn createJoinTableInverseJoinColumn(IJoinColumn.Owner owner, Member member, int index) {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaJoinColumn(owner, member, buildJoinTableInverseAnnotationAdapter(index));
+ }
+
+ private static IndexedDeclarationAnnotationAdapter buildJoinTableInverseAnnotationAdapter(int index) {
+ return new NestedIndexedDeclarationAnnotationAdapter(JavaJoinTable.DECLARATION_ANNOTATION_ADAPTER, JPA.JOIN_TABLE__INVERSE_JOIN_COLUMNS, index, JPA.JOIN_COLUMN);
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaJoinTable.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaJoinTable.java
new file mode 100644
index 0000000000..4e99d26d8c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaJoinTable.java
@@ -0,0 +1,788 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+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.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.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.jdtutility.ConversionDeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Member;
+import org.eclipse.jpt.core.internal.jdtutility.SimpleDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.IJoinTable;
+import org.eclipse.jpt.core.internal.mappings.IRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.core.internal.platform.BaseJpaPlatform;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Join Table</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaJoinTable()
+ * @model kind="class"
+ * @generated
+ */
+public class JavaJoinTable extends AbstractJavaTable implements IJoinTable
+{
+ /**
+ * The cached value of the '{@link #getSpecifiedJoinColumns() <em>Specified Join Columns</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedJoinColumns()
+ * @generated
+ * @ordered
+ */
+ protected EList<IJoinColumn> specifiedJoinColumns;
+
+ /**
+ * The cached value of the '{@link #getDefaultJoinColumns() <em>Default Join Columns</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultJoinColumns()
+ * @generated
+ * @ordered
+ */
+ protected EList<IJoinColumn> defaultJoinColumns;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedInverseJoinColumns() <em>Specified Inverse Join Columns</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedInverseJoinColumns()
+ * @generated
+ * @ordered
+ */
+ protected EList<IJoinColumn> specifiedInverseJoinColumns;
+
+ /**
+ * The cached value of the '{@link #getDefaultInverseJoinColumns() <em>Default Inverse Join Columns</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultInverseJoinColumns()
+ * @generated
+ * @ordered
+ */
+ protected EList<IJoinColumn> defaultInverseJoinColumns;
+
+ public static final DeclarationAnnotationAdapter DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.JOIN_TABLE);
+
+ private static final DeclarationAnnotationElementAdapter NAME_ADAPTER = new ConversionDeclarationAnnotationElementAdapter(DECLARATION_ANNOTATION_ADAPTER, JPA.JOIN_TABLE__NAME);
+
+ private static final DeclarationAnnotationElementAdapter SCHEMA_ADAPTER = new ConversionDeclarationAnnotationElementAdapter(DECLARATION_ANNOTATION_ADAPTER, JPA.JOIN_TABLE__SCHEMA);
+
+ private static final DeclarationAnnotationElementAdapter CATALOG_ADAPTER = new ConversionDeclarationAnnotationElementAdapter(DECLARATION_ANNOTATION_ADAPTER, JPA.JOIN_TABLE__CATALOG);
+
+ protected JavaJoinTable() {
+ super();
+ throw new UnsupportedOperationException("Use JavaJoinTable(Owner, Member) instead");
+ }
+
+ protected JavaJoinTable(Owner owner, Member member) {
+ super(owner, member, DECLARATION_ANNOTATION_ADAPTER);
+ this.getDefaultJoinColumns().add(this.createJoinColumn(new JoinColumnOwner(this), member));
+ this.getDefaultInverseJoinColumns().add(this.createJoinColumn(new InverseJoinColumnOwner(this), member));
+ }
+
+ // ********** AbstractJavaTable implementation **********
+ @Override
+ protected DeclarationAnnotationElementAdapter nameAdapter(DeclarationAnnotationAdapter declarationAnnotationAdapter) {
+ // ignore the daa passed in, @JoinTable is never nested
+ return NAME_ADAPTER;
+ }
+
+ @Override
+ protected DeclarationAnnotationElementAdapter schemaAdapter(DeclarationAnnotationAdapter declarationAnnotationAdapter) {
+ // ignore the daa passed in, @JoinTable is never nested
+ return SCHEMA_ADAPTER;
+ }
+
+ @Override
+ protected DeclarationAnnotationElementAdapter catalogAdapter(DeclarationAnnotationAdapter declarationAnnotationAdapter) {
+ // ignore the daa passed in, @JoinTable is never nested
+ return CATALOG_ADAPTER;
+ }
+
+ private IJoinColumn createJoinColumn(IJoinColumn.Owner joinColumnOwner, Member joinColumnMember) {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaJoinColumn(joinColumnOwner, joinColumnMember);
+ }
+
+ /**
+ * check for changes to the 'specifiedJoinColumns' and
+ * 'specifiedInverseJoinColumns' lists so we can notify the
+ * model adapter of any changes;
+ * also listen for changes to the 'defaultJoinColumns' and
+ * 'defaultInverseJoinColumns' lists so we can spank the developer
+ */
+ @Override
+ protected void notifyChanged(Notification notification) {
+ super.notifyChanged(notification);
+ switch (notification.getFeatureID(IJoinTable.class)) {
+ case JpaCoreMappingsPackage.IJOIN_TABLE__SPECIFIED_JOIN_COLUMNS :
+ specifiedJoinColumnsChanged(notification);
+ break;
+ case JpaCoreMappingsPackage.IJOIN_TABLE__SPECIFIED_INVERSE_JOIN_COLUMNS :
+ specifiedInverseJoinColumnsChanged(notification);
+ break;
+ default :
+ break;
+ }
+ }
+
+ void specifiedJoinColumnsChanged(Notification notification) {
+ switch (notification.getEventType()) {
+ case Notification.ADD :
+ specifiedJoinColumnAdded(notification.getPosition(), (IJoinColumn) notification.getNewValue());
+ break;
+ case Notification.ADD_MANY :
+ specifiedJoinColumnsAdded(notification.getPosition(), (List<IJoinColumn>) notification.getNewValue());
+ break;
+ case Notification.REMOVE :
+ specifiedJoinColumnRemoved(notification.getPosition(), (IJoinColumn) notification.getOldValue());
+ break;
+ case Notification.REMOVE_MANY :
+ if (notification.getPosition() == Notification.NO_INDEX) {
+ specifiedJoinColumnsCleared((List<IJoinColumn>) notification.getOldValue());
+ }
+ else {
+ // Notification.getNewValue() returns an array of the positions of objects that were removed
+ specifiedJoinColumnsRemoved((int[]) notification.getNewValue(), (List<IJoinColumn>) notification.getOldValue());
+ }
+ break;
+ case Notification.SET :
+ if (!notification.isTouch()) {
+ specifiedJoinColumnSet(notification.getPosition(), (IJoinColumn) notification.getOldValue(), (IJoinColumn) notification.getNewValue());
+ }
+ break;
+ case Notification.MOVE :
+ // Notification.getOldValue() returns the source index
+ // Notification.getPositon() returns the target index
+ // Notification.getNewValue() returns the moved object
+ specifiedJoinColumnMoved(notification.getOldIntValue(), notification.getPosition(), (IJoinColumn) notification.getNewValue());
+ break;
+ default :
+ break;
+ }
+ }
+
+ void specifiedInverseJoinColumnsChanged(Notification notification) {
+ switch (notification.getEventType()) {
+ case Notification.ADD :
+ specifiedInverseJoinColumnAdded(notification.getPosition(), (IJoinColumn) notification.getNewValue());
+ break;
+ case Notification.ADD_MANY :
+ specifiedInverseJoinColumnsAdded(notification.getPosition(), (List<IJoinColumn>) notification.getNewValue());
+ break;
+ case Notification.REMOVE :
+ specifiedInverseJoinColumnRemoved(notification.getPosition(), (IJoinColumn) notification.getOldValue());
+ break;
+ case Notification.REMOVE_MANY :
+ if (notification.getPosition() == Notification.NO_INDEX) {
+ specifiedInverseJoinColumnsCleared((List<IJoinColumn>) notification.getOldValue());
+ }
+ else {
+ // Notification.getNewValue() returns an array of the positions of objects that were removed
+ specifiedInverseJoinColumnsRemoved((int[]) notification.getNewValue(), (List<IJoinColumn>) notification.getOldValue());
+ }
+ break;
+ case Notification.SET :
+ if (!notification.isTouch()) {
+ specifiedInverseJoinColumnSet(notification.getPosition(), (IJoinColumn) notification.getOldValue(), (IJoinColumn) notification.getNewValue());
+ }
+ break;
+ case Notification.MOVE :
+ // Notification.getOldValue() returns the source index
+ // Notification.getPositon() returns the target index
+ // Notification.getNewValue() returns the moved object
+ specifiedInverseJoinColumnMoved(notification.getOldIntValue(), notification.getPosition(), (IJoinColumn) notification.getNewValue());
+ break;
+ default :
+ break;
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_JOIN_TABLE;
+ }
+
+ public EList<IJoinColumn> getJoinColumns() {
+ return this.getSpecifiedJoinColumns().isEmpty() ? this.getDefaultJoinColumns() : this.getSpecifiedJoinColumns();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Join Columns</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>Specified Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIJoinTable_SpecifiedJoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IJoinColumn" containment="true"
+ * @generated
+ */
+ public EList<IJoinColumn> getSpecifiedJoinColumns() {
+ if (specifiedJoinColumns == null) {
+ specifiedJoinColumns = new EObjectContainmentEList<IJoinColumn>(IJoinColumn.class, this, JpaJavaMappingsPackage.JAVA_JOIN_TABLE__SPECIFIED_JOIN_COLUMNS);
+ }
+ return specifiedJoinColumns;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Join Columns</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>Default Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIJoinTable_DefaultJoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IJoinColumn" containment="true"
+ * @generated
+ */
+ public EList<IJoinColumn> getDefaultJoinColumns() {
+ if (defaultJoinColumns == null) {
+ defaultJoinColumns = new EObjectContainmentEList<IJoinColumn>(IJoinColumn.class, this, JpaJavaMappingsPackage.JAVA_JOIN_TABLE__DEFAULT_JOIN_COLUMNS);
+ }
+ return defaultJoinColumns;
+ }
+
+ public EList<IJoinColumn> getInverseJoinColumns() {
+ return this.getSpecifiedInverseJoinColumns().isEmpty() ? this.getDefaultInverseJoinColumns() : this.getSpecifiedInverseJoinColumns();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Inverse Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Inverse Join Columns</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>Specified Inverse Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIJoinTable_SpecifiedInverseJoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IJoinColumn" containment="true"
+ * @generated
+ */
+ public EList<IJoinColumn> getSpecifiedInverseJoinColumns() {
+ if (specifiedInverseJoinColumns == null) {
+ specifiedInverseJoinColumns = new EObjectContainmentEList<IJoinColumn>(IJoinColumn.class, this, JpaJavaMappingsPackage.JAVA_JOIN_TABLE__SPECIFIED_INVERSE_JOIN_COLUMNS);
+ }
+ return specifiedInverseJoinColumns;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Inverse Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Inverse Join Columns</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>Default Inverse Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIJoinTable_DefaultInverseJoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IJoinColumn" containment="true"
+ * @generated
+ */
+ public EList<IJoinColumn> getDefaultInverseJoinColumns() {
+ if (defaultInverseJoinColumns == null) {
+ defaultInverseJoinColumns = new EObjectContainmentEList<IJoinColumn>(IJoinColumn.class, this, JpaJavaMappingsPackage.JAVA_JOIN_TABLE__DEFAULT_INVERSE_JOIN_COLUMNS);
+ }
+ return defaultInverseJoinColumns;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_JOIN_TABLE__JOIN_COLUMNS :
+ return ((InternalEList<?>) getJoinColumns()).basicRemove(otherEnd, msgs);
+ case JpaJavaMappingsPackage.JAVA_JOIN_TABLE__SPECIFIED_JOIN_COLUMNS :
+ return ((InternalEList<?>) getSpecifiedJoinColumns()).basicRemove(otherEnd, msgs);
+ case JpaJavaMappingsPackage.JAVA_JOIN_TABLE__DEFAULT_JOIN_COLUMNS :
+ return ((InternalEList<?>) getDefaultJoinColumns()).basicRemove(otherEnd, msgs);
+ case JpaJavaMappingsPackage.JAVA_JOIN_TABLE__INVERSE_JOIN_COLUMNS :
+ return ((InternalEList<?>) getInverseJoinColumns()).basicRemove(otherEnd, msgs);
+ case JpaJavaMappingsPackage.JAVA_JOIN_TABLE__SPECIFIED_INVERSE_JOIN_COLUMNS :
+ return ((InternalEList<?>) getSpecifiedInverseJoinColumns()).basicRemove(otherEnd, msgs);
+ case JpaJavaMappingsPackage.JAVA_JOIN_TABLE__DEFAULT_INVERSE_JOIN_COLUMNS :
+ return ((InternalEList<?>) getDefaultInverseJoinColumns()).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 JpaJavaMappingsPackage.JAVA_JOIN_TABLE__JOIN_COLUMNS :
+ return getJoinColumns();
+ case JpaJavaMappingsPackage.JAVA_JOIN_TABLE__SPECIFIED_JOIN_COLUMNS :
+ return getSpecifiedJoinColumns();
+ case JpaJavaMappingsPackage.JAVA_JOIN_TABLE__DEFAULT_JOIN_COLUMNS :
+ return getDefaultJoinColumns();
+ case JpaJavaMappingsPackage.JAVA_JOIN_TABLE__INVERSE_JOIN_COLUMNS :
+ return getInverseJoinColumns();
+ case JpaJavaMappingsPackage.JAVA_JOIN_TABLE__SPECIFIED_INVERSE_JOIN_COLUMNS :
+ return getSpecifiedInverseJoinColumns();
+ case JpaJavaMappingsPackage.JAVA_JOIN_TABLE__DEFAULT_INVERSE_JOIN_COLUMNS :
+ return getDefaultInverseJoinColumns();
+ }
+ 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 JpaJavaMappingsPackage.JAVA_JOIN_TABLE__SPECIFIED_JOIN_COLUMNS :
+ getSpecifiedJoinColumns().clear();
+ getSpecifiedJoinColumns().addAll((Collection<? extends IJoinColumn>) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_JOIN_TABLE__DEFAULT_JOIN_COLUMNS :
+ getDefaultJoinColumns().clear();
+ getDefaultJoinColumns().addAll((Collection<? extends IJoinColumn>) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_JOIN_TABLE__SPECIFIED_INVERSE_JOIN_COLUMNS :
+ getSpecifiedInverseJoinColumns().clear();
+ getSpecifiedInverseJoinColumns().addAll((Collection<? extends IJoinColumn>) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_JOIN_TABLE__DEFAULT_INVERSE_JOIN_COLUMNS :
+ getDefaultInverseJoinColumns().clear();
+ getDefaultInverseJoinColumns().addAll((Collection<? extends IJoinColumn>) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_JOIN_TABLE__SPECIFIED_JOIN_COLUMNS :
+ getSpecifiedJoinColumns().clear();
+ return;
+ case JpaJavaMappingsPackage.JAVA_JOIN_TABLE__DEFAULT_JOIN_COLUMNS :
+ getDefaultJoinColumns().clear();
+ return;
+ case JpaJavaMappingsPackage.JAVA_JOIN_TABLE__SPECIFIED_INVERSE_JOIN_COLUMNS :
+ getSpecifiedInverseJoinColumns().clear();
+ return;
+ case JpaJavaMappingsPackage.JAVA_JOIN_TABLE__DEFAULT_INVERSE_JOIN_COLUMNS :
+ getDefaultInverseJoinColumns().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_JOIN_TABLE__JOIN_COLUMNS :
+ return !getJoinColumns().isEmpty();
+ case JpaJavaMappingsPackage.JAVA_JOIN_TABLE__SPECIFIED_JOIN_COLUMNS :
+ return specifiedJoinColumns != null && !specifiedJoinColumns.isEmpty();
+ case JpaJavaMappingsPackage.JAVA_JOIN_TABLE__DEFAULT_JOIN_COLUMNS :
+ return defaultJoinColumns != null && !defaultJoinColumns.isEmpty();
+ case JpaJavaMappingsPackage.JAVA_JOIN_TABLE__INVERSE_JOIN_COLUMNS :
+ return !getInverseJoinColumns().isEmpty();
+ case JpaJavaMappingsPackage.JAVA_JOIN_TABLE__SPECIFIED_INVERSE_JOIN_COLUMNS :
+ return specifiedInverseJoinColumns != null && !specifiedInverseJoinColumns.isEmpty();
+ case JpaJavaMappingsPackage.JAVA_JOIN_TABLE__DEFAULT_INVERSE_JOIN_COLUMNS :
+ return defaultInverseJoinColumns != null && !defaultInverseJoinColumns.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IJoinTable.class) {
+ switch (derivedFeatureID) {
+ case JpaJavaMappingsPackage.JAVA_JOIN_TABLE__JOIN_COLUMNS :
+ return JpaCoreMappingsPackage.IJOIN_TABLE__JOIN_COLUMNS;
+ case JpaJavaMappingsPackage.JAVA_JOIN_TABLE__SPECIFIED_JOIN_COLUMNS :
+ return JpaCoreMappingsPackage.IJOIN_TABLE__SPECIFIED_JOIN_COLUMNS;
+ case JpaJavaMappingsPackage.JAVA_JOIN_TABLE__DEFAULT_JOIN_COLUMNS :
+ return JpaCoreMappingsPackage.IJOIN_TABLE__DEFAULT_JOIN_COLUMNS;
+ case JpaJavaMappingsPackage.JAVA_JOIN_TABLE__INVERSE_JOIN_COLUMNS :
+ return JpaCoreMappingsPackage.IJOIN_TABLE__INVERSE_JOIN_COLUMNS;
+ case JpaJavaMappingsPackage.JAVA_JOIN_TABLE__SPECIFIED_INVERSE_JOIN_COLUMNS :
+ return JpaCoreMappingsPackage.IJOIN_TABLE__SPECIFIED_INVERSE_JOIN_COLUMNS;
+ case JpaJavaMappingsPackage.JAVA_JOIN_TABLE__DEFAULT_INVERSE_JOIN_COLUMNS :
+ return JpaCoreMappingsPackage.IJOIN_TABLE__DEFAULT_INVERSE_JOIN_COLUMNS;
+ 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 == IJoinTable.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IJOIN_TABLE__JOIN_COLUMNS :
+ return JpaJavaMappingsPackage.JAVA_JOIN_TABLE__JOIN_COLUMNS;
+ case JpaCoreMappingsPackage.IJOIN_TABLE__SPECIFIED_JOIN_COLUMNS :
+ return JpaJavaMappingsPackage.JAVA_JOIN_TABLE__SPECIFIED_JOIN_COLUMNS;
+ case JpaCoreMappingsPackage.IJOIN_TABLE__DEFAULT_JOIN_COLUMNS :
+ return JpaJavaMappingsPackage.JAVA_JOIN_TABLE__DEFAULT_JOIN_COLUMNS;
+ case JpaCoreMappingsPackage.IJOIN_TABLE__INVERSE_JOIN_COLUMNS :
+ return JpaJavaMappingsPackage.JAVA_JOIN_TABLE__INVERSE_JOIN_COLUMNS;
+ case JpaCoreMappingsPackage.IJOIN_TABLE__SPECIFIED_INVERSE_JOIN_COLUMNS :
+ return JpaJavaMappingsPackage.JAVA_JOIN_TABLE__SPECIFIED_INVERSE_JOIN_COLUMNS;
+ case JpaCoreMappingsPackage.IJOIN_TABLE__DEFAULT_INVERSE_JOIN_COLUMNS :
+ return JpaJavaMappingsPackage.JAVA_JOIN_TABLE__DEFAULT_INVERSE_JOIN_COLUMNS;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ public IRelationshipMapping relationshipMapping() {
+ return (IRelationshipMapping) this.eContainer();
+ }
+
+ @Override
+ public void updateFromJava(CompilationUnit astRoot) {
+ super.updateFromJava(astRoot);
+ this.updateSpecifiedJoinColumnsFromJava(astRoot);
+ this.updateSpecifiedInverseJoinColumnsFromJava(astRoot);
+ }
+
+ @Override
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ super.refreshDefaults(defaultsContext);
+ this.setDefaultName((String) defaultsContext.getDefault(BaseJpaPlatform.DEFAULT_JOIN_TABLE_NAME_KEY));
+ }
+
+ /**
+ * here we just worry about getting the join column lists the same size;
+ * then we delegate to the join columns to synch themselves up
+ */
+ private void updateSpecifiedJoinColumnsFromJava(CompilationUnit astRoot) {
+ // synchronize the model join columns with the Java source
+ List<IJoinColumn> joinColumns = this.getSpecifiedJoinColumns();
+ int persSize = joinColumns.size();
+ int javaSize = 0;
+ boolean allJavaAnnotationsFound = false;
+ for (int i = 0; i < persSize; i++) {
+ JavaJoinColumn joinColumn = (JavaJoinColumn) joinColumns.get(i);
+ if (joinColumn.annotation(astRoot) == null) {
+ allJavaAnnotationsFound = true;
+ break; // no need to go any further
+ }
+ joinColumn.updateFromJava(astRoot);
+ javaSize++;
+ }
+ if (allJavaAnnotationsFound) {
+ // remove any model join columns beyond those that correspond to the Java annotations
+ while (persSize > javaSize) {
+ persSize--;
+ joinColumns.remove(persSize);
+ }
+ }
+ else {
+ // add new model join columns until they match the Java annotations
+ while (!allJavaAnnotationsFound) {
+ JavaJoinColumn joinColumn = this.createJavaJoinColumn(javaSize);
+ if (joinColumn.annotation(astRoot) == null) {
+ allJavaAnnotationsFound = true;
+ }
+ else {
+ this.getSpecifiedJoinColumns().add(joinColumn);
+ joinColumn.updateFromJava(astRoot);
+ javaSize++;
+ }
+ }
+ }
+ }
+
+ /**
+ * here we just worry about getting the inverse join column lists the same size;
+ * then we delegate to the join columns to synch themselves up
+ */
+ private void updateSpecifiedInverseJoinColumnsFromJava(CompilationUnit astRoot) {
+ // synchronize the model join columns with the Java source
+ List<IJoinColumn> inverseJoinColumns = this.getSpecifiedInverseJoinColumns();
+ int persSize = inverseJoinColumns.size();
+ int javaSize = 0;
+ boolean allJavaAnnotationsFound = false;
+ for (int i = 0; i < persSize; i++) {
+ JavaJoinColumn inverseJoinColumn = (JavaJoinColumn) inverseJoinColumns.get(i);
+ if (inverseJoinColumn.annotation(astRoot) == null) {
+ allJavaAnnotationsFound = true;
+ break; // no need to go any further
+ }
+ inverseJoinColumn.updateFromJava(astRoot);
+ javaSize++;
+ }
+ if (allJavaAnnotationsFound) {
+ // remove any model join columns beyond those that correspond to the Java annotations
+ while (persSize > javaSize) {
+ persSize--;
+ inverseJoinColumns.remove(persSize);
+ }
+ }
+ else {
+ // add new model join columns until they match the Java annotations
+ while (!allJavaAnnotationsFound) {
+ JavaJoinColumn inverseJoinColumn = this.createJavaInverseJoinColumn(javaSize);
+ if (inverseJoinColumn.annotation(astRoot) == null) {
+ allJavaAnnotationsFound = true;
+ }
+ else {
+ this.getSpecifiedInverseJoinColumns().add(inverseJoinColumn);
+ inverseJoinColumn.updateFromJava(astRoot);
+ javaSize++;
+ }
+ }
+ }
+ }
+
+ // ********** jpa model -> java annotations **********
+ ////////////////////////////////////////////////////////
+ /**
+ * slide over all the annotations that follow the new join column
+ */
+ public void specifiedJoinColumnAdded(int index, IJoinColumn joinColumn) {
+ // JoinColumn was added to jpa model when updating from java, do not need
+ // to edit the java in this case. TODO is there a better way to handle this??
+ if (((JavaJoinColumn) joinColumn).annotation(getMember().astRoot()) == null) {
+ this.synchJoinColumnAnnotationsAfterAdd(index + 1);
+ ((JavaJoinColumn) joinColumn).newAnnotation();
+ }
+ }
+
+ // bjv look at this
+ public void specifiedJoinColumnsAdded(int index, List<IJoinColumn> joinColumns) {
+ // JoinColumn was added to jpa model when updating from java, do not need
+ // to edit the java in this case. TODO is there a better way to handle this??
+ if (!joinColumns.isEmpty() && ((JavaJoinColumn) joinColumns.get(0)).annotation(getMember().astRoot()) == null) {
+ this.synchJoinColumnAnnotationsAfterAdd(index + joinColumns.size());
+ for (IJoinColumn joinColumn : joinColumns) {
+ ((JavaJoinColumn) joinColumn).newAnnotation();
+ }
+ }
+ }
+
+ public void specifiedJoinColumnRemoved(int index, IJoinColumn joinColumn) {
+ ((JavaJoinColumn) joinColumn).removeAnnotation();
+ this.synchJoinColumnAnnotationsAfterRemove(index);
+ }
+
+ public void specifiedJoinColumnsRemoved(int[] indexes, List<IJoinColumn> joinColumns) {
+ for (IJoinColumn joinColumn : joinColumns) {
+ ((JavaJoinColumn) joinColumn).removeAnnotation();
+ }
+ this.synchJoinColumnAnnotationsAfterRemove(indexes[0]);
+ }
+
+ public void specifiedJoinColumnsCleared(List<IJoinColumn> joinColumns) {
+ for (IJoinColumn joinColumn : joinColumns) {
+ ((JavaJoinColumn) joinColumn).removeAnnotation();
+ }
+ }
+
+ public void specifiedJoinColumnSet(int index, IJoinColumn oldJoinColumn, IJoinColumn newJoinColumn) {
+ ((JavaJoinColumn) newJoinColumn).newAnnotation();
+ }
+
+ public void specifiedJoinColumnMoved(int sourceIndex, int targetIndex, IJoinColumn joinColumn) {
+ List<IJoinColumn> joinColumns = this.getSpecifiedJoinColumns();
+ int begin = Math.min(sourceIndex, targetIndex);
+ int end = Math.max(sourceIndex, targetIndex);
+ for (int i = begin; i-- > end;) {
+ this.synch(joinColumns.get(i), i);
+ }
+ }
+
+ /**
+ * synchronize the annotations with the model join columns,
+ * starting at the end of the list to prevent overlap
+ */
+ private void synchJoinColumnAnnotationsAfterAdd(int index) {
+ List<IJoinColumn> joinColumns = this.getSpecifiedJoinColumns();
+ for (int i = joinColumns.size(); i-- > index;) {
+ this.synch(joinColumns.get(i), i);
+ }
+ }
+
+ /**
+ * synchronize the annotations with the model join columns,
+ * starting at the specified index to prevent overlap
+ */
+ private void synchJoinColumnAnnotationsAfterRemove(int index) {
+ List<IJoinColumn> joinColumns = this.getSpecifiedJoinColumns();
+ for (int i = index; i < joinColumns.size(); i++) {
+ this.synch(joinColumns.get(i), i);
+ }
+ }
+
+ ////////////////////////////////////////////////////////
+ /**
+ * slide over all the annotations that follow the new inverse join column
+ */
+ public void specifiedInverseJoinColumnAdded(int index, IJoinColumn inverseJoinColumn) {
+ if (((JavaJoinColumn) inverseJoinColumn).annotation(getMember().astRoot()) == null) {
+ this.synchInverseJoinColumnAnnotationsAfterAdd(index + 1);
+ ((JavaJoinColumn) inverseJoinColumn).newAnnotation();
+ }
+ }
+
+ public void specifiedInverseJoinColumnsAdded(int index, List<IJoinColumn> inverseJoinColumns) {
+ //JoinColumn was added to persistence model when udating from java, do not need
+ //to edit the java in this case. TODO is there a better way to handle this??
+ if (!inverseJoinColumns.isEmpty() && ((JavaJoinColumn) inverseJoinColumns.get(0)).annotation(getMember().astRoot()) == null) {
+ this.synchInverseJoinColumnAnnotationsAfterAdd(index + inverseJoinColumns.size());
+ for (IJoinColumn inverseJoinColumn : inverseJoinColumns) {
+ ((JavaJoinColumn) inverseJoinColumn).newAnnotation();
+ }
+ }
+ }
+
+ public void specifiedInverseJoinColumnRemoved(int index, IJoinColumn inverseJoinColumn) {
+ ((JavaJoinColumn) inverseJoinColumn).removeAnnotation();
+ this.synchInverseJoinColumnAnnotationsAfterRemove(index);
+ }
+
+ public void specifiedInverseJoinColumnsRemoved(int[] indexes, List<IJoinColumn> inverseJoinColumns) {
+ for (IJoinColumn inverseJoinColumn : inverseJoinColumns) {
+ ((JavaJoinColumn) inverseJoinColumn).removeAnnotation();
+ }
+ this.synchInverseJoinColumnAnnotationsAfterRemove(indexes[0]);
+ }
+
+ public void specifiedInverseJoinColumnsCleared(List<IJoinColumn> inverseJoinColumns) {
+ for (IJoinColumn inverseJoinColumn : inverseJoinColumns) {
+ ((JavaJoinColumn) inverseJoinColumn).removeAnnotation();
+ }
+ }
+
+ public void specifiedInverseJoinColumnSet(int index, IJoinColumn oldInverseJoinColumn, IJoinColumn newInverseJoinColumn) {
+ ((JavaJoinColumn) newInverseJoinColumn).newAnnotation();
+ }
+
+ public void specifiedInverseJoinColumnMoved(int sourceIndex, int targetIndex, IJoinColumn inverseJoinColumn) {
+ List<IJoinColumn> inverseJoinColumns = this.getSpecifiedInverseJoinColumns();
+ int begin = Math.min(sourceIndex, targetIndex);
+ int end = Math.max(sourceIndex, targetIndex);
+ for (int i = begin; i-- > end;) {
+ this.synch(inverseJoinColumns.get(i), i);
+ }
+ }
+
+ /**
+ * synchronize the annotations with the model inverse join columns,
+ * starting at the end of the list to prevent overlap
+ */
+ private void synchInverseJoinColumnAnnotationsAfterAdd(int index) {
+ List<IJoinColumn> inverseJoinColumns = this.getSpecifiedInverseJoinColumns();
+ for (int i = inverseJoinColumns.size(); i-- > index;) {
+ this.synch(inverseJoinColumns.get(i), i);
+ }
+ }
+
+ /**
+ * synchronize the annotations with the model inverse join columns,
+ * starting at the specified index to prevent overlap
+ */
+ private void synchInverseJoinColumnAnnotationsAfterRemove(int index) {
+ List<IJoinColumn> inverseJoinColumns = this.getSpecifiedInverseJoinColumns();
+ for (int i = index; i < inverseJoinColumns.size(); i++) {
+ this.synch(inverseJoinColumns.get(i), i);
+ }
+ }
+
+ private void synch(IJoinColumn joinColumn, int index) {
+ ((JavaJoinColumn) joinColumn).moveAnnotation(index);
+ }
+
+ // ********** IJoinTable implementation **********
+ public IJoinColumn createJoinColumn(int index) {
+ return this.createJavaJoinColumn(index);
+ }
+
+ private JavaJoinColumn createJavaJoinColumn(int index) {
+ return JavaJoinColumn.createJoinTableJoinColumn(new JoinColumnOwner(this), this.getMember(), index);
+ }
+
+ public IJoinColumn createInverseJoinColumn(int index) {
+ return this.createJavaInverseJoinColumn(index);
+ }
+
+ private JavaJoinColumn createJavaInverseJoinColumn(int index) {
+ return JavaJoinColumn.createJoinTableInverseJoinColumn(new InverseJoinColumnOwner(this), this.getMember(), index);
+ }
+
+ public boolean containsSpecifiedJoinColumns() {
+ return !this.getSpecifiedJoinColumns().isEmpty();
+ }
+
+ public boolean containsSpecifiedInverseJoinColumns() {
+ return !this.getSpecifiedInverseJoinColumns().isEmpty();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaManyToMany.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaManyToMany.java
new file mode 100644
index 0000000000..3483503985
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaManyToMany.java
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.SimpleDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.mappings.IManyToMany;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Many To Many</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaManyToMany()
+ * @model kind="class"
+ * @generated
+ */
+public class JavaManyToMany extends JavaMultiRelationshipMapping
+ implements IManyToMany
+{
+ public static final DeclarationAnnotationAdapter DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.MANY_TO_MANY);
+
+ private static final DeclarationAnnotationElementAdapter TARGET_ENTITY_ADAPTER = buildTargetEntityAdapter(DECLARATION_ANNOTATION_ADAPTER, JPA.MANY_TO_MANY__TARGET_ENTITY);
+
+ private static final DeclarationAnnotationElementAdapter CASCADE_ADAPTER = buildEnumAnnotationElementAdapter(DECLARATION_ANNOTATION_ADAPTER, JPA.MANY_TO_MANY__CASCADE);
+
+ private static final DeclarationAnnotationElementAdapter FETCH_ADAPTER = buildEnumAnnotationElementAdapter(DECLARATION_ANNOTATION_ADAPTER, JPA.MANY_TO_MANY__FETCH);
+
+ private static final DeclarationAnnotationElementAdapter MAPPED_BY_ADAPTER = buildAnnotationElementAdapter(DECLARATION_ANNOTATION_ADAPTER, JPA.MANY_TO_MANY__MAPPED_BY);
+
+ protected JavaManyToMany() {
+ throw new UnsupportedOperationException("Use JavaManyToMany(Attribute) instead");
+ }
+
+ protected JavaManyToMany(Attribute attribute) {
+ super(attribute);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_MANY_TO_MANY;
+ }
+
+ public String getKey() {
+ return IMappingKeys.MANY_TO_MANY_ATTRIBUTE_MAPPING_KEY;
+ }
+
+ // ********** JavaRelationshipMappingModelAdapter implementation **********
+ protected DeclarationAnnotationAdapter declarationAnnotationAdapter() {
+ return DECLARATION_ANNOTATION_ADAPTER;
+ }
+
+ protected DeclarationAnnotationElementAdapter targetEntityAdapter() {
+ return TARGET_ENTITY_ADAPTER;
+ }
+
+ protected DeclarationAnnotationElementAdapter cascadeAdapter() {
+ return CASCADE_ADAPTER;
+ }
+
+ protected DeclarationAnnotationElementAdapter fetchAdapter() {
+ return FETCH_ADAPTER;
+ }
+
+ // ********** JavaMultiRelationshipMappingModelAdapter implementation **********
+ protected DeclarationAnnotationElementAdapter mappedByAdapter() {
+ return MAPPED_BY_ADAPTER;
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaManyToManyProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaManyToManyProvider.java
new file mode 100644
index 0000000000..783f54e186
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaManyToManyProvider.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMapping;
+import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMappingProvider;
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+
+/**
+ *
+ */
+public class JavaManyToManyProvider
+ implements IJavaAttributeMappingProvider
+{
+
+ // singleton
+ private static final JavaManyToManyProvider INSTANCE = new JavaManyToManyProvider();
+
+ /**
+ * Return the singleton.
+ */
+ public static IJavaAttributeMappingProvider instance() {
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private JavaManyToManyProvider() {
+ super();
+ }
+
+ public String key() {
+ return IMappingKeys.MANY_TO_MANY_ATTRIBUTE_MAPPING_KEY;
+ }
+
+ public boolean defaultApplies(Attribute attribute, DefaultsContext defaultsContext) {
+ return false;
+ }
+
+ public IJavaAttributeMapping buildMapping(Attribute attribute) {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaManyToMany(attribute);
+ }
+
+ public DeclarationAnnotationAdapter declarationAnnotationAdapter() {
+ return JavaManyToMany.DECLARATION_ANNOTATION_ADAPTER;
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaManyToOne.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaManyToOne.java
new file mode 100644
index 0000000000..f33b16a664
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaManyToOne.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.SimpleDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.mappings.IManyToOne;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Many To One</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaManyToOne()
+ * @model kind="class"
+ * @generated
+ */
+public class JavaManyToOne extends JavaSingleRelationshipMapping
+ implements IManyToOne
+{
+ public static final DeclarationAnnotationAdapter DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.MANY_TO_ONE);
+
+ private static final DeclarationAnnotationElementAdapter TARGET_ENTITY_ADAPTER = buildTargetEntityAdapter(DECLARATION_ANNOTATION_ADAPTER, JPA.MANY_TO_ONE__TARGET_ENTITY);
+
+ private static final DeclarationAnnotationElementAdapter CASCADE_ADAPTER = buildEnumAnnotationElementAdapter(DECLARATION_ANNOTATION_ADAPTER, JPA.MANY_TO_ONE__CASCADE);
+
+ private static final DeclarationAnnotationElementAdapter FETCH_ADAPTER = buildEnumAnnotationElementAdapter(DECLARATION_ANNOTATION_ADAPTER, JPA.MANY_TO_ONE__FETCH);
+
+ private static final DeclarationAnnotationElementAdapter OPTIONAL_ADAPTER = buildOptionalAdapter(DECLARATION_ANNOTATION_ADAPTER, JPA.MANY_TO_ONE__OPTIONAL);
+
+ protected JavaManyToOne() {
+ throw new UnsupportedOperationException("Use JavaManyToOne(Attribute) instead");
+ }
+
+ protected JavaManyToOne(Attribute attribute) {
+ super(attribute);
+ }
+
+ // ********** initialization **********
+ protected DeclarationAnnotationAdapter declarationAnnotationAdapter() {
+ return DECLARATION_ANNOTATION_ADAPTER;
+ }
+
+ protected DeclarationAnnotationElementAdapter targetEntityAdapter() {
+ return TARGET_ENTITY_ADAPTER;
+ }
+
+ protected DeclarationAnnotationElementAdapter cascadeAdapter() {
+ return CASCADE_ADAPTER;
+ }
+
+ protected DeclarationAnnotationElementAdapter fetchAdapter() {
+ return FETCH_ADAPTER;
+ }
+
+ protected DeclarationAnnotationElementAdapter optionalAdapter() {
+ return OPTIONAL_ADAPTER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_MANY_TO_ONE;
+ }
+
+ public String getKey() {
+ return IMappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY;
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaManyToOneProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaManyToOneProvider.java
new file mode 100644
index 0000000000..52e0ab4aa9
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaManyToOneProvider.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMapping;
+import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMappingProvider;
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+
+/**
+ *
+ */
+public class JavaManyToOneProvider
+ implements IJavaAttributeMappingProvider
+{
+
+ // singleton
+ private static final JavaManyToOneProvider INSTANCE = new JavaManyToOneProvider();
+
+ /**
+ * Return the singleton.
+ */
+ public static IJavaAttributeMappingProvider instance() {
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private JavaManyToOneProvider() {
+ super();
+ }
+
+ public String key() {
+ return IMappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY;
+ }
+
+ public boolean defaultApplies(Attribute attribute, DefaultsContext defaultsContext) {
+ return false;
+ }
+
+ public IJavaAttributeMapping buildMapping(Attribute attribute) {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaManyToOne(attribute);
+ }
+
+ public DeclarationAnnotationAdapter declarationAnnotationAdapter() {
+ return JavaManyToOne.DECLARATION_ANNOTATION_ADAPTER;
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaMappedSuperclass.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaMappedSuperclass.java
new file mode 100644
index 0000000000..f7a6a25fdd
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaMappedSuperclass.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.IPersistentAttribute;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.SimpleDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Type;
+import org.eclipse.jpt.core.internal.mappings.IMappedSuperclass;
+import org.eclipse.jpt.core.internal.mappings.ITable;
+import org.eclipse.jpt.utility.internal.iterators.EmptyIterator;
+import org.eclipse.jpt.utility.internal.iterators.FilteringIterator;
+import org.eclipse.jpt.utility.internal.iterators.TransformationIterator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Mapped Superclass</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaMappedSuperclass()
+ * @model kind="class"
+ * @generated
+ */
+public class JavaMappedSuperclass extends JavaTypeMapping
+ implements IMappedSuperclass
+{
+ public static final DeclarationAnnotationAdapter ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.MAPPED_SUPERCLASS);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected JavaMappedSuperclass() {
+ super();
+ }
+
+ protected JavaMappedSuperclass(Type type) {
+ super(type);
+ }
+
+ @Override
+ public DeclarationAnnotationAdapter declarationAnnotationAdapter() {
+ return ANNOTATION_ADAPTER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_MAPPED_SUPERCLASS;
+ }
+
+ public String getKey() {
+ return IMappingKeys.MAPPED_SUPERCLASS_TYPE_MAPPING_KEY;
+ }
+
+ public boolean tableNameIsInvalid(String tableName) {
+ return false;
+ }
+
+ public Iterator<String> associatedTableNamesIncludingInherited() {
+ return EmptyIterator.instance();
+ }
+
+ public Iterator<ITable> associatedTables() {
+ return EmptyIterator.instance();
+ }
+
+ public Iterator<ITable> associatedTablesIncludingInherited() {
+ return EmptyIterator.instance();
+ }
+
+ public Iterator<String> overridableAttributeNames() {
+ return new TransformationIterator<IPersistentAttribute, String>(new FilteringIterator<IPersistentAttribute>(getPersistentType().attributes()) {
+ @Override
+ protected boolean accept(Object o) {
+ String key = ((IPersistentAttribute) o).getMappingKey();
+ return key == IMappingKeys.BASIC_ATTRIBUTE_MAPPING_KEY || key == IMappingKeys.ID_ATTRIBUTE_MAPPING_KEY;
+ }
+ }) {
+ @Override
+ protected String transform(IPersistentAttribute next) {
+ return next.getName();
+ }
+ };
+ }
+
+ public Iterator<String> overridableAssociationNames() {
+ return new TransformationIterator<IPersistentAttribute, String>(new FilteringIterator<IPersistentAttribute>(getPersistentType().attributes()) {
+ @Override
+ protected boolean accept(Object o) {
+ String key = ((IPersistentAttribute) o).getMappingKey();
+ return key == IMappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY || key == IMappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY;
+ }
+ }) {
+ @Override
+ protected String transform(IPersistentAttribute next) {
+ return next.getName();
+ }
+ };
+ }
+
+ public List<String> candidateValuesFor(int pos, CompilationUnit astRoot) {
+ return Collections.emptyList();
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaMappedSuperclassProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaMappedSuperclassProvider.java
new file mode 100644
index 0000000000..9689b8fd48
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaMappedSuperclassProvider.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.content.java.IJavaTypeMapping;
+import org.eclipse.jpt.core.internal.content.java.IJavaTypeMappingProvider;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Type;
+
+/**
+ *
+ */
+public class JavaMappedSuperclassProvider
+ implements IJavaTypeMappingProvider
+{
+
+ // singleton
+ private static final JavaMappedSuperclassProvider INSTANCE = new JavaMappedSuperclassProvider();
+
+ /**
+ * Return the singleton.
+ */
+ public static IJavaTypeMappingProvider instance() {
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private JavaMappedSuperclassProvider() {
+ super();
+ }
+
+ public String key() {
+ return IMappingKeys.MAPPED_SUPERCLASS_TYPE_MAPPING_KEY;
+ }
+
+ public IJavaTypeMapping buildMapping(Type type) {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaMappedSuperclass(type);
+ }
+
+ public DeclarationAnnotationAdapter declarationAnnotationAdapter() {
+ return JavaMappedSuperclass.ANNOTATION_ADAPTER;
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaMultiRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaMultiRelationshipMapping.java
new file mode 100644
index 0000000000..6c40b654bc
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaMultiRelationshipMapping.java
@@ -0,0 +1,509 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+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.jdt.core.Signature;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.jdtutility.AnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.mappings.DefaultLazyFetchType;
+import org.eclipse.jpt.core.internal.mappings.IJoinTable;
+import org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.INonOwningMapping;
+import org.eclipse.jpt.core.internal.mappings.IOrderBy;
+import org.eclipse.jpt.core.internal.mappings.ITable;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Multi Relationship Mapping</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaMultiRelationshipMapping()
+ * @model kind="class" abstract="true"
+ * @generated
+ */
+public abstract class JavaMultiRelationshipMapping
+ extends JavaRelationshipMapping implements IMultiRelationshipMapping
+{
+ /**
+ * The default value of the '{@link #getMappedBy() <em>Mapped By</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMappedBy()
+ * @generated
+ * @ordered
+ */
+ protected static final String MAPPED_BY_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getMappedBy() <em>Mapped By</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMappedBy()
+ * @generated
+ * @ordered
+ */
+ protected String mappedBy = MAPPED_BY_EDEFAULT;
+
+ private final AnnotationElementAdapter mappedByAdapter;
+
+ /**
+ * The default value of the '{@link #getFetch() <em>Fetch</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFetch()
+ * @generated
+ * @ordered
+ */
+ protected static final DefaultLazyFetchType FETCH_EDEFAULT = DefaultLazyFetchType.DEFAULT;
+
+ /**
+ * The cached value of the '{@link #getFetch() <em>Fetch</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFetch()
+ * @generated
+ * @ordered
+ */
+ protected DefaultLazyFetchType fetch = FETCH_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getJoinTable() <em>Join Table</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getJoinTable()
+ * @generated
+ * @ordered
+ */
+ protected IJoinTable joinTable;
+
+ /**
+ * The cached value of the '{@link #getOrderBy() <em>Order By</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOrderBy()
+ * @generated
+ * @ordered
+ */
+ protected IOrderBy orderBy;
+
+ protected JavaMultiRelationshipMapping() {
+ throw new UnsupportedOperationException("Use JavaMultiRelationshipMapping(Attribute) instead");
+ }
+
+ protected JavaMultiRelationshipMapping(Attribute attribute) {
+ super(attribute);
+ this.mappedByAdapter = this.buildAnnotationElementAdapter(this.mappedByAdapter());
+ this.joinTable = JpaJavaMappingsFactory.eINSTANCE.createJavaJoinTable(buildOwner(), attribute);
+ ((InternalEObject) this.joinTable).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__JOIN_TABLE, null, null);
+ this.orderBy = JpaJavaMappingsFactory.eINSTANCE.createJavaOrderBy(attribute);
+ ((InternalEObject) this.orderBy).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__ORDER_BY, null, null);
+ }
+
+ @Override
+ protected void notifyChanged(Notification notification) {
+ super.notifyChanged(notification);
+ switch (notification.getFeatureID(IMultiRelationshipMapping.class)) {
+ case JpaCoreMappingsPackage.IMULTI_RELATIONSHIP_MAPPING__FETCH :
+ this.getFetchAdapter().setValue(((DefaultLazyFetchType) notification.getNewValue()).convertToJavaAnnotationValue());
+ break;
+ default :
+ break;
+ }
+ switch (notification.getFeatureID(INonOwningMapping.class)) {
+ case JpaCoreMappingsPackage.INON_OWNING_MAPPING__MAPPED_BY :
+ this.mappedByAdapter.setValue(notification.getNewValue());
+ break;
+ default :
+ break;
+ }
+ }
+
+ private ITable.Owner buildOwner() {
+ return new ITable.Owner() {
+ public ITextRange getTextRange() {
+ return JavaMultiRelationshipMapping.this.getTextRange();
+ }
+
+ public ITypeMapping getTypeMapping() {
+ return JavaMultiRelationshipMapping.this.typeMapping();
+ }
+ };
+ }
+
+ /**
+ * return the Java adapter's 'mappedBy' element adapter config
+ */
+ protected abstract DeclarationAnnotationElementAdapter mappedByAdapter();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_MULTI_RELATIONSHIP_MAPPING;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Mapped By</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Mapped By</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Mapped By</em>' attribute.
+ * @see #setMappedBy(String)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getINonOwningMapping_MappedBy()
+ * @model
+ * @generated
+ */
+ public String getMappedBy() {
+ return mappedBy;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaMultiRelationshipMapping#getMappedBy <em>Mapped By</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Mapped By</em>' attribute.
+ * @see #getMappedBy()
+ * @generated
+ */
+ public void setMappedBy(String newMappedBy) {
+ String oldMappedBy = mappedBy;
+ mappedBy = newMappedBy;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__MAPPED_BY, oldMappedBy, mappedBy));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Fetch</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultLazyFetchType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Fetch</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Fetch</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultLazyFetchType
+ * @see #setFetch(DefaultLazyFetchType)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIMultiRelationshipMapping_Fetch()
+ * @model
+ * @generated
+ */
+ public DefaultLazyFetchType getFetch() {
+ return fetch;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaMultiRelationshipMapping#getFetch <em>Fetch</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Fetch</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultLazyFetchType
+ * @see #getFetch()
+ * @generated
+ */
+ public void setFetch(DefaultLazyFetchType newFetch) {
+ DefaultLazyFetchType oldFetch = fetch;
+ fetch = newFetch == null ? FETCH_EDEFAULT : newFetch;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__FETCH, oldFetch, fetch));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Join Table</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Join Table</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Join Table</em>' containment reference.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIMultiRelationshipMapping_JoinTable()
+ * @model containment="true" required="true" changeable="false"
+ * @generated
+ */
+ public IJoinTable getJoinTable() {
+ return joinTable;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetJoinTable(IJoinTable newJoinTable, NotificationChain msgs) {
+ IJoinTable oldJoinTable = joinTable;
+ joinTable = newJoinTable;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__JOIN_TABLE, oldJoinTable, newJoinTable);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Order By</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Order By</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Order By</em>' containment reference.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIMultiRelationshipMapping_OrderBy()
+ * @model containment="true" required="true" changeable="false"
+ * @generated
+ */
+ public IOrderBy getOrderBy() {
+ return orderBy;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetOrderBy(IOrderBy newOrderBy, NotificationChain msgs) {
+ IOrderBy oldOrderBy = orderBy;
+ orderBy = newOrderBy;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__ORDER_BY, oldOrderBy, newOrderBy);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__JOIN_TABLE :
+ return basicSetJoinTable(null, msgs);
+ case JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__ORDER_BY :
+ return basicSetOrderBy(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 JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__MAPPED_BY :
+ return getMappedBy();
+ case JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__FETCH :
+ return getFetch();
+ case JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__JOIN_TABLE :
+ return getJoinTable();
+ case JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__ORDER_BY :
+ return getOrderBy();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__MAPPED_BY :
+ setMappedBy((String) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__FETCH :
+ setFetch((DefaultLazyFetchType) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__MAPPED_BY :
+ setMappedBy(MAPPED_BY_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__FETCH :
+ setFetch(FETCH_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__MAPPED_BY :
+ return MAPPED_BY_EDEFAULT == null ? mappedBy != null : !MAPPED_BY_EDEFAULT.equals(mappedBy);
+ case JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__FETCH :
+ return fetch != FETCH_EDEFAULT;
+ case JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__JOIN_TABLE :
+ return joinTable != null;
+ case JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__ORDER_BY :
+ return orderBy != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == INonOwningMapping.class) {
+ switch (derivedFeatureID) {
+ case JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__MAPPED_BY :
+ return JpaCoreMappingsPackage.INON_OWNING_MAPPING__MAPPED_BY;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IMultiRelationshipMapping.class) {
+ switch (derivedFeatureID) {
+ case JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__FETCH :
+ return JpaCoreMappingsPackage.IMULTI_RELATIONSHIP_MAPPING__FETCH;
+ case JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__JOIN_TABLE :
+ return JpaCoreMappingsPackage.IMULTI_RELATIONSHIP_MAPPING__JOIN_TABLE;
+ case JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__ORDER_BY :
+ return JpaCoreMappingsPackage.IMULTI_RELATIONSHIP_MAPPING__ORDER_BY;
+ 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 == INonOwningMapping.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.INON_OWNING_MAPPING__MAPPED_BY :
+ return JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__MAPPED_BY;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IMultiRelationshipMapping.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IMULTI_RELATIONSHIP_MAPPING__FETCH :
+ return JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__FETCH;
+ case JpaCoreMappingsPackage.IMULTI_RELATIONSHIP_MAPPING__JOIN_TABLE :
+ return JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__JOIN_TABLE;
+ case JpaCoreMappingsPackage.IMULTI_RELATIONSHIP_MAPPING__ORDER_BY :
+ return JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING__ORDER_BY;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (mappedBy: ");
+ result.append(mappedBy);
+ result.append(", fetch: ");
+ result.append(fetch);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public void updateFromJava(CompilationUnit astRoot) {
+ super.updateFromJava(astRoot);
+ setMappedBy((String) this.mappedByAdapter.getValue(astRoot));
+ ((JavaOrderBy) this.orderBy).updateFromJava(astRoot);
+ ((JavaJoinTable) getJoinTable()).updateFromJava(astRoot);
+ }
+
+ @Override
+ protected void updateFetchFromJava(CompilationUnit astRoot) {
+ setFetch(DefaultLazyFetchType.fromJavaAnnotationValue(this.getFetchAdapter().getValue(astRoot)));
+ }
+
+ /**
+ * extract the element type from the specified container signature and
+ * convert it into a reference entity type name;
+ * return null if the type is not a valid reference entity type (e.g. it's
+ * another container or an array or a primitive or other Basic type)
+ */
+ @Override
+ protected String javaDefaultTargetEntity(String signature) {
+ String typeName = super.javaDefaultTargetEntity(signature);
+ return typeNamedIsContainer(typeName) ? this.javaDefaultTargetEntityFromContainer(signature) : null;
+ }
+
+ protected String javaDefaultTargetEntityFromContainer(String signature) {
+ String[] parmSignatures = Signature.getTypeArguments(signature);
+ if ((parmSignatures == null) || (parmSignatures.length != 1)) {
+ return null;
+ }
+ String elementSignature = parmSignatures[0];
+ String elementTypeName = buildReferenceEntityTypeName(elementSignature, jdtType());
+ return typeNamedIsContainer(elementTypeName) ? null : elementTypeName;
+ }
+} // JavaMultiRelationshipMapping
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNamedColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNamedColumn.java
new file mode 100644
index 0000000000..6aafe8d01a
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNamedColumn.java
@@ -0,0 +1,461 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.content.java.JavaEObject;
+import org.eclipse.jpt.core.internal.jdtutility.AnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.BooleanStringExpressionConverter;
+import org.eclipse.jpt.core.internal.jdtutility.ConversionDeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Member;
+import org.eclipse.jpt.core.internal.jdtutility.NumberStringExpressionConverter;
+import org.eclipse.jpt.core.internal.jdtutility.ShortCircuitAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.mappings.INamedColumn;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Named Column</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaNamedColumn()
+ * @model kind="class" abstract="true"
+ * @generated
+ */
+public abstract class JavaNamedColumn extends JavaEObject
+ implements INamedColumn
+{
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getSpecifiedName() <em>Specified Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedName()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedName() <em>Specified Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedName()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedName = SPECIFIED_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultName() <em>Default Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultName()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultName() <em>Default Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultName()
+ * @generated
+ * @ordered
+ */
+ protected String defaultName = DEFAULT_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getColumnDefinition() <em>Column Definition</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getColumnDefinition()
+ * @generated
+ * @ordered
+ */
+ protected static final String COLUMN_DEFINITION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getColumnDefinition() <em>Column Definition</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getColumnDefinition()
+ * @generated
+ * @ordered
+ */
+ protected String columnDefinition = COLUMN_DEFINITION_EDEFAULT;
+
+ private final Owner owner;
+
+ private final Member member;
+
+ // hold this so we can get the annotation's text range
+ private final DeclarationAnnotationAdapter daa;
+
+ // hold this so we can get the 'name' text range
+ private final DeclarationAnnotationElementAdapter nameDeclarationAdapter;
+
+ private final AnnotationElementAdapter nameAdapter;
+
+ private final AnnotationElementAdapter columnDefinitionAdapter;
+
+ protected JavaNamedColumn() {
+ super();
+ throw new UnsupportedOperationException("Use JavaNamedColumn(Owner, Member, DeclarationAnnotationAdapter) instead");
+ }
+
+ protected JavaNamedColumn(Owner owner, Member member, DeclarationAnnotationAdapter daa) {
+ super();
+ this.owner = owner;
+ this.member = member;
+ this.daa = daa;
+ this.nameDeclarationAdapter = this.buildStringElementAdapter(this.nameElementName());
+ this.nameAdapter = this.buildShortCircuitElementAdapter(this.nameDeclarationAdapter);
+ this.columnDefinitionAdapter = this.buildShortCircuitStringElementAdapter(this.columnDefinitionElementName());
+ }
+
+ protected DeclarationAnnotationElementAdapter buildStringElementAdapter(String elementName) {
+ return new ConversionDeclarationAnnotationElementAdapter(this.daa, elementName);
+ }
+
+ protected DeclarationAnnotationElementAdapter buildBooleanElementAdapter(String elementName) {
+ return new ConversionDeclarationAnnotationElementAdapter(this.daa, elementName, BooleanStringExpressionConverter.instance());
+ }
+
+ protected DeclarationAnnotationElementAdapter buildIntElementAdapter(String elementName) {
+ return new ConversionDeclarationAnnotationElementAdapter(this.daa, elementName, NumberStringExpressionConverter.instance());
+ }
+
+ protected AnnotationElementAdapter buildShortCircuitElementAdapter(DeclarationAnnotationElementAdapter daea) {
+ return new ShortCircuitAnnotationElementAdapter(this.member, daea);
+ }
+
+ protected AnnotationElementAdapter buildShortCircuitStringElementAdapter(String elementName) {
+ return this.buildShortCircuitElementAdapter(this.buildStringElementAdapter(elementName));
+ }
+
+ protected AnnotationElementAdapter buildShortCircuitBooleanElementAdapter(String elementName) {
+ return this.buildShortCircuitElementAdapter(this.buildBooleanElementAdapter(elementName));
+ }
+
+ protected IntAnnotationElementAdapter buildShortCircuitIntElementAdapter(String elementName) {
+ return new IntAnnotationElementAdapter(this.buildShortCircuitElementAdapter(this.buildIntElementAdapter(elementName)));
+ }
+
+ protected abstract String nameElementName();
+
+ protected abstract String columnDefinitionElementName();
+
+ @Override
+ protected void notifyChanged(Notification notification) {
+ super.notifyChanged(notification);
+ switch (notification.getFeatureID(INamedColumn.class)) {
+ case JpaJavaMappingsPackage.JAVA_COLUMN__SPECIFIED_NAME :
+ this.nameAdapter.setValue(notification.getNewValue());
+ break;
+ case JpaJavaMappingsPackage.JAVA_COLUMN__COLUMN_DEFINITION :
+ this.columnDefinitionAdapter.setValue(notification.getNewValue());
+ break;
+ default :
+ break;
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_NAMED_COLUMN;
+ }
+
+ public String getName() {
+ return (this.getSpecifiedName() == null) ? getDefaultName() : this.getSpecifiedName();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Name</em>' attribute.
+ * @see #setSpecifiedName(String)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getINamedColumn_SpecifiedName()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedName() {
+ return specifiedName;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaNamedColumn#getSpecifiedName <em>Specified Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Name</em>' attribute.
+ * @see #getSpecifiedName()
+ * @generated
+ */
+ public void setSpecifiedName(String newSpecifiedName) {
+ String oldSpecifiedName = specifiedName;
+ specifiedName = newSpecifiedName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_NAMED_COLUMN__SPECIFIED_NAME, oldSpecifiedName, specifiedName));
+ }
+
+ //TODO should we allow setting through the ecore, that would make this method
+ //public and part of the ITable api. only the model needs to be setting the default,
+ //but the ui needs to be listening for changes to the default.
+ protected void setDefaultName(String newDefaultName) {
+ String oldDefaultName = this.defaultName;
+ this.defaultName = newDefaultName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_NAMED_COLUMN__DEFAULT_NAME, oldDefaultName, this.defaultName));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getINamedColumn_DefaultName()
+ * @model changeable="false"
+ * @generated
+ */
+ public String getDefaultName() {
+ return defaultName;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Column Definition</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Column Definition</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Column Definition</em>' attribute.
+ * @see #setColumnDefinition(String)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getINamedColumn_ColumnDefinition()
+ * @model
+ * @generated
+ */
+ public String getColumnDefinition() {
+ return columnDefinition;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaNamedColumn#getColumnDefinition <em>Column Definition</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Column Definition</em>' attribute.
+ * @see #getColumnDefinition()
+ * @generated
+ */
+ public void setColumnDefinition(String newColumnDefinition) {
+ String oldColumnDefinition = columnDefinition;
+ columnDefinition = newColumnDefinition;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_NAMED_COLUMN__COLUMN_DEFINITION, oldColumnDefinition, columnDefinition));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_NAMED_COLUMN__NAME :
+ return getName();
+ case JpaJavaMappingsPackage.JAVA_NAMED_COLUMN__SPECIFIED_NAME :
+ return getSpecifiedName();
+ case JpaJavaMappingsPackage.JAVA_NAMED_COLUMN__DEFAULT_NAME :
+ return getDefaultName();
+ case JpaJavaMappingsPackage.JAVA_NAMED_COLUMN__COLUMN_DEFINITION :
+ return getColumnDefinition();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_NAMED_COLUMN__SPECIFIED_NAME :
+ setSpecifiedName((String) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_NAMED_COLUMN__COLUMN_DEFINITION :
+ setColumnDefinition((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_NAMED_COLUMN__SPECIFIED_NAME :
+ setSpecifiedName(SPECIFIED_NAME_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.JAVA_NAMED_COLUMN__COLUMN_DEFINITION :
+ setColumnDefinition(COLUMN_DEFINITION_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_NAMED_COLUMN__NAME :
+ return NAME_EDEFAULT == null ? getName() != null : !NAME_EDEFAULT.equals(getName());
+ case JpaJavaMappingsPackage.JAVA_NAMED_COLUMN__SPECIFIED_NAME :
+ return SPECIFIED_NAME_EDEFAULT == null ? specifiedName != null : !SPECIFIED_NAME_EDEFAULT.equals(specifiedName);
+ case JpaJavaMappingsPackage.JAVA_NAMED_COLUMN__DEFAULT_NAME :
+ return DEFAULT_NAME_EDEFAULT == null ? defaultName != null : !DEFAULT_NAME_EDEFAULT.equals(defaultName);
+ case JpaJavaMappingsPackage.JAVA_NAMED_COLUMN__COLUMN_DEFINITION :
+ return COLUMN_DEFINITION_EDEFAULT == null ? columnDefinition != null : !COLUMN_DEFINITION_EDEFAULT.equals(columnDefinition);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == INamedColumn.class) {
+ switch (derivedFeatureID) {
+ case JpaJavaMappingsPackage.JAVA_NAMED_COLUMN__NAME :
+ return JpaCoreMappingsPackage.INAMED_COLUMN__NAME;
+ case JpaJavaMappingsPackage.JAVA_NAMED_COLUMN__SPECIFIED_NAME :
+ return JpaCoreMappingsPackage.INAMED_COLUMN__SPECIFIED_NAME;
+ case JpaJavaMappingsPackage.JAVA_NAMED_COLUMN__DEFAULT_NAME :
+ return JpaCoreMappingsPackage.INAMED_COLUMN__DEFAULT_NAME;
+ case JpaJavaMappingsPackage.JAVA_NAMED_COLUMN__COLUMN_DEFINITION :
+ return JpaCoreMappingsPackage.INAMED_COLUMN__COLUMN_DEFINITION;
+ 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 == INamedColumn.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.INAMED_COLUMN__NAME :
+ return JpaJavaMappingsPackage.JAVA_NAMED_COLUMN__NAME;
+ case JpaCoreMappingsPackage.INAMED_COLUMN__SPECIFIED_NAME :
+ return JpaJavaMappingsPackage.JAVA_NAMED_COLUMN__SPECIFIED_NAME;
+ case JpaCoreMappingsPackage.INAMED_COLUMN__DEFAULT_NAME :
+ return JpaJavaMappingsPackage.JAVA_NAMED_COLUMN__DEFAULT_NAME;
+ case JpaCoreMappingsPackage.INAMED_COLUMN__COLUMN_DEFINITION :
+ return JpaJavaMappingsPackage.JAVA_NAMED_COLUMN__COLUMN_DEFINITION;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (specifiedName: ");
+ result.append(specifiedName);
+ result.append(", defaultName: ");
+ result.append(defaultName);
+ result.append(", columnDefinition: ");
+ result.append(columnDefinition);
+ result.append(')');
+ return result.toString();
+ }
+
+ public Owner getOwner() {
+ return this.owner;
+ }
+
+ public ITextRange getTextRange() {
+ ITextRange textRange = this.member.annotationTextRange(this.daa);
+ return (textRange != null) ? textRange : this.getOwner().getTextRange();
+ }
+
+ protected ITextRange elementTextRange(DeclarationAnnotationElementAdapter elementAdapter) {
+ return this.elementTextRange(this.member.annotationElementTextRange(elementAdapter));
+ }
+
+ public ITextRange getNameTextRange() {
+ ITextRange textRange = this.elementTextRange(this.nameDeclarationAdapter);
+ return (textRange == null) ? getTextRange() : textRange;
+ }
+
+ public void updateFromJava(CompilationUnit astRoot) {
+ this.setSpecifiedName((String) this.nameAdapter.getValue(astRoot));
+ this.setColumnDefinition((String) this.columnDefinitionAdapter.getValue(astRoot));
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNamedNativeQuery.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNamedNativeQuery.java
new file mode 100644
index 0000000000..f55abe4f9b
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNamedNativeQuery.java
@@ -0,0 +1,353 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.jdtutility.AnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.CombinationIndexedDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.ConversionDeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.IndexedDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Member;
+import org.eclipse.jpt.core.internal.jdtutility.SimpleDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.mappings.INamedNativeQuery;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Named Native Query</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaNamedNativeQuery()
+ * @model kind="class"
+ * @generated
+ */
+public class JavaNamedNativeQuery extends JavaAbstractQuery
+ implements INamedNativeQuery
+{
+ /**
+ * The default value of the '{@link #getResultClass() <em>Result Class</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getResultClass()
+ * @generated
+ * @ordered
+ */
+ protected static final String RESULT_CLASS_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getResultClass() <em>Result Class</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getResultClass()
+ * @generated
+ * @ordered
+ */
+ protected String resultClass = RESULT_CLASS_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getResultSetMapping() <em>Result Set Mapping</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getResultSetMapping()
+ * @generated
+ * @ordered
+ */
+ protected static final String RESULT_SET_MAPPING_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getResultSetMapping() <em>Result Set Mapping</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getResultSetMapping()
+ * @generated
+ * @ordered
+ */
+ protected String resultSetMapping = RESULT_SET_MAPPING_EDEFAULT;
+
+ public static final SimpleDeclarationAnnotationAdapter SINGLE_DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.NAMED_NATIVE_QUERY);
+
+ public static final SimpleDeclarationAnnotationAdapter MULTIPLE_DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.NAMED_NATIVE_QUERIES);
+
+ private final AnnotationElementAdapter resultClassAdapter;
+
+ private final AnnotationElementAdapter resultSetMappingAdapter;
+
+ protected JavaNamedNativeQuery() {
+ throw new UnsupportedOperationException("Use JavaNamedNativeQuery(Member) instead");
+ }
+
+ protected JavaNamedNativeQuery(Member member, IndexedDeclarationAnnotationAdapter idaa) {
+ super(member, idaa);
+ this.resultClassAdapter = this.buildAdapter(resultClassAdapter(idaa));
+ this.resultSetMappingAdapter = this.buildAdapter(resultSetMappingAdapter(idaa));
+ }
+
+ // ********** initialization **********
+ protected DeclarationAnnotationElementAdapter resultClassAdapter(DeclarationAnnotationAdapter daa) {
+ return new ConversionDeclarationAnnotationElementAdapter(daa, JPA.NAMED_NATIVE_QUERY__RESULT_CLASS);
+ }
+
+ protected DeclarationAnnotationElementAdapter resultSetMappingAdapter(DeclarationAnnotationAdapter daa) {
+ return new ConversionDeclarationAnnotationElementAdapter(daa, JPA.NAMED_NATIVE_QUERY__RESULT_SET_MAPPING);
+ }
+
+ @Override
+ protected String nameElementName() {
+ return JPA.NAMED_NATIVE_QUERY__NAME;
+ }
+
+ @Override
+ protected String queryElementName() {
+ return JPA.NAMED_NATIVE_QUERY__QUERY;
+ }
+
+ @Override
+ protected void notifyChanged(Notification notification) {
+ super.notifyChanged(notification);
+ switch (notification.getFeatureID(INamedNativeQuery.class)) {
+ case JpaCoreMappingsPackage.INAMED_NATIVE_QUERY__RESULT_CLASS :
+ this.resultClassAdapter.setValue(notification.getNewValue());
+ break;
+ case JpaCoreMappingsPackage.INAMED_NATIVE_QUERY__RESULT_SET_MAPPING :
+ this.resultSetMappingAdapter.setValue(notification.getNewValue());
+ break;
+ default :
+ break;
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_NAMED_NATIVE_QUERY;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Result Class</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Result Class</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Result Class</em>' attribute.
+ * @see #setResultClass(String)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getINamedNativeQuery_ResultClass()
+ * @model
+ * @generated
+ */
+ public String getResultClass() {
+ return resultClass;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaNamedNativeQuery#getResultClass <em>Result Class</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Result Class</em>' attribute.
+ * @see #getResultClass()
+ * @generated
+ */
+ public void setResultClass(String newResultClass) {
+ String oldResultClass = resultClass;
+ resultClass = newResultClass;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_NAMED_NATIVE_QUERY__RESULT_CLASS, oldResultClass, resultClass));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Result Set Mapping</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Result Set Mapping</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Result Set Mapping</em>' attribute.
+ * @see #setResultSetMapping(String)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getINamedNativeQuery_ResultSetMapping()
+ * @model
+ * @generated
+ */
+ public String getResultSetMapping() {
+ return resultSetMapping;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaNamedNativeQuery#getResultSetMapping <em>Result Set Mapping</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Result Set Mapping</em>' attribute.
+ * @see #getResultSetMapping()
+ * @generated
+ */
+ public void setResultSetMapping(String newResultSetMapping) {
+ String oldResultSetMapping = resultSetMapping;
+ resultSetMapping = newResultSetMapping;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_NAMED_NATIVE_QUERY__RESULT_SET_MAPPING, oldResultSetMapping, resultSetMapping));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_NAMED_NATIVE_QUERY__RESULT_CLASS :
+ return getResultClass();
+ case JpaJavaMappingsPackage.JAVA_NAMED_NATIVE_QUERY__RESULT_SET_MAPPING :
+ return getResultSetMapping();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_NAMED_NATIVE_QUERY__RESULT_CLASS :
+ setResultClass((String) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_NAMED_NATIVE_QUERY__RESULT_SET_MAPPING :
+ setResultSetMapping((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_NAMED_NATIVE_QUERY__RESULT_CLASS :
+ setResultClass(RESULT_CLASS_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.JAVA_NAMED_NATIVE_QUERY__RESULT_SET_MAPPING :
+ setResultSetMapping(RESULT_SET_MAPPING_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_NAMED_NATIVE_QUERY__RESULT_CLASS :
+ return RESULT_CLASS_EDEFAULT == null ? resultClass != null : !RESULT_CLASS_EDEFAULT.equals(resultClass);
+ case JpaJavaMappingsPackage.JAVA_NAMED_NATIVE_QUERY__RESULT_SET_MAPPING :
+ return RESULT_SET_MAPPING_EDEFAULT == null ? resultSetMapping != null : !RESULT_SET_MAPPING_EDEFAULT.equals(resultSetMapping);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == INamedNativeQuery.class) {
+ switch (derivedFeatureID) {
+ case JpaJavaMappingsPackage.JAVA_NAMED_NATIVE_QUERY__RESULT_CLASS :
+ return JpaCoreMappingsPackage.INAMED_NATIVE_QUERY__RESULT_CLASS;
+ case JpaJavaMappingsPackage.JAVA_NAMED_NATIVE_QUERY__RESULT_SET_MAPPING :
+ return JpaCoreMappingsPackage.INAMED_NATIVE_QUERY__RESULT_SET_MAPPING;
+ 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 == INamedNativeQuery.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.INAMED_NATIVE_QUERY__RESULT_CLASS :
+ return JpaJavaMappingsPackage.JAVA_NAMED_NATIVE_QUERY__RESULT_CLASS;
+ case JpaCoreMappingsPackage.INAMED_NATIVE_QUERY__RESULT_SET_MAPPING :
+ return JpaJavaMappingsPackage.JAVA_NAMED_NATIVE_QUERY__RESULT_SET_MAPPING;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (resultClass: ");
+ result.append(resultClass);
+ result.append(", resultSetMapping: ");
+ result.append(resultSetMapping);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ protected void updateFromJava(CompilationUnit astRoot) {
+ super.updateFromJava(astRoot);
+ this.setResultClass((String) this.resultClassAdapter.getValue(astRoot));
+ this.setResultSetMapping((String) this.resultSetMappingAdapter.getValue(astRoot));
+ }
+
+ protected JavaQueryHint createJavaQueryHint(int index) {
+ return JavaQueryHint.createNamedNativeQueryQueryHint(this.getMember(), index);
+ }
+
+ // ********** static methods **********
+ static JavaNamedNativeQuery createJavaNamedNativeQuery(Member member, int index) {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaNamedNativeQuery(member, buildAnnotationAdapter(index));
+ }
+
+ private static IndexedDeclarationAnnotationAdapter buildAnnotationAdapter(int index) {
+ return new CombinationIndexedDeclarationAnnotationAdapter(SINGLE_DECLARATION_ANNOTATION_ADAPTER, MULTIPLE_DECLARATION_ANNOTATION_ADAPTER, index, JPA.NAMED_NATIVE_QUERY);
+ }
+} // JavaNamedNativeQuery
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNamedQuery.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNamedQuery.java
new file mode 100644
index 0000000000..bdea7d802e
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNamedQuery.java
@@ -0,0 +1,75 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.jpt.core.internal.jdtutility.CombinationIndexedDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.IndexedDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Member;
+import org.eclipse.jpt.core.internal.jdtutility.SimpleDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.mappings.INamedQuery;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Named Query</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaNamedQuery()
+ * @model kind="class"
+ * @generated
+ */
+public class JavaNamedQuery extends JavaAbstractQuery implements INamedQuery
+{
+ public static final SimpleDeclarationAnnotationAdapter SINGLE_DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.NAMED_QUERY);
+
+ public static final SimpleDeclarationAnnotationAdapter MULTIPLE_DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.NAMED_QUERIES);
+
+ protected JavaNamedQuery() {
+ throw new UnsupportedOperationException("Use JavaNamedQuery(Member) instead");
+ }
+
+ protected JavaNamedQuery(Member member, IndexedDeclarationAnnotationAdapter idaa) {
+ super(member, idaa);
+ }
+
+ @Override
+ protected String nameElementName() {
+ return JPA.NAMED_QUERY__NAME;
+ }
+
+ @Override
+ protected String queryElementName() {
+ return JPA.NAMED_QUERY__QUERY;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_NAMED_QUERY;
+ }
+
+ protected JavaQueryHint createJavaQueryHint(int index) {
+ return JavaQueryHint.createNamedQueryQueryHint(this.getMember(), index);
+ }
+
+ // ********** static methods **********
+ static JavaNamedQuery createJavaNamedQuery(Member member, int index) {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaNamedQuery(member, buildAnnotationAdapter(index));
+ }
+
+ private static IndexedDeclarationAnnotationAdapter buildAnnotationAdapter(int index) {
+ return new CombinationIndexedDeclarationAnnotationAdapter(SINGLE_DECLARATION_ANNOTATION_ADAPTER, MULTIPLE_DECLARATION_ANNOTATION_ADAPTER, index, JPA.NAMED_QUERY);
+ }
+} // JavaNamedQuery
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNullAttributeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNullAttributeMapping.java
new file mode 100644
index 0000000000..b9552c7ed5
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNullAttributeMapping.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.NullDeclarationAnnotationAdapter;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Null Attribute Mapping</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaNullAttributeMapping()
+ * @model kind="class"
+ * @generated
+ */
+public class JavaNullAttributeMapping extends JavaAttributeMapping
+{
+ public static final DeclarationAnnotationAdapter DECLARATION_ANNOTATION_ADAPTER = NullDeclarationAnnotationAdapter.instance();
+
+ protected JavaNullAttributeMapping() {
+ throw new UnsupportedOperationException("Use JavaNullAttributeMapping(Attribute) instead");
+ }
+
+ protected JavaNullAttributeMapping(Attribute attribute) {
+ super(attribute);
+ }
+
+ @Override
+ protected DeclarationAnnotationAdapter declarationAnnotationAdapter() {
+ return DECLARATION_ANNOTATION_ADAPTER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_NULL_ATTRIBUTE_MAPPING;
+ }
+
+ public String getKey() {
+ return null;
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNullAttributeMappingProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNullAttributeMappingProvider.java
new file mode 100644
index 0000000000..0c35b5f466
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNullAttributeMappingProvider.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMapping;
+import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMappingProvider;
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+
+/**
+ * This mapping provider implementation is used to create a JavaNullAttributeMapping.
+ * A JavaNullAttributeMapping should be used when no "mapping" annotation
+ * exists on a Java attribute *and* no default mapping applies.
+ */
+public class JavaNullAttributeMappingProvider
+ implements IJavaAttributeMappingProvider
+{
+
+ // singleton
+ private static final JavaNullAttributeMappingProvider INSTANCE = new JavaNullAttributeMappingProvider();
+
+ /**
+ * Return the singleton.
+ */
+ public static IJavaAttributeMappingProvider instance() {
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private JavaNullAttributeMappingProvider() {
+ super();
+ }
+
+ public String key() {
+ return null;
+ }
+
+ public boolean defaultApplies(Attribute attribute, DefaultsContext defaultsContext) {
+ return false;
+ }
+
+ public IJavaAttributeMapping buildMapping(Attribute attribute) {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaNullAttributeMapping(attribute);
+ }
+
+ public DeclarationAnnotationAdapter declarationAnnotationAdapter() {
+ return JavaNullAttributeMapping.DECLARATION_ANNOTATION_ADAPTER;
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNullTypeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNullTypeMapping.java
new file mode 100644
index 0000000000..f4cd548591
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNullTypeMapping.java
@@ -0,0 +1,97 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.NullDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Type;
+import org.eclipse.jpt.core.internal.mappings.ITable;
+import org.eclipse.jpt.utility.internal.iterators.EmptyIterator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Null Type Mapping</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaNullTypeMapping()
+ * @model kind="class"
+ * @generated
+ */
+public class JavaNullTypeMapping extends JavaTypeMapping
+{
+ public static final DeclarationAnnotationAdapter ANNOTATION_ADAPTER = NullDeclarationAnnotationAdapter.instance();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected JavaNullTypeMapping() {
+ super();
+ }
+
+ protected JavaNullTypeMapping(Type type) {
+ super(type);
+ }
+
+ @Override
+ public DeclarationAnnotationAdapter declarationAnnotationAdapter() {
+ return ANNOTATION_ADAPTER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_NULL_TYPE_MAPPING;
+ }
+
+ public String getKey() {
+ return null;
+ }
+
+ public boolean tableNameIsInvalid(String tableName) {
+ return false;
+ }
+
+ public Iterator<String> associatedTableNamesIncludingInherited() {
+ return EmptyIterator.instance();
+ }
+
+ public Iterator<ITable> associatedTables() {
+ return EmptyIterator.instance();
+ }
+
+ public Iterator<ITable> associatedTablesIncludingInherited() {
+ return EmptyIterator.instance();
+ }
+
+ public Iterator<String> overridableAssociationNames() {
+ return EmptyIterator.instance();
+ }
+
+ public Iterator<String> overridableAttributeNames() {
+ return EmptyIterator.instance();
+ }
+
+ public List<String> candidateValuesFor(int pos, CompilationUnit astRoot) {
+ return Collections.emptyList();
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNullTypeMappingProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNullTypeMappingProvider.java
new file mode 100644
index 0000000000..8c692695bd
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaNullTypeMappingProvider.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.jpt.core.internal.content.java.IJavaTypeMapping;
+import org.eclipse.jpt.core.internal.content.java.IJavaTypeMappingProvider;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Type;
+
+/**
+ * This mapping provider implementation is used to create a JavaNullAttributeMapping.
+ * A JavaNullAttributeMapping should be used when no "mapping" annotation
+ * exists on a Java type.
+ */
+public class JavaNullTypeMappingProvider
+ implements IJavaTypeMappingProvider
+{
+
+ // singleton
+ private static final JavaNullTypeMappingProvider INSTANCE = new JavaNullTypeMappingProvider();
+
+ /**
+ * Return the singleton.
+ */
+ public static IJavaTypeMappingProvider instance() {
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private JavaNullTypeMappingProvider() {
+ super();
+ }
+
+ public String key() {
+ return null;
+ }
+
+ public IJavaTypeMapping buildMapping(Type type) {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaNullTypeMapping(type);
+ }
+
+ public DeclarationAnnotationAdapter declarationAnnotationAdapter() {
+ return JavaNullTypeMapping.ANNOTATION_ADAPTER;
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOneToMany.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOneToMany.java
new file mode 100644
index 0000000000..93ed980c66
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOneToMany.java
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.SimpleDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.mappings.IOneToMany;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java One To Many</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaOneToMany()
+ * @model kind="class"
+ * @generated
+ */
+public class JavaOneToMany extends JavaMultiRelationshipMapping
+ implements IOneToMany
+{
+ public static final DeclarationAnnotationAdapter DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.ONE_TO_MANY);
+
+ private static final DeclarationAnnotationElementAdapter TARGET_ENTITY_ADAPTER = buildTargetEntityAdapter(DECLARATION_ANNOTATION_ADAPTER, JPA.ONE_TO_MANY__TARGET_ENTITY);
+
+ private static final DeclarationAnnotationElementAdapter CASCADE_ADAPTER = buildEnumAnnotationElementAdapter(DECLARATION_ANNOTATION_ADAPTER, JPA.ONE_TO_MANY__CASCADE);
+
+ private static final DeclarationAnnotationElementAdapter FETCH_ADAPTER = buildEnumAnnotationElementAdapter(DECLARATION_ANNOTATION_ADAPTER, JPA.ONE_TO_MANY__FETCH);
+
+ private static final DeclarationAnnotationElementAdapter MAPPED_BY_ADAPTER = buildAnnotationElementAdapter(DECLARATION_ANNOTATION_ADAPTER, JPA.ONE_TO_MANY__MAPPED_BY);
+
+ protected JavaOneToMany() {
+ throw new UnsupportedOperationException("Use JavaOneToMany(Attribute) instead");
+ }
+
+ protected JavaOneToMany(Attribute attribute) {
+ super(attribute);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_ONE_TO_MANY;
+ }
+
+ public String getKey() {
+ return IMappingKeys.ONE_TO_MANY_ATTRIBUTE_MAPPING_KEY;
+ }
+
+ // ********** JavaRelationshipMappingModelAdapter implementation **********
+ protected DeclarationAnnotationAdapter declarationAnnotationAdapter() {
+ return DECLARATION_ANNOTATION_ADAPTER;
+ }
+
+ protected DeclarationAnnotationElementAdapter targetEntityAdapter() {
+ return TARGET_ENTITY_ADAPTER;
+ }
+
+ protected DeclarationAnnotationElementAdapter cascadeAdapter() {
+ return CASCADE_ADAPTER;
+ }
+
+ protected DeclarationAnnotationElementAdapter fetchAdapter() {
+ return FETCH_ADAPTER;
+ }
+
+ // ********** JavaMultiRelationshipMappingModelAdapter implementation **********
+ protected DeclarationAnnotationElementAdapter mappedByAdapter() {
+ return MAPPED_BY_ADAPTER;
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOneToManyProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOneToManyProvider.java
new file mode 100644
index 0000000000..c817ce8638
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOneToManyProvider.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMapping;
+import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMappingProvider;
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+
+/**
+ *
+ */
+public class JavaOneToManyProvider
+ implements IJavaAttributeMappingProvider
+{
+
+ // singleton
+ private static final JavaOneToManyProvider INSTANCE = new JavaOneToManyProvider();
+
+ /**
+ * Return the singleton.
+ */
+ public static IJavaAttributeMappingProvider instance() {
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private JavaOneToManyProvider() {
+ super();
+ }
+
+ public String key() {
+ return IMappingKeys.ONE_TO_MANY_ATTRIBUTE_MAPPING_KEY;
+ }
+
+ public boolean defaultApplies(Attribute attribute, DefaultsContext defaultsContext) {
+ return false;
+ }
+
+ public IJavaAttributeMapping buildMapping(Attribute attribute) {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaOneToMany(attribute);
+ }
+
+ public DeclarationAnnotationAdapter declarationAnnotationAdapter() {
+ return JavaOneToMany.DECLARATION_ANNOTATION_ADAPTER;
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOneToOne.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOneToOne.java
new file mode 100644
index 0000000000..ecf7e0a847
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOneToOne.java
@@ -0,0 +1,289 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.jdtutility.AnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.SimpleDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.mappings.INonOwningMapping;
+import org.eclipse.jpt.core.internal.mappings.IOneToOne;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java One To One</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaOneToOne()
+ * @model kind="class"
+ * @generated
+ */
+public class JavaOneToOne extends JavaSingleRelationshipMapping
+ implements IOneToOne
+{
+ /**
+ * The default value of the '{@link #getMappedBy() <em>Mapped By</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMappedBy()
+ * @generated
+ * @ordered
+ */
+ protected static final String MAPPED_BY_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getMappedBy() <em>Mapped By</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMappedBy()
+ * @generated
+ * @ordered
+ */
+ protected String mappedBy = MAPPED_BY_EDEFAULT;
+
+ private AnnotationElementAdapter mappedByAdapter;
+
+ public static final DeclarationAnnotationAdapter DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.ONE_TO_ONE);
+
+ private static final DeclarationAnnotationElementAdapter TARGET_ENTITY_ADAPTER = buildTargetEntityAdapter(DECLARATION_ANNOTATION_ADAPTER, JPA.ONE_TO_ONE__TARGET_ENTITY);
+
+ private static final DeclarationAnnotationElementAdapter CASCADE_ADAPTER = buildEnumAnnotationElementAdapter(DECLARATION_ANNOTATION_ADAPTER, JPA.ONE_TO_ONE__CASCADE);
+
+ private static final DeclarationAnnotationElementAdapter FETCH_ADAPTER = buildEnumAnnotationElementAdapter(DECLARATION_ANNOTATION_ADAPTER, JPA.ONE_TO_ONE__FETCH);
+
+ private static final DeclarationAnnotationElementAdapter OPTIONAL_ADAPTER = buildOptionalAdapter(DECLARATION_ANNOTATION_ADAPTER, JPA.ONE_TO_ONE__OPTIONAL);
+
+ private static final DeclarationAnnotationElementAdapter MAPPED_BY_ADAPTER = buildAnnotationElementAdapter(DECLARATION_ANNOTATION_ADAPTER, JPA.ONE_TO_ONE__MAPPED_BY);
+
+ protected JavaOneToOne() {
+ throw new UnsupportedOperationException("Use JavaOneToOne(Attribute) instead");
+ }
+
+ protected JavaOneToOne(Attribute attribute) {
+ super(attribute);
+ this.mappedByAdapter = this.buildAnnotationElementAdapter(MAPPED_BY_ADAPTER);
+ }
+
+ @Override
+ protected void notifyChanged(Notification notification) {
+ super.notifyChanged(notification);
+ switch (notification.getFeatureID(INonOwningMapping.class)) {
+ case JpaCoreMappingsPackage.INON_OWNING_MAPPING__MAPPED_BY :
+ this.mappedByAdapter.setValue(notification.getNewValue());
+ break;
+ default :
+ break;
+ }
+ }
+
+ // ********** initialization **********
+ protected DeclarationAnnotationAdapter declarationAnnotationAdapter() {
+ return DECLARATION_ANNOTATION_ADAPTER;
+ }
+
+ protected DeclarationAnnotationElementAdapter targetEntityAdapter() {
+ return TARGET_ENTITY_ADAPTER;
+ }
+
+ protected DeclarationAnnotationElementAdapter cascadeAdapter() {
+ return CASCADE_ADAPTER;
+ }
+
+ protected DeclarationAnnotationElementAdapter fetchAdapter() {
+ return FETCH_ADAPTER;
+ }
+
+ protected DeclarationAnnotationElementAdapter optionalAdapter() {
+ return OPTIONAL_ADAPTER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_ONE_TO_ONE;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Mapped By</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Mapped By</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Mapped By</em>' attribute.
+ * @see #setMappedBy(String)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getINonOwningMapping_MappedBy()
+ * @model
+ * @generated
+ */
+ public String getMappedBy() {
+ return mappedBy;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaOneToOne#getMappedBy <em>Mapped By</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Mapped By</em>' attribute.
+ * @see #getMappedBy()
+ * @generated
+ */
+ public void setMappedBy(String newMappedBy) {
+ String oldMappedBy = mappedBy;
+ mappedBy = newMappedBy;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_ONE_TO_ONE__MAPPED_BY, oldMappedBy, mappedBy));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_ONE_TO_ONE__MAPPED_BY :
+ return getMappedBy();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_ONE_TO_ONE__MAPPED_BY :
+ setMappedBy((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_ONE_TO_ONE__MAPPED_BY :
+ setMappedBy(MAPPED_BY_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_ONE_TO_ONE__MAPPED_BY :
+ return MAPPED_BY_EDEFAULT == null ? mappedBy != null : !MAPPED_BY_EDEFAULT.equals(mappedBy);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == INonOwningMapping.class) {
+ switch (derivedFeatureID) {
+ case JpaJavaMappingsPackage.JAVA_ONE_TO_ONE__MAPPED_BY :
+ return JpaCoreMappingsPackage.INON_OWNING_MAPPING__MAPPED_BY;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IOneToOne.class) {
+ switch (derivedFeatureID) {
+ 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 == INonOwningMapping.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.INON_OWNING_MAPPING__MAPPED_BY :
+ return JpaJavaMappingsPackage.JAVA_ONE_TO_ONE__MAPPED_BY;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IOneToOne.class) {
+ switch (baseFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (mappedBy: ");
+ result.append(mappedBy);
+ result.append(')');
+ return result.toString();
+ }
+
+ public String getKey() {
+ return IMappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY;
+ }
+
+ @Override
+ public void updateFromJava(CompilationUnit astRoot) {
+ super.updateFromJava(astRoot);
+ setMappedBy((String) this.mappedByAdapter.getValue(astRoot));
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOneToOneProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOneToOneProvider.java
new file mode 100644
index 0000000000..e6ddbd7123
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOneToOneProvider.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMapping;
+import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMappingProvider;
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+
+/**
+ *
+ */
+public class JavaOneToOneProvider
+ implements IJavaAttributeMappingProvider
+{
+
+ // singleton
+ private static final JavaOneToOneProvider INSTANCE = new JavaOneToOneProvider();
+
+ /**
+ * Return the singleton.
+ */
+ public static IJavaAttributeMappingProvider instance() {
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private JavaOneToOneProvider() {
+ super();
+ }
+
+ public String key() {
+ return IMappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY;
+ }
+
+ public boolean defaultApplies(Attribute attribute, DefaultsContext defaultsContext) {
+ return false;
+ }
+
+ public IJavaAttributeMapping buildMapping(Attribute attribute) {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaOneToOne(attribute);
+ }
+
+ public DeclarationAnnotationAdapter declarationAnnotationAdapter() {
+ return JavaOneToOne.DECLARATION_ANNOTATION_ADAPTER;
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOrderBy.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOrderBy.java
new file mode 100644
index 0000000000..4d8828ae4e
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOrderBy.java
@@ -0,0 +1,437 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jdt.core.dom.Annotation;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jdt.core.dom.NormalAnnotation;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.content.java.JavaEObject;
+import org.eclipse.jpt.core.internal.jdtutility.AnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.AnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.ConversionDeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Member;
+import org.eclipse.jpt.core.internal.jdtutility.MemberAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.ShortCircuitAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.SimpleDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.mappings.IEntity;
+import org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.IOrderBy;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.core.internal.mappings.OrderingType;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Order By</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaOrderBy()
+ * @model kind="class"
+ * @generated
+ */
+public class JavaOrderBy extends JavaEObject implements IOrderBy
+{
+ /**
+ * 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;
+
+ /**
+ * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected static final OrderingType TYPE_EDEFAULT = OrderingType.NONE;
+
+ /**
+ * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected OrderingType type = TYPE_EDEFAULT;
+
+ private final Member member;
+
+ private final AnnotationAdapter annotationAdapter;
+
+ private final AnnotationElementAdapter valueAdapter;
+
+ public static final DeclarationAnnotationAdapter DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.ORDER_BY);
+
+ private static final DeclarationAnnotationElementAdapter VALUE_ADAPTER = buildValueAdapter();
+
+ protected JavaOrderBy() {
+ throw new UnsupportedOperationException("User JavaOrderBy(Member) instead");
+ }
+
+ protected JavaOrderBy(Member member) {
+ super();
+ this.member = member;
+ this.annotationAdapter = this.buildOrderByAnnotationAdapter();
+ this.valueAdapter = new ShortCircuitAnnotationElementAdapter(this.member, VALUE_ADAPTER);
+ }
+
+ private AnnotationAdapter buildOrderByAnnotationAdapter() {
+ return new MemberAnnotationAdapter(this.member, DECLARATION_ANNOTATION_ADAPTER);
+ }
+
+ @Override
+ protected void notifyChanged(Notification notification) {
+ super.notifyChanged(notification);
+ switch (notification.getFeatureID(IOrderBy.class)) {
+ case JpaJavaMappingsPackage.JAVA_ORDER_BY__VALUE :
+ if (getType() == OrderingType.CUSTOM) {
+ this.valueAdapter.setValue(notification.getNewValue());
+ }
+ break;
+ case JpaJavaMappingsPackage.JAVA_ORDER_BY__TYPE :
+ OrderingType newOrderingType = (OrderingType) notification.getNewValue();
+ if (newOrderingType == OrderingType.NONE) {
+ if (this.annotationAdapter.getAnnotation() != null) {
+ this.annotationAdapter.removeAnnotation();
+ }
+ }
+ else if (newOrderingType == OrderingType.PRIMARY_KEY) {
+ Annotation annotation = this.annotationAdapter.getAnnotation();
+ if (annotation == null) {
+ this.annotationAdapter.newMarkerAnnotation();
+ }
+ else if (annotation.isNormalAnnotation()) {
+ if (((NormalAnnotation) annotation).values().size() != 0) {
+ this.annotationAdapter.removeAnnotation();
+ this.annotationAdapter.newMarkerAnnotation();
+ }
+ }
+ else if (!annotation.isMarkerAnnotation()) {
+ this.annotationAdapter.removeAnnotation();
+ this.annotationAdapter.newMarkerAnnotation();
+ }
+ }
+ else if (newOrderingType == OrderingType.CUSTOM) {
+ Annotation annotation = this.annotationAdapter.getAnnotation();
+ if (annotation == null) {
+ this.annotationAdapter.newSingleMemberAnnotation();
+ this.valueAdapter.setValue(getValue());
+ }
+ else if (!annotation.isSingleMemberAnnotation()) {
+ this.annotationAdapter.removeAnnotation();
+ this.annotationAdapter.newSingleMemberAnnotation();
+ this.valueAdapter.setValue(getValue());
+ }
+ }
+ else {
+ throw new IllegalStateException("unknown 'orderBy' type: " + newOrderingType);
+ }
+ break;
+ default :
+ break;
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_ORDER_BY;
+ }
+
+ /**
+ * 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.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIOrderBy_Value()
+ * @model
+ * @generated
+ */
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaOrderBy#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
+ */
+ public void setValue(String newValue) {
+ String oldValue = value;
+ value = newValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_ORDER_BY__VALUE, oldValue, value));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Type</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.OrderingType}.
+ * <!-- 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.jpt.core.internal.mappings.OrderingType
+ * @see #setType(OrderingType)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIOrderBy_Type()
+ * @model
+ * @generated
+ */
+ public OrderingType getType() {
+ return type;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaOrderBy#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.jpt.core.internal.mappings.OrderingType
+ * @see #getType()
+ * @generated
+ */
+ public void setType(OrderingType newType) {
+ OrderingType oldType = type;
+ type = newType == null ? TYPE_EDEFAULT : newType;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_ORDER_BY__TYPE, oldType, type));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_ORDER_BY__VALUE :
+ return getValue();
+ case JpaJavaMappingsPackage.JAVA_ORDER_BY__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 JpaJavaMappingsPackage.JAVA_ORDER_BY__VALUE :
+ setValue((String) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_ORDER_BY__TYPE :
+ setType((OrderingType) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_ORDER_BY__VALUE :
+ setValue(VALUE_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.JAVA_ORDER_BY__TYPE :
+ setType(TYPE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_ORDER_BY__VALUE :
+ return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);
+ case JpaJavaMappingsPackage.JAVA_ORDER_BY__TYPE :
+ return type != TYPE_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IOrderBy.class) {
+ switch (derivedFeatureID) {
+ case JpaJavaMappingsPackage.JAVA_ORDER_BY__VALUE :
+ return JpaCoreMappingsPackage.IORDER_BY__VALUE;
+ case JpaJavaMappingsPackage.JAVA_ORDER_BY__TYPE :
+ return JpaCoreMappingsPackage.IORDER_BY__TYPE;
+ 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 == IOrderBy.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IORDER_BY__VALUE :
+ return JpaJavaMappingsPackage.JAVA_ORDER_BY__VALUE;
+ case JpaCoreMappingsPackage.IORDER_BY__TYPE :
+ return JpaJavaMappingsPackage.JAVA_ORDER_BY__TYPE;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- 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: ");
+ result.append(value);
+ result.append(", type: ");
+ result.append(type);
+ result.append(')');
+ return result.toString();
+ }
+
+ private IMultiRelationshipMapping multiRelationshipMapping() {
+ return (IMultiRelationshipMapping) eContainer();
+ }
+
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ if (getType() == OrderingType.PRIMARY_KEY) {
+ refreshValue(defaultsContext);
+ }
+ }
+
+ //primary key ordering when just the @OrderBy annotation is present
+ protected void refreshValue(DefaultsContext defaultsContext) {
+ IEntity targetEntity = multiRelationshipMapping().getResolvedTargetEntity();
+ if (targetEntity != null) {
+ setValue(targetEntity.primaryKeyAttributeName() + " ASC");
+ }
+ }
+
+ /*
+ * The @OrderBy annotation is a bit wack:
+ * - no annotation at all means "no ordering"
+ * - an annotation with no 'value' means "order by ascending primary key"
+ * - an annotation with a 'value' means "order by the settings in the 'value' string"
+ */
+ public void updateFromJava(CompilationUnit astRoot) {
+ Annotation annotation = annotation(astRoot);
+ if (annotation == null) {
+ setType(OrderingType.NONE);
+ }
+ else if (annotation.isMarkerAnnotation()) {
+ setType(OrderingType.PRIMARY_KEY);
+ }
+ else if (annotation.isSingleMemberAnnotation()) {
+ setType(OrderingType.CUSTOM);
+ }
+ else if (annotation.isNormalAnnotation()) {
+ if (((NormalAnnotation) annotation).values().size() == 0) {
+ // an empty normal annotation is treated the same as a marker annotation
+ setType(OrderingType.PRIMARY_KEY);
+ }
+ else {
+ setType(OrderingType.CUSTOM);
+ }
+ }
+ else {
+ throw new IllegalStateException("unknown annotation type: " + annotation);
+ }
+ setValue((String) this.valueAdapter.getValue(astRoot));
+ }
+
+ /**
+ * allow owners to verify the annotation
+ */
+ public Annotation annotation(CompilationUnit astRoot) {
+ return this.annotationAdapter.getAnnotation(astRoot);
+ }
+
+ //******** IJpaSourceObject implementation *********/
+ public ITextRange getTextRange() {
+ return this.member.annotationTextRange(DECLARATION_ANNOTATION_ADAPTER);
+ }
+
+ // ********** static methods **********
+ private static DeclarationAnnotationElementAdapter buildValueAdapter() {
+ return new ConversionDeclarationAnnotationElementAdapter(DECLARATION_ANNOTATION_ADAPTER, JPA.ORDER_BY__VALUE, false);
+ }
+} // JavaOrderBy
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOverride.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOverride.java
new file mode 100644
index 0000000000..c64df114da
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaOverride.java
@@ -0,0 +1,293 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jdt.core.dom.Annotation;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.content.java.JavaEObject;
+import org.eclipse.jpt.core.internal.jdtutility.AnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.ConversionDeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.IndexedAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.IndexedDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Member;
+import org.eclipse.jpt.core.internal.jdtutility.MemberIndexedAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.ShortCircuitAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.mappings.IOverride;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Override</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaOverride()
+ * @model kind="class" abstract="true"
+ * @generated
+ */
+public abstract class JavaOverride extends JavaEObject implements IOverride
+{
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ private final Owner owner;
+
+ private final Member member;
+
+ private final IndexedDeclarationAnnotationAdapter daa;
+
+ private final IndexedAnnotationAdapter annotationAdapter;
+
+ private final AnnotationElementAdapter nameAdapter;
+
+ protected JavaOverride() {
+ throw new UnsupportedOperationException("use JavaAttributeOverride(Owner, Member, IndexedDeclarationAnnotationAdapter)");
+ }
+
+ protected JavaOverride(Owner owner, Member member, IndexedDeclarationAnnotationAdapter daa) {
+ super();
+ this.owner = owner;
+ this.member = member;
+ this.daa = daa;
+ this.annotationAdapter = new MemberIndexedAnnotationAdapter(member, daa);
+ this.nameAdapter = this.buildAdapter(JPA.ATTRIBUTE_OVERRIDE__NAME);
+ }
+
+ protected abstract String nameElementName();
+
+ private AnnotationElementAdapter buildAdapter(String elementName) {
+ return new ShortCircuitAnnotationElementAdapter(this.member, new ConversionDeclarationAnnotationElementAdapter(this.daa, elementName));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_OVERRIDE;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIOverride_Name()
+ * @model
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaOverride#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ public void setNameGen(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_OVERRIDE__NAME, oldName, name));
+ }
+
+ public void setName(String newName) {
+ setNameGen(newName);
+ if (! this.isVirtual()) {
+ setNameInJava(newName);
+ }
+ }
+
+ private void setNameInJava(String newName) {
+ this.nameAdapter.setValue(newName);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_OVERRIDE__NAME :
+ return getName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_OVERRIDE__NAME :
+ setName((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_OVERRIDE__NAME :
+ setName(NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_OVERRIDE__NAME :
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IOverride.class) {
+ switch (derivedFeatureID) {
+ case JpaJavaMappingsPackage.JAVA_OVERRIDE__NAME :
+ return JpaCoreMappingsPackage.IOVERRIDE__NAME;
+ 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 == IOverride.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IOVERRIDE__NAME :
+ return JpaJavaMappingsPackage.JAVA_OVERRIDE__NAME;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+ public boolean isVirtual() {
+ return getOwner().isVirtual(this);
+ }
+
+ public Owner getOwner() {
+ return this.owner;
+ }
+
+ protected Member getMember() {
+ return this.member;
+ }
+
+ /**
+ * allow owners to verify the annotation
+ */
+ public Annotation annotation(CompilationUnit astRoot) {
+ return this.annotationAdapter.getAnnotation(astRoot);
+ }
+
+ public void updateFromJava(CompilationUnit astRoot) {
+ setName((String) this.nameAdapter.getValue(astRoot));
+ }
+
+ // ********** persistence model -> java annotations **********
+ void moveAnnotation(int newIndex) {
+ this.annotationAdapter.moveAnnotation(newIndex);
+ }
+
+ void newAnnotation() {
+ this.annotationAdapter.newMarkerAnnotation();
+ }
+
+ void removeAnnotation() {
+ this.annotationAdapter.removeAnnotation();
+ }
+
+ public ITextRange getTextRange() {
+ ITextRange textRange = this.member.annotationTextRange(this.daa);
+ return (textRange == null) ? getOwner().getTextRange() : textRange;
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaPrimaryKeyJoinColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaPrimaryKeyJoinColumn.java
new file mode 100644
index 0000000000..37cd112cde
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaPrimaryKeyJoinColumn.java
@@ -0,0 +1,695 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jdt.core.dom.Annotation;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.content.java.JavaEObject;
+import org.eclipse.jpt.core.internal.jdtutility.AnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.CombinationIndexedDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.ConversionDeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.IndexedAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.IndexedDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Member;
+import org.eclipse.jpt.core.internal.jdtutility.MemberIndexedAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.ShortCircuitAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.SimpleDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.INamedColumn;
+import org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.core.internal.platform.BaseJpaPlatform;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+import org.eclipse.jpt.db.internal.Column;
+import org.eclipse.jpt.db.internal.Table;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Primary Key Join Column</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaPrimaryKeyJoinColumn()
+ * @model kind="class"
+ * @generated
+ */
+public class JavaPrimaryKeyJoinColumn extends JavaEObject
+ implements IPrimaryKeyJoinColumn
+{
+ private final IAbstractJoinColumn.Owner owner;
+
+ private final Member member;
+
+ private final IndexedDeclarationAnnotationAdapter daa;
+
+ private final IndexedAnnotationAdapter annotationAdapter;
+
+ private final AnnotationElementAdapter nameAdapter;
+
+ // hold this so we can get the 'referenced column name' text range
+ private final DeclarationAnnotationElementAdapter referencedColumnNameDeclarationAdapter;
+
+ private final AnnotationElementAdapter referencedColumnNameAdapter;
+
+ private final AnnotationElementAdapter columnDefinitionAdapter;
+
+ public static final SimpleDeclarationAnnotationAdapter SINGLE_DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.PRIMARY_KEY_JOIN_COLUMN);
+
+ public static final SimpleDeclarationAnnotationAdapter MULTIPLE_DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.PRIMARY_KEY_JOIN_COLUMNS);
+
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getSpecifiedName() <em>Specified Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedName()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedName() <em>Specified Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedName()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedName = SPECIFIED_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultName() <em>Default Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultName()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultName() <em>Default Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultName()
+ * @generated
+ * @ordered
+ */
+ protected String defaultName = DEFAULT_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getColumnDefinition() <em>Column Definition</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getColumnDefinition()
+ * @generated
+ * @ordered
+ */
+ protected static final String COLUMN_DEFINITION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getColumnDefinition() <em>Column Definition</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getColumnDefinition()
+ * @generated
+ * @ordered
+ */
+ protected String columnDefinition = COLUMN_DEFINITION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getReferencedColumnName() <em>Referenced Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getReferencedColumnName()
+ * @generated
+ * @ordered
+ */
+ protected static final String REFERENCED_COLUMN_NAME_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getSpecifiedReferencedColumnName() <em>Specified Referenced Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedReferencedColumnName()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_REFERENCED_COLUMN_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedReferencedColumnName() <em>Specified Referenced Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedReferencedColumnName()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedReferencedColumnName = SPECIFIED_REFERENCED_COLUMN_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultReferencedColumnName() <em>Default Referenced Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultReferencedColumnName()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_REFERENCED_COLUMN_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultReferencedColumnName() <em>Default Referenced Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultReferencedColumnName()
+ * @generated
+ * @ordered
+ */
+ protected String defaultReferencedColumnName = DEFAULT_REFERENCED_COLUMN_NAME_EDEFAULT;
+
+ protected JavaPrimaryKeyJoinColumn() {
+ throw new UnsupportedOperationException();
+ }
+
+ protected JavaPrimaryKeyJoinColumn(IAbstractJoinColumn.Owner owner, Member member, int index) {
+ super();
+ this.owner = owner;
+ this.member = member;
+ this.daa = new CombinationIndexedDeclarationAnnotationAdapter(SINGLE_DECLARATION_ANNOTATION_ADAPTER, MULTIPLE_DECLARATION_ANNOTATION_ADAPTER, index, JPA.PRIMARY_KEY_JOIN_COLUMN);
+ this.annotationAdapter = new MemberIndexedAnnotationAdapter(member, this.daa);
+ this.nameAdapter = this.buildAdapter(JPA.PRIMARY_KEY_JOIN_COLUMN__NAME);
+ this.referencedColumnNameDeclarationAdapter = this.buildStringElementAdapter(JPA.PRIMARY_KEY_JOIN_COLUMN__REFERENCED_COLUMN_NAME);
+ this.referencedColumnNameAdapter = this.buildShortCircuitElementAdapter(this.referencedColumnNameDeclarationAdapter);
+ this.columnDefinitionAdapter = this.buildAdapter(JPA.PRIMARY_KEY_JOIN_COLUMN__COLUMN_DEFINITION);
+ }
+
+ private AnnotationElementAdapter buildAdapter(String elementName) {
+ return new ShortCircuitAnnotationElementAdapter(this.member, new ConversionDeclarationAnnotationElementAdapter(this.daa, elementName));
+ }
+
+ protected DeclarationAnnotationElementAdapter buildStringElementAdapter(String elementName) {
+ return new ConversionDeclarationAnnotationElementAdapter(this.daa, elementName);
+ }
+
+ protected AnnotationElementAdapter buildShortCircuitElementAdapter(DeclarationAnnotationElementAdapter daea) {
+ return new ShortCircuitAnnotationElementAdapter(this.member, daea);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_PRIMARY_KEY_JOIN_COLUMN;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIPrimaryKeyJoinColumn_Name()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated NOT
+ */
+ public String getName() {
+ return (this.specifiedName == null) ? this.defaultName : this.specifiedName;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Name</em>' attribute.
+ * @see #setSpecifiedName(String)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getINamedColumn_SpecifiedName()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedName() {
+ return specifiedName;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaPrimaryKeyJoinColumn#getSpecifiedName <em>Specified Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Name</em>' attribute.
+ * @see #getSpecifiedName()
+ * @generated
+ */
+ public void setSpecifiedNameGen(String newSpecifiedName) {
+ String oldSpecifiedName = specifiedName;
+ specifiedName = newSpecifiedName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_NAME, oldSpecifiedName, specifiedName));
+ }
+
+ public void setSpecifiedName(String newSpecifiedName) {
+ this.nameAdapter.setValue(newSpecifiedName);
+ setSpecifiedNameGen(newSpecifiedName);
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getINamedColumn_DefaultName()
+ * @model changeable="false"
+ * @generated
+ */
+ public String getDefaultName() {
+ return defaultName;
+ }
+
+ //TODO should we allow setting through the ecore, that would make this method
+ //public and part of the ITable api. only the model needs to be setting the default,
+ //but the ui needs to be listening for changes to the default.
+ protected void setDefaultName(String newDefaultName) {
+ String oldDefaultName = this.defaultName;
+ this.defaultName = newDefaultName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__DEFAULT_NAME, oldDefaultName, this.defaultName));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Referenced Column Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Referenced Column Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIPrimaryKeyJoinColumn_ReferencedColumnName()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated NOT
+ */
+ public String getReferencedColumnName() {
+ return (this.specifiedReferencedColumnName == null) ? this.defaultReferencedColumnName : this.specifiedReferencedColumnName;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Referenced Column Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Referenced Column Name</em>' attribute.
+ * @see #setSpecifiedReferencedColumnName(String)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIAbstractJoinColumn_SpecifiedReferencedColumnName()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedReferencedColumnName() {
+ return specifiedReferencedColumnName;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaPrimaryKeyJoinColumn#getSpecifiedReferencedColumnName <em>Specified Referenced Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Referenced Column Name</em>' attribute.
+ * @see #getSpecifiedReferencedColumnName()
+ * @generated
+ */
+ public void setSpecifiedReferencedColumnNameGen(String newSpecifiedReferencedColumnName) {
+ String oldSpecifiedReferencedColumnName = specifiedReferencedColumnName;
+ specifiedReferencedColumnName = newSpecifiedReferencedColumnName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME, oldSpecifiedReferencedColumnName, specifiedReferencedColumnName));
+ }
+
+ public void setSpecifiedReferencedColumnName(String newSpecifiedReferencedColumnName) {
+ this.referencedColumnNameAdapter.setValue(newSpecifiedReferencedColumnName);
+ setSpecifiedReferencedColumnNameGen(newSpecifiedReferencedColumnName);
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Referenced Column Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Referenced Column Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIAbstractJoinColumn_DefaultReferencedColumnName()
+ * @model changeable="false"
+ * @generated
+ */
+ public String getDefaultReferencedColumnName() {
+ return defaultReferencedColumnName;
+ }
+
+ protected void setDefaultReferencedColumnName(String newDefaultReferencedColumnName) {
+ String oldDefaultReferencedColumnName = this.defaultReferencedColumnName;
+ this.defaultReferencedColumnName = newDefaultReferencedColumnName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME, oldDefaultReferencedColumnName, newDefaultReferencedColumnName));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Column Definition</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Column Definition</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Column Definition</em>' attribute.
+ * @see #setColumnDefinition(String)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getINamedColumn_ColumnDefinition()
+ * @model
+ * @generated
+ */
+ public String getColumnDefinition() {
+ return columnDefinition;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaPrimaryKeyJoinColumn#getColumnDefinition <em>Column Definition</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Column Definition</em>' attribute.
+ * @see #getColumnDefinition()
+ * @generated
+ */
+ public void setColumnDefinitionGen(String newColumnDefinition) {
+ String oldColumnDefinition = columnDefinition;
+ columnDefinition = newColumnDefinition;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__COLUMN_DEFINITION, oldColumnDefinition, columnDefinition));
+ }
+
+ public void setColumnDefinition(String newColumnDefinition) {
+ this.columnDefinitionAdapter.setValue(newColumnDefinition);
+ setColumnDefinitionGen(newColumnDefinition);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__NAME :
+ return getName();
+ case JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_NAME :
+ return getSpecifiedName();
+ case JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__DEFAULT_NAME :
+ return getDefaultName();
+ case JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__COLUMN_DEFINITION :
+ return getColumnDefinition();
+ case JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__REFERENCED_COLUMN_NAME :
+ return getReferencedColumnName();
+ case JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME :
+ return getSpecifiedReferencedColumnName();
+ case JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME :
+ return getDefaultReferencedColumnName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_NAME :
+ setSpecifiedName((String) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__COLUMN_DEFINITION :
+ setColumnDefinition((String) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME :
+ setSpecifiedReferencedColumnName((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_NAME :
+ setSpecifiedName(SPECIFIED_NAME_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__COLUMN_DEFINITION :
+ setColumnDefinition(COLUMN_DEFINITION_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME :
+ setSpecifiedReferencedColumnName(SPECIFIED_REFERENCED_COLUMN_NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__NAME :
+ return NAME_EDEFAULT == null ? getName() != null : !NAME_EDEFAULT.equals(getName());
+ case JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_NAME :
+ return SPECIFIED_NAME_EDEFAULT == null ? specifiedName != null : !SPECIFIED_NAME_EDEFAULT.equals(specifiedName);
+ case JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__DEFAULT_NAME :
+ return DEFAULT_NAME_EDEFAULT == null ? defaultName != null : !DEFAULT_NAME_EDEFAULT.equals(defaultName);
+ case JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__COLUMN_DEFINITION :
+ return COLUMN_DEFINITION_EDEFAULT == null ? columnDefinition != null : !COLUMN_DEFINITION_EDEFAULT.equals(columnDefinition);
+ case JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__REFERENCED_COLUMN_NAME :
+ return REFERENCED_COLUMN_NAME_EDEFAULT == null ? getReferencedColumnName() != null : !REFERENCED_COLUMN_NAME_EDEFAULT.equals(getReferencedColumnName());
+ case JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME :
+ return SPECIFIED_REFERENCED_COLUMN_NAME_EDEFAULT == null ? specifiedReferencedColumnName != null : !SPECIFIED_REFERENCED_COLUMN_NAME_EDEFAULT.equals(specifiedReferencedColumnName);
+ case JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME :
+ return DEFAULT_REFERENCED_COLUMN_NAME_EDEFAULT == null ? defaultReferencedColumnName != null : !DEFAULT_REFERENCED_COLUMN_NAME_EDEFAULT.equals(defaultReferencedColumnName);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == INamedColumn.class) {
+ switch (derivedFeatureID) {
+ case JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__NAME :
+ return JpaCoreMappingsPackage.INAMED_COLUMN__NAME;
+ case JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_NAME :
+ return JpaCoreMappingsPackage.INAMED_COLUMN__SPECIFIED_NAME;
+ case JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__DEFAULT_NAME :
+ return JpaCoreMappingsPackage.INAMED_COLUMN__DEFAULT_NAME;
+ case JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__COLUMN_DEFINITION :
+ return JpaCoreMappingsPackage.INAMED_COLUMN__COLUMN_DEFINITION;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IAbstractJoinColumn.class) {
+ switch (derivedFeatureID) {
+ case JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__REFERENCED_COLUMN_NAME :
+ return JpaCoreMappingsPackage.IABSTRACT_JOIN_COLUMN__REFERENCED_COLUMN_NAME;
+ case JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME :
+ return JpaCoreMappingsPackage.IABSTRACT_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME;
+ case JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME :
+ return JpaCoreMappingsPackage.IABSTRACT_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IPrimaryKeyJoinColumn.class) {
+ switch (derivedFeatureID) {
+ 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 == INamedColumn.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.INAMED_COLUMN__NAME :
+ return JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__NAME;
+ case JpaCoreMappingsPackage.INAMED_COLUMN__SPECIFIED_NAME :
+ return JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_NAME;
+ case JpaCoreMappingsPackage.INAMED_COLUMN__DEFAULT_NAME :
+ return JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__DEFAULT_NAME;
+ case JpaCoreMappingsPackage.INAMED_COLUMN__COLUMN_DEFINITION :
+ return JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__COLUMN_DEFINITION;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IAbstractJoinColumn.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IABSTRACT_JOIN_COLUMN__REFERENCED_COLUMN_NAME :
+ return JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__REFERENCED_COLUMN_NAME;
+ case JpaCoreMappingsPackage.IABSTRACT_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME :
+ return JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME;
+ case JpaCoreMappingsPackage.IABSTRACT_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME :
+ return JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IPrimaryKeyJoinColumn.class) {
+ switch (baseFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (specifiedName: ");
+ result.append(specifiedName);
+ result.append(", defaultName: ");
+ result.append(defaultName);
+ result.append(", columnDefinition: ");
+ result.append(columnDefinition);
+ result.append(", specifiedReferencedColumnName: ");
+ result.append(specifiedReferencedColumnName);
+ result.append(", defaultReferencedColumnName: ");
+ result.append(defaultReferencedColumnName);
+ result.append(')');
+ return result.toString();
+ }
+
+ public Column dbReferencedColumn() {
+ Table table = this.dbReferencedColumnTable();
+ return (table == null) ? null : table.columnNamed(this.getReferencedColumnName());
+ }
+
+ public Table dbReferencedColumnTable() {
+ return getOwner().dbReferencedColumnTable();
+ }
+
+ public boolean isReferencedColumnResolved() {
+ return dbReferencedColumn() != null;
+ }
+
+ public ITextRange getReferencedColumnNameTextRange() {
+ return elementTextRange(this.referencedColumnNameDeclarationAdapter);
+ }
+
+ public ITextRange getTextRange() {
+ return this.member.annotationTextRange(this.daa);
+ }
+
+ protected ITextRange elementTextRange(DeclarationAnnotationElementAdapter elementAdapter) {
+ return this.elementTextRange(this.member.annotationElementTextRange(elementAdapter));
+ }
+
+ public IAbstractJoinColumn.Owner getOwner() {
+ return this.owner;
+ }
+
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ setDefaultReferencedColumnName((String) defaultsContext.getDefault(BaseJpaPlatform.DEFAULT_JOIN_COLUMN_REFERENCED_COLUMN_NAME_KEY));
+ setDefaultName((String) defaultsContext.getDefault(BaseJpaPlatform.DEFAULT_JOIN_COLUMN_NAME_KEY));
+ }
+
+ /**
+ * allow owners to verify the annotation
+ */
+ public Annotation annotation(CompilationUnit astRoot) {
+ return this.annotationAdapter.getAnnotation(astRoot);
+ }
+
+ // ********** persistence model -> java annotations **********
+ public void updateFromJava(CompilationUnit astRoot) {
+ setSpecifiedName((String) this.nameAdapter.getValue(astRoot));
+ setSpecifiedReferencedColumnName((String) this.referencedColumnNameAdapter.getValue(astRoot));
+ setColumnDefinition((String) this.columnDefinitionAdapter.getValue(astRoot));
+ }
+
+ void moveAnnotation(int newIndex) {
+ this.annotationAdapter.moveAnnotation(newIndex);
+ }
+
+ void newAnnotation() {
+ this.annotationAdapter.newMarkerAnnotation();
+ }
+
+ void removeAnnotation() {
+ this.annotationAdapter.removeAnnotation();
+ }
+
+ // ********** static methods **********
+ static JavaPrimaryKeyJoinColumn createJavaPrimaryKeyJoinColumn(Owner owner, Member member, int index) {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaPrimaryKeyJoinColumn(owner, member, index);
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaQueryHint.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaQueryHint.java
new file mode 100644
index 0000000000..415415e172
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaQueryHint.java
@@ -0,0 +1,384 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jdt.core.dom.Annotation;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.content.java.JavaEObject;
+import org.eclipse.jpt.core.internal.jdtutility.AnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.ConversionDeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.IndexedAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.IndexedDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Member;
+import org.eclipse.jpt.core.internal.jdtutility.MemberIndexedAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.NestedIndexedDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.ShortCircuitAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.mappings.IQueryHint;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Query Hint</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaQueryHint()
+ * @model kind="class"
+ * @generated
+ */
+public class JavaQueryHint extends JavaEObject implements IQueryHint
+{
+ private final Member member;
+
+ // hold this so we can get the annotation's text range
+ private final IndexedDeclarationAnnotationAdapter idaa;
+
+ private final IndexedAnnotationAdapter annotationAdapter;
+
+ private final AnnotationElementAdapter nameAdapter;
+
+ private final AnnotationElementAdapter valueAdapter;
+
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_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 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;
+
+ protected JavaQueryHint() {
+ throw new UnsupportedOperationException("Use JavaQueryHint(Member, IndexedDeclarationAnnotationAdapter) instead");
+ }
+
+ protected JavaQueryHint(Member member, IndexedDeclarationAnnotationAdapter idaa) {
+ super();
+ this.member = member;
+ this.idaa = idaa;
+ this.annotationAdapter = new MemberIndexedAnnotationAdapter(member, idaa);
+ this.nameAdapter = this.buildAdapter(nameAdapter(idaa));
+ this.valueAdapter = this.buildAdapter(valueAdapter(idaa));
+ }
+
+ // ********** initialization **********
+ protected AnnotationElementAdapter buildAdapter(DeclarationAnnotationElementAdapter daea) {
+ return new ShortCircuitAnnotationElementAdapter(this.member, daea);
+ }
+
+ protected DeclarationAnnotationElementAdapter nameAdapter(DeclarationAnnotationAdapter daa) {
+ return new ConversionDeclarationAnnotationElementAdapter(daa, JPA.QUERY_HINT__NAME);
+ }
+
+ protected DeclarationAnnotationElementAdapter valueAdapter(DeclarationAnnotationAdapter daa) {
+ return new ConversionDeclarationAnnotationElementAdapter(daa, JPA.QUERY_HINT__VALUE);
+ }
+
+ @Override
+ protected void notifyChanged(Notification notification) {
+ super.notifyChanged(notification);
+ switch (notification.getFeatureID(IQueryHint.class)) {
+ case JpaCoreMappingsPackage.IQUERY_HINT__NAME :
+ this.nameAdapter.setValue(notification.getNewValue());
+ break;
+ case JpaCoreMappingsPackage.IQUERY_HINT__VALUE :
+ this.valueAdapter.setValue(notification.getNewValue());
+ break;
+ default :
+ break;
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_QUERY_HINT;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIQueryHint_Name()
+ * @model
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaQueryHint#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_QUERY_HINT__NAME, oldName, name));
+ }
+
+ /**
+ * 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.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIQueryHint_Value()
+ * @model
+ * @generated
+ */
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaQueryHint#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
+ */
+ public void setValue(String newValue) {
+ String oldValue = value;
+ value = newValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_QUERY_HINT__VALUE, oldValue, value));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_QUERY_HINT__NAME :
+ return getName();
+ case JpaJavaMappingsPackage.JAVA_QUERY_HINT__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 JpaJavaMappingsPackage.JAVA_QUERY_HINT__NAME :
+ setName((String) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_QUERY_HINT__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 JpaJavaMappingsPackage.JAVA_QUERY_HINT__NAME :
+ setName(NAME_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.JAVA_QUERY_HINT__VALUE :
+ setValue(VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_QUERY_HINT__NAME :
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case JpaJavaMappingsPackage.JAVA_QUERY_HINT__VALUE :
+ return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IQueryHint.class) {
+ switch (derivedFeatureID) {
+ case JpaJavaMappingsPackage.JAVA_QUERY_HINT__NAME :
+ return JpaCoreMappingsPackage.IQUERY_HINT__NAME;
+ case JpaJavaMappingsPackage.JAVA_QUERY_HINT__VALUE :
+ return JpaCoreMappingsPackage.IQUERY_HINT__VALUE;
+ 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 == IQueryHint.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IQUERY_HINT__NAME :
+ return JpaJavaMappingsPackage.JAVA_QUERY_HINT__NAME;
+ case JpaCoreMappingsPackage.IQUERY_HINT__VALUE :
+ return JpaJavaMappingsPackage.JAVA_QUERY_HINT__VALUE;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(", value: ");
+ result.append(value);
+ result.append(')');
+ return result.toString();
+ }
+
+ // ********* IJpaSourceObject implementation ***********
+ public ITextRange getTextRange() {
+ return this.member.annotationTextRange(this.idaa);
+ }
+
+ protected void updateFromJava(CompilationUnit astRoot) {
+ this.setName((String) this.nameAdapter.getValue(astRoot));
+ this.setValue((String) this.valueAdapter.getValue(astRoot));
+ }
+
+ /**
+ * allow owners to verify the annotation
+ */
+ public Annotation annotation(CompilationUnit astRoot) {
+ return this.annotationAdapter.getAnnotation(astRoot);
+ }
+
+ // ********** persistence model -> java annotations **********
+ void moveAnnotation(int newIndex) {
+ this.annotationAdapter.moveAnnotation(newIndex);
+ }
+
+ void newAnnotation() {
+ this.annotationAdapter.newMarkerAnnotation();
+ }
+
+ void removeAnnotation() {
+ this.annotationAdapter.removeAnnotation();
+ }
+
+ // ********** static methods **********
+ static JavaQueryHint createNamedQueryQueryHint(Member member, int index) {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaQueryHint(member, buildNamedQueryQueryHintAnnotationAdapter(index));
+ }
+
+ private static IndexedDeclarationAnnotationAdapter buildNamedQueryQueryHintAnnotationAdapter(int index) {
+ return new NestedIndexedDeclarationAnnotationAdapter(JavaNamedQuery.SINGLE_DECLARATION_ANNOTATION_ADAPTER, JPA.NAMED_QUERY__HINTS, index, JPA.QUERY_HINT);
+ }
+
+ static JavaQueryHint createNamedNativeQueryQueryHint(Member member, int index) {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaQueryHint(member, buildNamedNativeQueryQueryHintAnnotationAdapter(index));
+ }
+
+ private static IndexedDeclarationAnnotationAdapter buildNamedNativeQueryQueryHintAnnotationAdapter(int index) {
+ return new NestedIndexedDeclarationAnnotationAdapter(JavaNamedNativeQuery.SINGLE_DECLARATION_ANNOTATION_ADAPTER, JPA.NAMED_NATIVE_QUERY__HINTS, index, JPA.QUERY_HINT);
+ }
+} // JavaQueryHint
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaRelationshipMapping.java
new file mode 100644
index 0000000000..75b4f4dcfc
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaRelationshipMapping.java
@@ -0,0 +1,559 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import java.util.Iterator;
+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.jdt.core.IType;
+import org.eclipse.jdt.core.Signature;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.IPersistentAttribute;
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.content.java.JavaPersistentType;
+import org.eclipse.jpt.core.internal.jdtutility.AnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.jdtutility.ConversionDeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.EnumDeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.ExpressionConverter;
+import org.eclipse.jpt.core.internal.jdtutility.JDTTools;
+import org.eclipse.jpt.core.internal.jdtutility.ShortCircuitAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.SimpleTypeStringExpressionConverter;
+import org.eclipse.jpt.core.internal.jdtutility.StringExpressionConverter;
+import org.eclipse.jpt.core.internal.mappings.IEntity;
+import org.eclipse.jpt.core.internal.mappings.IRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.core.internal.mappings.RelationshipMappingTools;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+import org.eclipse.jpt.utility.internal.CollectionTools;
+import org.eclipse.jpt.utility.internal.iterators.EmptyIterator;
+import org.eclipse.jpt.utility.internal.iterators.TransformationIterator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Relationship Mapping</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaRelationshipMapping()
+ * @model kind="class" abstract="true"
+ * @generated
+ */
+public abstract class JavaRelationshipMapping extends JavaAttributeMapping
+ implements IRelationshipMapping
+{
+ private AnnotationElementAdapter targetEntityAdapter;
+
+ // private AnnotationElementAdapter cascadeAdapter;
+ /**
+ * all the relationship mappings have a 'fetch' setting;
+ * but the 1:1 and m:1 mappings have a default of EAGER,
+ * while the 1:m and m:m mappings have a default of LAZY
+ */
+ private AnnotationElementAdapter fetchAdapter;
+
+ /**
+ * The default value of the '{@link #getTargetEntity() <em>Target Entity</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTargetEntity()
+ * @generated
+ * @ordered
+ */
+ protected static final String TARGET_ENTITY_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getSpecifiedTargetEntity() <em>Specified Target Entity</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedTargetEntity()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_TARGET_ENTITY_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedTargetEntity() <em>Specified Target Entity</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedTargetEntity()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedTargetEntity = SPECIFIED_TARGET_ENTITY_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultTargetEntity() <em>Default Target Entity</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultTargetEntity()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_TARGET_ENTITY_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultTargetEntity() <em>Default Target Entity</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultTargetEntity()
+ * @generated
+ * @ordered
+ */
+ protected String defaultTargetEntity = DEFAULT_TARGET_ENTITY_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getResolvedTargetEntity() <em>Resolved Target Entity</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getResolvedTargetEntity()
+ * @generated
+ * @ordered
+ */
+ protected IEntity resolvedTargetEntity;
+
+ protected JavaRelationshipMapping() {
+ throw new UnsupportedOperationException("Use JavaRelationshipMapping(Attribute) instead");
+ }
+
+ protected JavaRelationshipMapping(Attribute attribute) {
+ super(attribute);
+ this.targetEntityAdapter = this.buildAnnotationElementAdapter(this.targetEntityAdapter());
+ // this.cascadeAdapter = this.buildAnnotationElementAdapter(this.cascadeAdapter());
+ this.fetchAdapter = this.buildAnnotationElementAdapter(this.fetchAdapter());
+ }
+
+ protected AnnotationElementAdapter buildAnnotationElementAdapter(DeclarationAnnotationElementAdapter daea) {
+ return new ShortCircuitAnnotationElementAdapter(this.getAttribute(), daea);
+ }
+
+ /**
+ * return the Java adapter's 'targetEntity' element adapter config
+ */
+ protected abstract DeclarationAnnotationElementAdapter targetEntityAdapter();
+
+ /**
+ * return the Java adapter's 'cascade' element adapter config
+ */
+ // protected abstract DeclarationAnnotationElementAdapter cascadeAdapter();
+ /**
+ * return the Java adapter's 'fetch' element adapter config
+ */
+ protected abstract DeclarationAnnotationElementAdapter fetchAdapter();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_RELATIONSHIP_MAPPING;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Target Entity</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Target Entity</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIRelationshipMapping_TargetEntity()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated NOT
+ */
+ public String getTargetEntity() {
+ return (this.getSpecifiedTargetEntity() == null) ? getDefaultTargetEntity() : this.getSpecifiedTargetEntity();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Target Entity</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Target Entity</em>' attribute.
+ * @see #setSpecifiedTargetEntity(String)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIRelationshipMapping_SpecifiedTargetEntity()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedTargetEntity() {
+ return specifiedTargetEntity;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaRelationshipMapping#getSpecifiedTargetEntity <em>Specified Target Entity</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Target Entity</em>' attribute.
+ * @see #getSpecifiedTargetEntity()
+ * @generated
+ */
+ public void setSpecifiedTargetEntityGen(String newSpecifiedTargetEntity) {
+ String oldSpecifiedTargetEntity = specifiedTargetEntity;
+ specifiedTargetEntity = newSpecifiedTargetEntity;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY, oldSpecifiedTargetEntity, specifiedTargetEntity));
+ }
+
+ public void setSpecifiedTargetEntity(String newSpecifiedTargetEntity) {
+ this.targetEntityAdapter.setValue(newSpecifiedTargetEntity);
+ setSpecifiedTargetEntityGen(newSpecifiedTargetEntity);
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Target Entity</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Target Entity</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIRelationshipMapping_DefaultTargetEntity()
+ * @model changeable="false"
+ * @generated
+ */
+ public String getDefaultTargetEntity() {
+ return defaultTargetEntity;
+ }
+
+ protected void setDefaultTargetEntity(String newDefaultTargetEntity) {
+ String oldDefaultTargetEntity = this.defaultTargetEntity;
+ this.defaultTargetEntity = newDefaultTargetEntity;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY, oldDefaultTargetEntity, this.defaultTargetEntity));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Resolved Target Entity</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Resolved Target Entity</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Resolved Target Entity</em>' reference.
+ * @see #setResolvedTargetEntity(IEntity)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIRelationshipMapping_ResolvedTargetEntity()
+ * @model
+ * @generated
+ */
+ public IEntity getResolvedTargetEntity() {
+ if (resolvedTargetEntity != null && resolvedTargetEntity.eIsProxy()) {
+ InternalEObject oldResolvedTargetEntity = (InternalEObject) resolvedTargetEntity;
+ resolvedTargetEntity = (IEntity) eResolveProxy(oldResolvedTargetEntity);
+ if (resolvedTargetEntity != oldResolvedTargetEntity) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, JpaJavaMappingsPackage.JAVA_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY, oldResolvedTargetEntity, resolvedTargetEntity));
+ }
+ }
+ return resolvedTargetEntity;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IEntity basicGetResolvedTargetEntity() {
+ return resolvedTargetEntity;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaRelationshipMapping#getResolvedTargetEntity <em>Resolved Target Entity</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Resolved Target Entity</em>' reference.
+ * @see #getResolvedTargetEntity()
+ * @generated
+ */
+ public void setResolvedTargetEntity(IEntity newResolvedTargetEntity) {
+ IEntity oldResolvedTargetEntity = resolvedTargetEntity;
+ resolvedTargetEntity = newResolvedTargetEntity;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY, oldResolvedTargetEntity, resolvedTargetEntity));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_RELATIONSHIP_MAPPING__TARGET_ENTITY :
+ return getTargetEntity();
+ case JpaJavaMappingsPackage.JAVA_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY :
+ return getSpecifiedTargetEntity();
+ case JpaJavaMappingsPackage.JAVA_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY :
+ return getDefaultTargetEntity();
+ case JpaJavaMappingsPackage.JAVA_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY :
+ if (resolve)
+ return getResolvedTargetEntity();
+ return basicGetResolvedTargetEntity();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY :
+ setSpecifiedTargetEntity((String) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY :
+ setResolvedTargetEntity((IEntity) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY :
+ setSpecifiedTargetEntity(SPECIFIED_TARGET_ENTITY_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.JAVA_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY :
+ setResolvedTargetEntity((IEntity) null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_RELATIONSHIP_MAPPING__TARGET_ENTITY :
+ return TARGET_ENTITY_EDEFAULT == null ? getTargetEntity() != null : !TARGET_ENTITY_EDEFAULT.equals(getTargetEntity());
+ case JpaJavaMappingsPackage.JAVA_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY :
+ return SPECIFIED_TARGET_ENTITY_EDEFAULT == null ? specifiedTargetEntity != null : !SPECIFIED_TARGET_ENTITY_EDEFAULT.equals(specifiedTargetEntity);
+ case JpaJavaMappingsPackage.JAVA_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY :
+ return DEFAULT_TARGET_ENTITY_EDEFAULT == null ? defaultTargetEntity != null : !DEFAULT_TARGET_ENTITY_EDEFAULT.equals(defaultTargetEntity);
+ case JpaJavaMappingsPackage.JAVA_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY :
+ return resolvedTargetEntity != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IRelationshipMapping.class) {
+ switch (derivedFeatureID) {
+ case JpaJavaMappingsPackage.JAVA_RELATIONSHIP_MAPPING__TARGET_ENTITY :
+ return JpaCoreMappingsPackage.IRELATIONSHIP_MAPPING__TARGET_ENTITY;
+ case JpaJavaMappingsPackage.JAVA_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY :
+ return JpaCoreMappingsPackage.IRELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY;
+ case JpaJavaMappingsPackage.JAVA_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY :
+ return JpaCoreMappingsPackage.IRELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY;
+ case JpaJavaMappingsPackage.JAVA_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY :
+ return JpaCoreMappingsPackage.IRELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY;
+ 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 == IRelationshipMapping.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IRELATIONSHIP_MAPPING__TARGET_ENTITY :
+ return JpaJavaMappingsPackage.JAVA_RELATIONSHIP_MAPPING__TARGET_ENTITY;
+ case JpaCoreMappingsPackage.IRELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY :
+ return JpaJavaMappingsPackage.JAVA_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY;
+ case JpaCoreMappingsPackage.IRELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY :
+ return JpaJavaMappingsPackage.JAVA_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY;
+ case JpaCoreMappingsPackage.IRELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY :
+ return JpaJavaMappingsPackage.JAVA_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (specifiedTargetEntity: ");
+ result.append(specifiedTargetEntity);
+ result.append(", defaultTargetEntity: ");
+ result.append(defaultTargetEntity);
+ result.append(')');
+ return result.toString();
+ }
+
+ public String fullyQualifiedTargetEntity() {
+ return (getTargetEntity() == null) ? null : JDTTools.resolve(getTargetEntity(), this.jdtType());
+ }
+
+ @Override
+ public void updateFromJava(CompilationUnit astRoot) {
+ super.updateFromJava(astRoot);
+ setDefaultTargetEntity(this.javaDefaultTargetEntity());
+ setSpecifiedTargetEntity((String) this.targetEntityAdapter.getValue(astRoot));
+ //setCascade(CascadeType.fromJavaAnnotationValue(this.cascadeAdapter.getValue(astRoot)));
+ this.updateFetchFromJava(astRoot);
+ }
+
+ /**
+ * delegate to subclasses because there are different 'fetch'
+ * defaults across the subclasses
+ */
+ protected abstract void updateFetchFromJava(CompilationUnit astRoot);
+
+ /**
+ * the default 'targetEntity' is calculated from the attribute type;
+ * return null if the attribute type cannot possibly be an entity
+ */
+ protected String javaDefaultTargetEntity() {
+ return this.javaDefaultTargetEntity(this.getAttribute().typeSignature());
+ }
+
+ protected String javaDefaultTargetEntity(String signature) {
+ return buildReferenceEntityTypeName(signature, jdtType());
+ }
+
+ // TODO Embeddable???
+ public static String buildReferenceEntityTypeName(String signature, IType jdtType) {
+ if (Signature.getArrayCount(signature) > 0) {
+ return null; // arrays cannot be entities
+ }
+ if (JavaBasic.signatureIsBasic(signature, jdtType)) {
+ return null;
+ }
+ return JDTTools.resolve(Signature.toString(signature), jdtType);
+ }
+
+ //TODO grr, this will cause ClassCastExceptions, how should I handle it??
+ public IEntity getEntity() {
+ ITypeMapping typeMapping = ((JavaPersistentType) eContainer().eContainer()).getMapping();
+ if (typeMapping instanceof IEntity) {
+ return (IEntity) typeMapping;
+ }
+ return null;
+ }
+
+ @Override
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ super.refreshDefaults(defaultsContext);
+ String targetEntityName = fullyQualifiedTargetEntity();
+ if (targetEntityName != null) {
+ IPersistentType persistentType = defaultsContext.persistentType(targetEntityName);
+ if (persistentType != null) {
+ if (persistentType.getMapping() instanceof IEntity) {
+ setResolvedTargetEntity((IEntity) persistentType.getMapping());
+ return;
+ }
+ }
+ }
+ setResolvedTargetEntity(null);
+ }
+
+ public Iterator<String> possibleMappedByAttributeNames() {
+ IEntity targetEntity = getResolvedTargetEntity();
+ if (targetEntity == null) {
+ return EmptyIterator.instance();
+ }
+ return new TransformationIterator<IPersistentAttribute, String>(targetEntity.getPersistentType().attributes()) {
+ protected String transform(IPersistentAttribute attribute) {
+ return attribute.getName();
+ }
+ };
+ }
+
+ // ********** convenience methods **********
+ protected AnnotationElementAdapter getFetchAdapter() {
+ return this.fetchAdapter;
+ }
+
+ // ********** static methods **********
+ protected static DeclarationAnnotationElementAdapter buildTargetEntityAdapter(DeclarationAnnotationAdapter annotationAdapter, String elementName) {
+ // TODO what about QualifiedType?
+ return buildAnnotationElementAdapter(annotationAdapter, elementName, SimpleTypeStringExpressionConverter.instance());
+ }
+
+ protected static DeclarationAnnotationElementAdapter buildAnnotationElementAdapter(DeclarationAnnotationAdapter annotationAdapter, String elementName) {
+ return buildAnnotationElementAdapter(annotationAdapter, elementName, StringExpressionConverter.instance());
+ }
+
+ protected static DeclarationAnnotationElementAdapter buildAnnotationElementAdapter(DeclarationAnnotationAdapter annotationAdapter, String elementName, ExpressionConverter converter) {
+ return new ConversionDeclarationAnnotationElementAdapter(annotationAdapter, elementName, false, converter);
+ }
+
+ protected static DeclarationAnnotationElementAdapter buildEnumAnnotationElementAdapter(DeclarationAnnotationAdapter annotationAdapter, String elementName) {
+ return new EnumDeclarationAnnotationElementAdapter(annotationAdapter, elementName, false);
+ }
+
+ public boolean targetEntityIsValid(String targetEntity) {
+ return RelationshipMappingTools.targetEntityIsValid(targetEntity);
+ }
+
+ /**
+ * return whether the specified non-array type is one of the container
+ * types allowed by the JPA spec
+ */
+ protected static boolean typeNamedIsContainer(String typeName) {
+ return CollectionTools.contains(CONTAINER_TYPE_NAMES, typeName);
+ }
+
+ private static final String[] CONTAINER_TYPE_NAMES = {
+ java.util.Collection.class.getName(),
+ java.util.Set.class.getName(),
+ java.util.List.class.getName(),
+ java.util.Map.class.getName()
+ };
+} // JavaRelationshipMapping
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaSecondaryTable.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaSecondaryTable.java
new file mode 100644
index 0000000000..4a5410e109
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaSecondaryTable.java
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.jdt.core.dom.Annotation;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.jdtutility.CombinationIndexedDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.ConversionDeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.IndexedAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.IndexedDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Member;
+import org.eclipse.jpt.core.internal.jdtutility.MemberIndexedAnnotationAdapter;
+import org.eclipse.jpt.core.internal.mappings.ISecondaryTable;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Secondary Table</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaSecondaryTable()
+ * @model kind="class"
+ * @generated
+ */
+public class JavaSecondaryTable extends AbstractJavaTable
+ implements ISecondaryTable
+{
+ private final IndexedAnnotationAdapter annotationAdapter;
+
+ protected JavaSecondaryTable() {
+ super();
+ throw new UnsupportedOperationException("Use JavaSecondaryTable(Owner, Member, int) instead");
+ }
+
+ public JavaSecondaryTable(Owner owner, Member member, IndexedDeclarationAnnotationAdapter idaa) {
+ super(owner, member, idaa);
+ this.annotationAdapter = new MemberIndexedAnnotationAdapter(member, idaa);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_SECONDARY_TABLE;
+ }
+
+ /**
+ * allow owners to verify the annotation
+ */
+ public Annotation annotation(CompilationUnit astRoot) {
+ return this.annotationAdapter.getAnnotation(astRoot);
+ }
+
+ // ********** AbstractJavaTable implementation **********
+ @Override
+ protected DeclarationAnnotationElementAdapter nameAdapter(DeclarationAnnotationAdapter daa) {
+ return new ConversionDeclarationAnnotationElementAdapter(daa, JPA.SECONDARY_TABLE__NAME);
+ }
+
+ @Override
+ protected DeclarationAnnotationElementAdapter schemaAdapter(DeclarationAnnotationAdapter daa) {
+ return new ConversionDeclarationAnnotationElementAdapter(daa, JPA.SECONDARY_TABLE__SCHEMA);
+ }
+
+ @Override
+ protected DeclarationAnnotationElementAdapter catalogAdapter(DeclarationAnnotationAdapter daa) {
+ return new ConversionDeclarationAnnotationElementAdapter(daa, JPA.SECONDARY_TABLE__CATALOG);
+ }
+
+ // ********** persistence model -> java annotations **********
+ void moveAnnotation(int newIndex) {
+ this.annotationAdapter.moveAnnotation(newIndex);
+ }
+
+ void newAnnotation() {
+ this.annotationAdapter.newMarkerAnnotation();
+ }
+
+ void removeAnnotation() {
+ this.annotationAdapter.removeAnnotation();
+ }
+
+ // ********** static methods **********
+ static JavaSecondaryTable createJavaSecondaryTable(Owner owner, Member member, int index) {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaSecondaryTable(owner, member, buildDeclarationAnnotationAdapter(index));
+ }
+
+ private static IndexedDeclarationAnnotationAdapter buildDeclarationAnnotationAdapter(int index) {
+ return new CombinationIndexedDeclarationAnnotationAdapter(JPA.SECONDARY_TABLE, JPA.SECONDARY_TABLES, index);
+ }
+} // JavaSecondaryTable
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaSequenceGenerator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaSequenceGenerator.java
new file mode 100644
index 0000000000..1961fa3831
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaSequenceGenerator.java
@@ -0,0 +1,340 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.jdtutility.AnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Member;
+import org.eclipse.jpt.core.internal.jdtutility.SimpleDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.mappings.ISequenceGenerator;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Sequence Generator</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaSequenceGenerator()
+ * @model kind="class"
+ * @generated
+ */
+public class JavaSequenceGenerator extends JavaGenerator
+ implements ISequenceGenerator
+{
+ private final AnnotationElementAdapter sequenceNameAdapter;
+
+ public static final DeclarationAnnotationAdapter DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.SEQUENCE_GENERATOR);
+
+ private static final DeclarationAnnotationElementAdapter NAME_ADAPTER = buildAdapter(JPA.SEQUENCE_GENERATOR__NAME);
+
+ private static final DeclarationAnnotationElementAdapter INITIAL_VALUE_ADAPTER = buildNumberAdapter(JPA.SEQUENCE_GENERATOR__INITIAL_VALUE);
+
+ private static final DeclarationAnnotationElementAdapter ALLOCATION_SIZE_ADAPTER = buildNumberAdapter(JPA.SEQUENCE_GENERATOR__ALLOCATION_SIZE);
+
+ private static final DeclarationAnnotationElementAdapter SEQUENCE_NAME_ADAPTER = buildAdapter(JPA.SEQUENCE_GENERATOR__SEQUENCE_NAME);
+
+ /**
+ * The default value of the '{@link #getSequenceName() <em>Sequence Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSequenceName()
+ * @generated
+ * @ordered
+ */
+ protected static final String SEQUENCE_NAME_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getSpecifiedSequenceName() <em>Specified Sequence Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedSequenceName()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_SEQUENCE_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedSequenceName() <em>Specified Sequence Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedSequenceName()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedSequenceName = SPECIFIED_SEQUENCE_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultSequenceName() <em>Default Sequence Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultSequenceName()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_SEQUENCE_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultSequenceName() <em>Default Sequence Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultSequenceName()
+ * @generated
+ * @ordered
+ */
+ protected String defaultSequenceName = DEFAULT_SEQUENCE_NAME_EDEFAULT;
+
+ protected JavaSequenceGenerator() {
+ throw new UnsupportedOperationException("Use JavaSequenceGenerator(Member) instead");
+ }
+
+ protected JavaSequenceGenerator(Member member) {
+ super(member);
+ this.sequenceNameAdapter = this.buildAdapter(SEQUENCE_NAME_ADAPTER);
+ }
+
+ // ********** initialization **********
+ protected DeclarationAnnotationAdapter annotationAdapter() {
+ return DECLARATION_ANNOTATION_ADAPTER;
+ }
+
+ protected DeclarationAnnotationElementAdapter nameAdapter() {
+ return NAME_ADAPTER;
+ }
+
+ protected DeclarationAnnotationElementAdapter initialValueAdapter() {
+ return INITIAL_VALUE_ADAPTER;
+ }
+
+ protected DeclarationAnnotationElementAdapter allocationSizeAdapter() {
+ return ALLOCATION_SIZE_ADAPTER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_SEQUENCE_GENERATOR;
+ }
+
+ public String getSequenceName() {
+ return (this.getSpecifiedSequenceName() == null) ? getDefaultSequenceName() : this.getSpecifiedSequenceName();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Sequence Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Sequence Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Sequence Name</em>' attribute.
+ * @see #setSpecifiedSequenceName(String)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getISequenceGenerator_SpecifiedSequenceName()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedSequenceName() {
+ return specifiedSequenceName;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaSequenceGenerator#getSpecifiedSequenceName <em>Specified Sequence Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Sequence Name</em>' attribute.
+ * @see #getSpecifiedSequenceName()
+ * @generated
+ */
+ public void setSpecifiedSequenceNameGen(String newSpecifiedSequenceName) {
+ String oldSpecifiedSequenceName = specifiedSequenceName;
+ specifiedSequenceName = newSpecifiedSequenceName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_SEQUENCE_GENERATOR__SPECIFIED_SEQUENCE_NAME, oldSpecifiedSequenceName, specifiedSequenceName));
+ }
+
+ public void setSpecifiedSequenceName(String newSpecifiedSequenceName) {
+ setSpecifiedSequenceNameGen(newSpecifiedSequenceName);
+ setSpecifiedSequenceNameInJava(newSpecifiedSequenceName);
+ }
+
+ private void setSpecifiedSequenceNameInJava(String newSpecifiedSequenceName) {
+ this.sequenceNameAdapter.setValue(newSpecifiedSequenceName);
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Sequence Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Sequence Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Sequence Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getISequenceGenerator_DefaultSequenceName()
+ * @model changeable="false"
+ * @generated
+ */
+ public String getDefaultSequenceName() {
+ return defaultSequenceName;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_SEQUENCE_GENERATOR__SEQUENCE_NAME :
+ return getSequenceName();
+ case JpaJavaMappingsPackage.JAVA_SEQUENCE_GENERATOR__SPECIFIED_SEQUENCE_NAME :
+ return getSpecifiedSequenceName();
+ case JpaJavaMappingsPackage.JAVA_SEQUENCE_GENERATOR__DEFAULT_SEQUENCE_NAME :
+ return getDefaultSequenceName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_SEQUENCE_GENERATOR__SPECIFIED_SEQUENCE_NAME :
+ setSpecifiedSequenceName((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_SEQUENCE_GENERATOR__SPECIFIED_SEQUENCE_NAME :
+ setSpecifiedSequenceName(SPECIFIED_SEQUENCE_NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_SEQUENCE_GENERATOR__SEQUENCE_NAME :
+ return SEQUENCE_NAME_EDEFAULT == null ? getSequenceName() != null : !SEQUENCE_NAME_EDEFAULT.equals(getSequenceName());
+ case JpaJavaMappingsPackage.JAVA_SEQUENCE_GENERATOR__SPECIFIED_SEQUENCE_NAME :
+ return SPECIFIED_SEQUENCE_NAME_EDEFAULT == null ? specifiedSequenceName != null : !SPECIFIED_SEQUENCE_NAME_EDEFAULT.equals(specifiedSequenceName);
+ case JpaJavaMappingsPackage.JAVA_SEQUENCE_GENERATOR__DEFAULT_SEQUENCE_NAME :
+ return DEFAULT_SEQUENCE_NAME_EDEFAULT == null ? defaultSequenceName != null : !DEFAULT_SEQUENCE_NAME_EDEFAULT.equals(defaultSequenceName);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == ISequenceGenerator.class) {
+ switch (derivedFeatureID) {
+ case JpaJavaMappingsPackage.JAVA_SEQUENCE_GENERATOR__SEQUENCE_NAME :
+ return JpaCoreMappingsPackage.ISEQUENCE_GENERATOR__SEQUENCE_NAME;
+ case JpaJavaMappingsPackage.JAVA_SEQUENCE_GENERATOR__SPECIFIED_SEQUENCE_NAME :
+ return JpaCoreMappingsPackage.ISEQUENCE_GENERATOR__SPECIFIED_SEQUENCE_NAME;
+ case JpaJavaMappingsPackage.JAVA_SEQUENCE_GENERATOR__DEFAULT_SEQUENCE_NAME :
+ return JpaCoreMappingsPackage.ISEQUENCE_GENERATOR__DEFAULT_SEQUENCE_NAME;
+ 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 == ISequenceGenerator.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.ISEQUENCE_GENERATOR__SEQUENCE_NAME :
+ return JpaJavaMappingsPackage.JAVA_SEQUENCE_GENERATOR__SEQUENCE_NAME;
+ case JpaCoreMappingsPackage.ISEQUENCE_GENERATOR__SPECIFIED_SEQUENCE_NAME :
+ return JpaJavaMappingsPackage.JAVA_SEQUENCE_GENERATOR__SPECIFIED_SEQUENCE_NAME;
+ case JpaCoreMappingsPackage.ISEQUENCE_GENERATOR__DEFAULT_SEQUENCE_NAME :
+ return JpaJavaMappingsPackage.JAVA_SEQUENCE_GENERATOR__DEFAULT_SEQUENCE_NAME;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (specifiedSequenceName: ");
+ result.append(specifiedSequenceName);
+ result.append(", defaultSequenceName: ");
+ result.append(defaultSequenceName);
+ result.append(')');
+ return result.toString();
+ }
+
+ // ********** java annotations -> persistence model **********
+ public void updateFromJava(CompilationUnit astRoot) {
+ super.updateFromJava(astRoot);
+ setSpecifiedSequenceName((String) this.sequenceNameAdapter.getValue(astRoot));
+ }
+
+ // ********** static methods **********
+ private static DeclarationAnnotationElementAdapter buildAdapter(String elementName) {
+ return buildAdapter(DECLARATION_ANNOTATION_ADAPTER, elementName);
+ }
+
+ private static DeclarationAnnotationElementAdapter buildNumberAdapter(String elementName) {
+ return buildNumberAdapter(DECLARATION_ANNOTATION_ADAPTER, elementName);
+ }
+} // JavaSequenceGenerator
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaSingleRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaSingleRelationshipMapping.java
new file mode 100644
index 0000000000..862f11b11b
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaSingleRelationshipMapping.java
@@ -0,0 +1,606 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import java.util.Collection;
+import java.util.Iterator;
+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.ecore.EClass;
+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.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.jdtutility.AnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.jdtutility.BooleanStringExpressionConverter;
+import org.eclipse.jpt.core.internal.jdtutility.ConversionDeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Member;
+import org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType;
+import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Single Relationship Mapping</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaSingleRelationshipMapping()
+ * @model kind="class" abstract="true"
+ * @generated
+ */
+public abstract class JavaSingleRelationshipMapping
+ extends JavaRelationshipMapping implements ISingleRelationshipMapping
+{
+ private AnnotationElementAdapter optionalAdapter;
+
+ /**
+ * The default value of the '{@link #getFetch() <em>Fetch</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFetch()
+ * @generated
+ * @ordered
+ */
+ protected static final DefaultEagerFetchType FETCH_EDEFAULT = DefaultEagerFetchType.DEFAULT;
+
+ /**
+ * The cached value of the '{@link #getFetch() <em>Fetch</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFetch()
+ * @generated
+ * @ordered
+ */
+ protected DefaultEagerFetchType fetch = FETCH_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedJoinColumns() <em>Specified Join Columns</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedJoinColumns()
+ * @generated
+ * @ordered
+ */
+ protected EList<IJoinColumn> specifiedJoinColumns;
+
+ /**
+ * The cached value of the '{@link #getDefaultJoinColumns() <em>Default Join Columns</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultJoinColumns()
+ * @generated
+ * @ordered
+ */
+ protected EList<IJoinColumn> defaultJoinColumns;
+
+ protected JavaSingleRelationshipMapping() {
+ throw new UnsupportedOperationException("Use JavaSingleRelationshipMapping(Attribute) instead");
+ }
+
+ protected JavaSingleRelationshipMapping(Attribute attribute) {
+ super(attribute);
+ this.optionalAdapter = this.buildAnnotationElementAdapter(this.optionalAdapter());
+ this.getDefaultJoinColumns().add(this.createJoinColumn(new ISingleRelationshipMapping.JoinColumnOwner(this), attribute));
+ }
+
+ private IJoinColumn createJoinColumn(IJoinColumn.Owner joinColumnOwner, Member member) {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaJoinColumn(joinColumnOwner, member);
+ }
+
+ /**
+ * check for changes to the 'specifiedJoinColumns' and
+ * 'specifiedInverseJoinColumns' lists so we can notify the
+ * model adapter of any changes;
+ * also listen for changes to the 'defaultJoinColumns' and
+ * 'defaultInverseJoinColumns' lists so we can spank the developer
+ */
+ @Override
+ protected void notifyChanged(Notification notification) {
+ super.notifyChanged(notification);
+ switch (notification.getFeatureID(ISingleRelationshipMapping.class)) {
+ case JpaCoreMappingsPackage.ISINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS :
+ specifiedJoinColumnsChanged(notification);
+ break;
+ default :
+ break;
+ }
+ }
+
+ void specifiedJoinColumnsChanged(Notification notification) {
+ switch (notification.getEventType()) {
+ case Notification.ADD :
+ specifiedJoinColumnAdded(notification.getPosition(), (IJoinColumn) notification.getNewValue());
+ break;
+ case Notification.ADD_MANY :
+ specifiedJoinColumnsAdded(notification.getPosition(), (List) notification.getNewValue());
+ break;
+ case Notification.REMOVE :
+ specifiedJoinColumnRemoved(notification.getPosition(), (IJoinColumn) notification.getOldValue());
+ break;
+ case Notification.REMOVE_MANY :
+ if (notification.getPosition() == Notification.NO_INDEX) {
+ specifiedJoinColumnsCleared((List) notification.getOldValue());
+ }
+ else {
+ // Notification.getNewValue() returns an array of the positions of objects that were removed
+ specifiedJoinColumnsRemoved((int[]) notification.getNewValue(), (List) notification.getOldValue());
+ }
+ break;
+ case Notification.SET :
+ if (!notification.isTouch()) {
+ specifiedJoinColumnSet(notification.getPosition(), (IJoinColumn) notification.getOldValue(), (IJoinColumn) notification.getNewValue());
+ }
+ break;
+ case Notification.MOVE :
+ // Notification.getOldValue() returns the source index
+ // Notification.getPositon() returns the target index
+ // Notification.getNewValue() returns the moved object
+ specifiedJoinColumnMoved(notification.getOldIntValue(), notification.getPosition(), (IJoinColumn) notification.getNewValue());
+ break;
+ default :
+ break;
+ }
+ }
+
+ // ********** jpa model -> java annotations **********
+ /**
+ * slide over all the annotations that follow the new join column
+ */
+ public void specifiedJoinColumnAdded(int index, IJoinColumn joinColumn) {
+ //JoinColumn was added to persistence model when udating from java, do not need
+ //to edit the java in this case. TODO is there a better way to handle this??
+ if (((JavaJoinColumn) joinColumn).annotation(getAttribute().astRoot()) == null) {
+ this.synchJoinColumnAnnotationsAfterAdd(index + 1);
+ ((JavaJoinColumn) joinColumn).newAnnotation();
+ }
+ }
+
+ public void specifiedJoinColumnsAdded(int index, List joinColumns) {
+ //JoinColumn was added to persistence model when udating from java, do not need
+ //to edit the java in this case. TODO is there a better way to handle this??
+ if (!joinColumns.isEmpty() && ((JavaJoinColumn) joinColumns.get(0)).annotation(getAttribute().astRoot()) == null) {
+ this.synchJoinColumnAnnotationsAfterAdd(index + joinColumns.size());
+ for (Iterator stream = joinColumns.iterator(); stream.hasNext();) {
+ JavaJoinColumn joinColumn = (JavaJoinColumn) stream.next();
+ joinColumn.newAnnotation();
+ }
+ }
+ }
+
+ public void specifiedJoinColumnRemoved(int index, IJoinColumn joinColumn) {
+ ((JavaJoinColumn) joinColumn).removeAnnotation();
+ this.synchJoinColumnAnnotationsAfterRemove(index);
+ }
+
+ public void specifiedJoinColumnsRemoved(int[] indexes, List joinColumns) {
+ for (Iterator stream = joinColumns.iterator(); stream.hasNext();) {
+ JavaJoinColumn joinColumn = (JavaJoinColumn) stream.next();
+ joinColumn.removeAnnotation();
+ }
+ this.synchJoinColumnAnnotationsAfterRemove(indexes[0]);
+ }
+
+ public void specifiedJoinColumnsCleared(List joinColumns) {
+ for (Iterator stream = joinColumns.iterator(); stream.hasNext();) {
+ JavaJoinColumn joinColumn = (JavaJoinColumn) stream.next();
+ joinColumn.removeAnnotation();
+ }
+ }
+
+ public void specifiedJoinColumnSet(int index, IJoinColumn oldJoinColumn, IJoinColumn newJoinColumn) {
+ ((JavaJoinColumn) newJoinColumn).newAnnotation();
+ }
+
+ public void specifiedJoinColumnMoved(int sourceIndex, int targetIndex, IJoinColumn joinColumn) {
+ List joinColumns = getSpecifiedJoinColumns();
+ int begin = Math.min(sourceIndex, targetIndex);
+ int end = Math.max(sourceIndex, targetIndex);
+ for (int i = begin; i-- > end;) {
+ this.synch((IJoinColumn) joinColumns.get(i), i);
+ }
+ }
+
+ /**
+ * synchronize the annotations with the model join columns,
+ * starting at the end of the list to prevent overlap
+ */
+ private void synchJoinColumnAnnotationsAfterAdd(int index) {
+ List joinColumns = getSpecifiedJoinColumns();
+ for (int i = joinColumns.size(); i-- > index;) {
+ this.synch((IJoinColumn) joinColumns.get(i), i);
+ }
+ }
+
+ /**
+ * synchronize the annotations with the model join columns,
+ * starting at the specified index to prevent overlap
+ */
+ private void synchJoinColumnAnnotationsAfterRemove(int index) {
+ List joinColumns = getSpecifiedJoinColumns();
+ for (int i = index; i < joinColumns.size(); i++) {
+ this.synch((IJoinColumn) joinColumns.get(i), i);
+ }
+ }
+
+ private void synch(IJoinColumn joinColumn, int index) {
+ ((JavaJoinColumn) joinColumn).moveAnnotation(index);
+ }
+
+ /**
+ * return the Java adapter's 'optional' element adapter config
+ */
+ protected abstract DeclarationAnnotationElementAdapter optionalAdapter();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_SINGLE_RELATIONSHIP_MAPPING;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Fetch</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Fetch</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Fetch</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType
+ * @see #setFetch(DefaultEagerFetchType)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getISingleRelationshipMapping_Fetch()
+ * @model
+ * @generated
+ */
+ public DefaultEagerFetchType getFetch() {
+ return fetch;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaSingleRelationshipMapping#getFetch <em>Fetch</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Fetch</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType
+ * @see #getFetch()
+ * @generated
+ */
+ public void setFetchGen(DefaultEagerFetchType newFetch) {
+ DefaultEagerFetchType oldFetch = fetch;
+ fetch = newFetch == null ? FETCH_EDEFAULT : newFetch;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_SINGLE_RELATIONSHIP_MAPPING__FETCH, oldFetch, fetch));
+ }
+
+ public void setFetch(DefaultEagerFetchType newFetch) {
+ this.getFetchAdapter().setValue(newFetch.convertToJavaAnnotationValue());
+ setFetchGen(newFetch);
+ }
+
+ /**
+ * Returns the value of the '<em><b>Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Join Columns</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>Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getISingleRelationshipMapping_JoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IJoinColumn" containment="true" transient="true" changeable="false" volatile="true"
+ * @generated NOT
+ */
+ public EList getJoinColumns() {
+ return this.getSpecifiedJoinColumns().isEmpty() ? this.getDefaultJoinColumns() : this.getSpecifiedJoinColumns();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Join Columns</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>Specified Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getISingleRelationshipMapping_SpecifiedJoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IJoinColumn" containment="true"
+ * @generated
+ */
+ public EList<IJoinColumn> getSpecifiedJoinColumns() {
+ if (specifiedJoinColumns == null) {
+ specifiedJoinColumns = new EObjectContainmentEList<IJoinColumn>(IJoinColumn.class, this, JpaJavaMappingsPackage.JAVA_SINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS);
+ }
+ return specifiedJoinColumns;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Join Columns</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>Default Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getISingleRelationshipMapping_DefaultJoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IJoinColumn" containment="true"
+ * @generated
+ */
+ public EList<IJoinColumn> getDefaultJoinColumns() {
+ if (defaultJoinColumns == null) {
+ defaultJoinColumns = new EObjectContainmentEList<IJoinColumn>(IJoinColumn.class, this, JpaJavaMappingsPackage.JAVA_SINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS);
+ }
+ return defaultJoinColumns;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_SINGLE_RELATIONSHIP_MAPPING__JOIN_COLUMNS :
+ return ((InternalEList<?>) getJoinColumns()).basicRemove(otherEnd, msgs);
+ case JpaJavaMappingsPackage.JAVA_SINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS :
+ return ((InternalEList<?>) getSpecifiedJoinColumns()).basicRemove(otherEnd, msgs);
+ case JpaJavaMappingsPackage.JAVA_SINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS :
+ return ((InternalEList<?>) getDefaultJoinColumns()).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 JpaJavaMappingsPackage.JAVA_SINGLE_RELATIONSHIP_MAPPING__FETCH :
+ return getFetch();
+ case JpaJavaMappingsPackage.JAVA_SINGLE_RELATIONSHIP_MAPPING__JOIN_COLUMNS :
+ return getJoinColumns();
+ case JpaJavaMappingsPackage.JAVA_SINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS :
+ return getSpecifiedJoinColumns();
+ case JpaJavaMappingsPackage.JAVA_SINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS :
+ return getDefaultJoinColumns();
+ }
+ 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 JpaJavaMappingsPackage.JAVA_SINGLE_RELATIONSHIP_MAPPING__FETCH :
+ setFetch((DefaultEagerFetchType) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_SINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS :
+ getSpecifiedJoinColumns().clear();
+ getSpecifiedJoinColumns().addAll((Collection<? extends IJoinColumn>) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_SINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS :
+ getDefaultJoinColumns().clear();
+ getDefaultJoinColumns().addAll((Collection<? extends IJoinColumn>) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_SINGLE_RELATIONSHIP_MAPPING__FETCH :
+ setFetch(FETCH_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.JAVA_SINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS :
+ getSpecifiedJoinColumns().clear();
+ return;
+ case JpaJavaMappingsPackage.JAVA_SINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS :
+ getDefaultJoinColumns().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_SINGLE_RELATIONSHIP_MAPPING__FETCH :
+ return fetch != FETCH_EDEFAULT;
+ case JpaJavaMappingsPackage.JAVA_SINGLE_RELATIONSHIP_MAPPING__JOIN_COLUMNS :
+ return !getJoinColumns().isEmpty();
+ case JpaJavaMappingsPackage.JAVA_SINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS :
+ return specifiedJoinColumns != null && !specifiedJoinColumns.isEmpty();
+ case JpaJavaMappingsPackage.JAVA_SINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS :
+ return defaultJoinColumns != null && !defaultJoinColumns.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == ISingleRelationshipMapping.class) {
+ switch (derivedFeatureID) {
+ case JpaJavaMappingsPackage.JAVA_SINGLE_RELATIONSHIP_MAPPING__FETCH :
+ return JpaCoreMappingsPackage.ISINGLE_RELATIONSHIP_MAPPING__FETCH;
+ case JpaJavaMappingsPackage.JAVA_SINGLE_RELATIONSHIP_MAPPING__JOIN_COLUMNS :
+ return JpaCoreMappingsPackage.ISINGLE_RELATIONSHIP_MAPPING__JOIN_COLUMNS;
+ case JpaJavaMappingsPackage.JAVA_SINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS :
+ return JpaCoreMappingsPackage.ISINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS;
+ case JpaJavaMappingsPackage.JAVA_SINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS :
+ return JpaCoreMappingsPackage.ISINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS;
+ 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 == ISingleRelationshipMapping.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.ISINGLE_RELATIONSHIP_MAPPING__FETCH :
+ return JpaJavaMappingsPackage.JAVA_SINGLE_RELATIONSHIP_MAPPING__FETCH;
+ case JpaCoreMappingsPackage.ISINGLE_RELATIONSHIP_MAPPING__JOIN_COLUMNS :
+ return JpaJavaMappingsPackage.JAVA_SINGLE_RELATIONSHIP_MAPPING__JOIN_COLUMNS;
+ case JpaCoreMappingsPackage.ISINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS :
+ return JpaJavaMappingsPackage.JAVA_SINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS;
+ case JpaCoreMappingsPackage.ISINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS :
+ return JpaJavaMappingsPackage.JAVA_SINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (fetch: ");
+ result.append(fetch);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public void updateFromJava(CompilationUnit astRoot) {
+ super.updateFromJava(astRoot);
+ this.updateFetchFromJava(astRoot);
+ this.updateSpecifiedJoinColumnsFromJava(astRoot);
+ //setOptional(DefaultTrueBoolean.fromJavaAnnotationValue(this.optionalAdapter.getValue(astRoot)));
+ }
+
+ /**
+ * here we just worry about getting the join column lists the same size;
+ * then we delegate to the join columns to synch themselves up
+ */
+ private void updateSpecifiedJoinColumnsFromJava(CompilationUnit astRoot) {
+ // synchronize the model join columns with the Java source
+ List joinColumns = getSpecifiedJoinColumns();
+ int persSize = joinColumns.size();
+ int javaSize = 0;
+ boolean allJavaAnnotationsFound = false;
+ for (int i = 0; i < persSize; i++) {
+ JavaJoinColumn joinColumn = (JavaJoinColumn) joinColumns.get(i);
+ if (joinColumn.annotation(astRoot) == null) {
+ allJavaAnnotationsFound = true;
+ break; // no need to go any further
+ }
+ joinColumn.updateFromJava(astRoot);
+ javaSize++;
+ }
+ if (allJavaAnnotationsFound) {
+ // remove any model join columns beyond those that correspond to the Java annotations
+ while (persSize > javaSize) {
+ persSize--;
+ joinColumns.remove(persSize);
+ }
+ }
+ else {
+ // add new model join columns until they match the Java annotations
+ while (!allJavaAnnotationsFound) {
+ JavaJoinColumn joinColumn = this.createJavaJoinColumn(javaSize);
+ if (joinColumn.annotation(astRoot) == null) {
+ allJavaAnnotationsFound = true;
+ }
+ else {
+ getSpecifiedJoinColumns().add(joinColumn);
+ joinColumn.updateFromJava(astRoot);
+ javaSize++;
+ }
+ }
+ }
+ }
+
+ protected void updateFetchFromJava(CompilationUnit astRoot) {
+ setFetchGen(DefaultEagerFetchType.fromJavaAnnotationValue(this.getFetchAdapter().getValue(astRoot)));
+ }
+
+ /**
+ * extend to eliminate any "container" types
+ */
+ protected String javaDefaultTargetEntity() {
+ String typeName = super.javaDefaultTargetEntity();
+ // if the attribute is a container, don't use it
+ return typeNamedIsContainer(typeName) ? null : typeName;
+ }
+
+ public boolean containsSpecifiedJoinColumns() {
+ return !this.getSpecifiedJoinColumns().isEmpty();
+ }
+
+ public IJoinColumn createJoinColumn(int index) {
+ return this.createJavaJoinColumn(index);
+ }
+
+ private JavaJoinColumn createJavaJoinColumn(int index) {
+ return JavaJoinColumn.createSingleRelationshipMappingJoinColumn(new JoinColumnOwner(this), this.getAttribute(), index);
+ }
+
+ // ********** static methods **********
+ protected static DeclarationAnnotationElementAdapter buildOptionalAdapter(DeclarationAnnotationAdapter annotationAdapter, String elementName) {
+ return new ConversionDeclarationAnnotationElementAdapter(annotationAdapter, elementName, false, BooleanStringExpressionConverter.instance());
+ }
+} // JavaSingleRelationshipMapping
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTable.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTable.java
new file mode 100644
index 0000000000..defe1929b2
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTable.java
@@ -0,0 +1,83 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.jpt.core.internal.jdtutility.ConversionDeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Member;
+import org.eclipse.jpt.core.internal.jdtutility.SimpleDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.platform.BaseJpaPlatform;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Table</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaTable()
+ * @model kind="class"
+ * @generated
+ */
+public class JavaTable extends AbstractJavaTable
+{
+ private static final DeclarationAnnotationAdapter DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.TABLE);
+
+ private static final DeclarationAnnotationElementAdapter NAME_ADAPTER = new ConversionDeclarationAnnotationElementAdapter(DECLARATION_ANNOTATION_ADAPTER, JPA.TABLE__NAME);
+
+ private static final DeclarationAnnotationElementAdapter SCHEMA_ADAPTER = new ConversionDeclarationAnnotationElementAdapter(DECLARATION_ANNOTATION_ADAPTER, JPA.TABLE__SCHEMA);
+
+ private static final DeclarationAnnotationElementAdapter CATALOG_ADAPTER = new ConversionDeclarationAnnotationElementAdapter(DECLARATION_ANNOTATION_ADAPTER, JPA.TABLE__CATALOG);
+
+ protected JavaTable() {
+ super();
+ throw new UnsupportedOperationException("Use JavaSecondaryTable(Owner, Member) instead");
+ }
+
+ protected JavaTable(Owner owner, Member member) {
+ super(owner, member, DECLARATION_ANNOTATION_ADAPTER);
+ }
+
+ @Override
+ protected DeclarationAnnotationElementAdapter nameAdapter(DeclarationAnnotationAdapter declarationAnnotationAdapter) {
+ // ignore the daa passed in, @Table is never nested
+ return NAME_ADAPTER;
+ }
+
+ @Override
+ protected DeclarationAnnotationElementAdapter schemaAdapter(DeclarationAnnotationAdapter declarationAnnotationAdapter) {
+ // ignore the daa passed in, @Table is never nested
+ return SCHEMA_ADAPTER;
+ }
+
+ @Override
+ protected DeclarationAnnotationElementAdapter catalogAdapter(DeclarationAnnotationAdapter declarationAnnotationAdapter) {
+ // ignore the daa passed in, @Table is never nested
+ return CATALOG_ADAPTER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_TABLE;
+ }
+
+ @Override
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ super.refreshDefaults(defaultsContext);
+ this.setDefaultName((String) defaultsContext.getDefault(BaseJpaPlatform.DEFAULT_TABLE_NAME_KEY));
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTableGenerator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTableGenerator.java
new file mode 100644
index 0000000000..543b2376fb
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTableGenerator.java
@@ -0,0 +1,1118 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.jdtutility.AnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Member;
+import org.eclipse.jpt.core.internal.jdtutility.SimpleDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.mappings.ITableGenerator;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.core.internal.platform.BaseJpaPlatform;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Table Generator</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaTableGenerator()
+ * @model kind="class"
+ * @generated
+ */
+public class JavaTableGenerator extends JavaGenerator
+ implements ITableGenerator
+{
+ private final AnnotationElementAdapter tableAdapter;
+
+ private final AnnotationElementAdapter catalogAdapter;
+
+ private final AnnotationElementAdapter schemaAdapter;
+
+ private final AnnotationElementAdapter pkColumnNameAdapter;
+
+ private final AnnotationElementAdapter valueColumnNameAdapter;
+
+ private final AnnotationElementAdapter pkColumnValueAdapter;
+
+ public static final DeclarationAnnotationAdapter DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.TABLE_GENERATOR);
+
+ private static final DeclarationAnnotationElementAdapter NAME_ADAPTER = buildAdapter(JPA.TABLE_GENERATOR__NAME);
+
+ private static final DeclarationAnnotationElementAdapter INITIAL_VALUE_ADAPTER = buildNumberAdapter(JPA.TABLE_GENERATOR__INITIAL_VALUE);
+
+ private static final DeclarationAnnotationElementAdapter ALLOCATION_SIZE_ADAPTER = buildNumberAdapter(JPA.TABLE_GENERATOR__ALLOCATION_SIZE);
+
+ private static final DeclarationAnnotationElementAdapter TABLE_ADAPTER = buildAdapter(JPA.TABLE_GENERATOR__TABLE);
+
+ private static final DeclarationAnnotationElementAdapter CATALOG_ADAPTER = buildAdapter(JPA.TABLE_GENERATOR__CATALOG);
+
+ private static final DeclarationAnnotationElementAdapter SCHEMA_ADAPTER = buildAdapter(JPA.TABLE_GENERATOR__SCHEMA);
+
+ private static final DeclarationAnnotationElementAdapter PK_COLUMN_NAME_ADAPTER = buildAdapter(JPA.TABLE_GENERATOR__PK_COLUMN_NAME);
+
+ private static final DeclarationAnnotationElementAdapter VALUE_COLUMN_NAME_ADAPTER = buildAdapter(JPA.TABLE_GENERATOR__VALUE_COLUMN_NAME);
+
+ private static final DeclarationAnnotationElementAdapter PK_COLUMN_VALUE_ADAPTER = buildAdapter(JPA.TABLE_GENERATOR__PK_COLUMN_VALUE);
+
+ /**
+ * The default value of the '{@link #getTable() <em>Table</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTable()
+ * @generated
+ * @ordered
+ */
+ protected static final String TABLE_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getSpecifiedTable() <em>Specified Table</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedTable()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_TABLE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedTable() <em>Specified Table</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedTable()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedTable = SPECIFIED_TABLE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultTable() <em>Default Table</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultTable()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_TABLE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultTable() <em>Default Table</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultTable()
+ * @generated
+ * @ordered
+ */
+ protected String defaultTable = DEFAULT_TABLE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getCatalog() <em>Catalog</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCatalog()
+ * @generated
+ * @ordered
+ */
+ protected static final String CATALOG_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getSpecifiedCatalog() <em>Specified Catalog</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedCatalog()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_CATALOG_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedCatalog() <em>Specified Catalog</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedCatalog()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedCatalog = SPECIFIED_CATALOG_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultCatalog() <em>Default Catalog</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultCatalog()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_CATALOG_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultCatalog() <em>Default Catalog</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultCatalog()
+ * @generated
+ * @ordered
+ */
+ protected String defaultCatalog = DEFAULT_CATALOG_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getSchema() <em>Schema</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSchema()
+ * @generated
+ * @ordered
+ */
+ protected static final String SCHEMA_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getSpecifiedSchema() <em>Specified Schema</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedSchema()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_SCHEMA_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedSchema() <em>Specified Schema</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedSchema()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedSchema = SPECIFIED_SCHEMA_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultSchema() <em>Default Schema</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultSchema()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_SCHEMA_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultSchema() <em>Default Schema</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultSchema()
+ * @generated
+ * @ordered
+ */
+ protected String defaultSchema = DEFAULT_SCHEMA_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getPkColumnName() <em>Pk Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPkColumnName()
+ * @generated
+ * @ordered
+ */
+ protected static final String PK_COLUMN_NAME_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getSpecifiedPkColumnName() <em>Specified Pk Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedPkColumnName()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_PK_COLUMN_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedPkColumnName() <em>Specified Pk Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedPkColumnName()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedPkColumnName = SPECIFIED_PK_COLUMN_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultPkColumnName() <em>Default Pk Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultPkColumnName()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_PK_COLUMN_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultPkColumnName() <em>Default Pk Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultPkColumnName()
+ * @generated
+ * @ordered
+ */
+ protected String defaultPkColumnName = DEFAULT_PK_COLUMN_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getValueColumnName() <em>Value Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValueColumnName()
+ * @generated
+ * @ordered
+ */
+ protected static final String VALUE_COLUMN_NAME_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getSpecifiedValueColumnName() <em>Specified Value Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedValueColumnName()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_VALUE_COLUMN_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedValueColumnName() <em>Specified Value Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedValueColumnName()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedValueColumnName = SPECIFIED_VALUE_COLUMN_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultValueColumnName() <em>Default Value Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultValueColumnName()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_VALUE_COLUMN_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultValueColumnName() <em>Default Value Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultValueColumnName()
+ * @generated
+ * @ordered
+ */
+ protected String defaultValueColumnName = DEFAULT_VALUE_COLUMN_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getPkColumnValue() <em>Pk Column Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPkColumnValue()
+ * @generated
+ * @ordered
+ */
+ protected static final String PK_COLUMN_VALUE_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getSpecifiedPkColumnValue() <em>Specified Pk Column Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedPkColumnValue()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_PK_COLUMN_VALUE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedPkColumnValue() <em>Specified Pk Column Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedPkColumnValue()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedPkColumnValue = SPECIFIED_PK_COLUMN_VALUE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultPkColumnValue() <em>Default Pk Column Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultPkColumnValue()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_PK_COLUMN_VALUE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultPkColumnValue() <em>Default Pk Column Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultPkColumnValue()
+ * @generated
+ * @ordered
+ */
+ protected String defaultPkColumnValue = DEFAULT_PK_COLUMN_VALUE_EDEFAULT;
+
+ protected JavaTableGenerator() {
+ throw new UnsupportedOperationException("Use JavaTableGenerator(Member) instead");
+ }
+
+ protected JavaTableGenerator(Member member) {
+ super(member);
+ this.tableAdapter = this.buildAdapter(TABLE_ADAPTER);
+ this.catalogAdapter = this.buildAdapter(CATALOG_ADAPTER);
+ this.schemaAdapter = this.buildAdapter(SCHEMA_ADAPTER);
+ this.pkColumnNameAdapter = this.buildAdapter(PK_COLUMN_NAME_ADAPTER);
+ this.valueColumnNameAdapter = this.buildAdapter(VALUE_COLUMN_NAME_ADAPTER);
+ this.pkColumnValueAdapter = this.buildAdapter(PK_COLUMN_VALUE_ADAPTER);
+ }
+
+ // ********** initialization **********
+ protected DeclarationAnnotationAdapter annotationAdapter() {
+ return DECLARATION_ANNOTATION_ADAPTER;
+ }
+
+ protected DeclarationAnnotationElementAdapter nameAdapter() {
+ return NAME_ADAPTER;
+ }
+
+ protected DeclarationAnnotationElementAdapter initialValueAdapter() {
+ return INITIAL_VALUE_ADAPTER;
+ }
+
+ protected DeclarationAnnotationElementAdapter allocationSizeAdapter() {
+ return ALLOCATION_SIZE_ADAPTER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_TABLE_GENERATOR;
+ }
+
+ public String getTable() {
+ return (this.getSpecifiedTable() == null) ? getDefaultTable() : this.getSpecifiedTable();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Table</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Table</em>' attribute.
+ * @see #setSpecifiedTable(String)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getITableGenerator_SpecifiedTable()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedTable() {
+ return specifiedTable;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaTableGenerator#getSpecifiedTable <em>Specified Table</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Table</em>' attribute.
+ * @see #getSpecifiedTable()
+ * @generated
+ */
+ public void setSpecifiedTableGen(String newSpecifiedTable) {
+ String oldSpecifiedTable = specifiedTable;
+ specifiedTable = newSpecifiedTable;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_TABLE, oldSpecifiedTable, specifiedTable));
+ }
+
+ public void setSpecifiedTable(String newSpecifiedTable) {
+ setSpecifiedTableGen(newSpecifiedTable);
+ setSpecifiedTableInJava(newSpecifiedTable);
+ }
+
+ public void setSpecifiedTableInJava(String newSpecifiedTable) {
+ this.tableAdapter.setValue(newSpecifiedTable);
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Table</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Table</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getITableGenerator_DefaultTable()
+ * @model changeable="false"
+ * @generated
+ */
+ public String getDefaultTable() {
+ return defaultTable;
+ }
+
+ public String getCatalog() {
+ return (this.getSpecifiedCatalog() == null) ? getDefaultCatalog() : this.getSpecifiedCatalog();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Catalog</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Catalog</em>' attribute.
+ * @see #setSpecifiedCatalog(String)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getITableGenerator_SpecifiedCatalog()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedCatalog() {
+ return specifiedCatalog;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaTableGenerator#getSpecifiedCatalog <em>Specified Catalog</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Catalog</em>' attribute.
+ * @see #getSpecifiedCatalog()
+ * @generated
+ */
+ public void setSpecifiedCatalogGen(String newSpecifiedCatalog) {
+ String oldSpecifiedCatalog = specifiedCatalog;
+ specifiedCatalog = newSpecifiedCatalog;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_CATALOG, oldSpecifiedCatalog, specifiedCatalog));
+ }
+
+ public void setSpecifiedCatalog(String newSpecifiedCatalog) {
+ setSpecifiedCatalogGen(newSpecifiedCatalog);
+ setSpecifiedCatalogInJava(newSpecifiedCatalog);
+ }
+
+ private void setSpecifiedCatalogInJava(String newSpecifiedCatalog) {
+ this.catalogAdapter.setValue(newSpecifiedCatalog);
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Catalog</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Catalog</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getITableGenerator_DefaultCatalog()
+ * @model changeable="false"
+ * @generated
+ */
+ public String getDefaultCatalog() {
+ return defaultCatalog;
+ }
+
+ public String getSchema() {
+ return (this.getSpecifiedSchema() == null) ? getDefaultSchema() : this.getSpecifiedSchema();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Schema</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Schema</em>' attribute.
+ * @see #setSpecifiedSchema(String)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getITableGenerator_SpecifiedSchema()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedSchema() {
+ return specifiedSchema;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaTableGenerator#getSpecifiedSchema <em>Specified Schema</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Schema</em>' attribute.
+ * @see #getSpecifiedSchema()
+ * @generated
+ */
+ public void setSpecifiedSchemaGen(String newSpecifiedSchema) {
+ String oldSpecifiedSchema = specifiedSchema;
+ specifiedSchema = newSpecifiedSchema;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_SCHEMA, oldSpecifiedSchema, specifiedSchema));
+ }
+
+ public void setSpecifiedSchema(String newSpecifiedSchema) {
+ setSpecifiedSchemaGen(newSpecifiedSchema);
+ setSpecifiedSchemaInJava(newSpecifiedSchema);
+ }
+
+ private void setSpecifiedSchemaInJava(String newSpecifiedSchema) {
+ this.schemaAdapter.setValue(newSpecifiedSchema);
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Schema</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Schema</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getITableGenerator_DefaultSchema()
+ * @model changeable="false"
+ * @generated
+ */
+ public String getDefaultSchema() {
+ return defaultSchema;
+ }
+
+ protected void setDefaultSchema(String newDefaultSchema) {
+ String oldDefaultSchema = this.defaultSchema;
+ this.defaultSchema = newDefaultSchema;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__DEFAULT_SCHEMA, oldDefaultSchema, this.defaultSchema));
+ }
+
+ public String getPkColumnName() {
+ return (this.getSpecifiedPkColumnName() == null) ? getDefaultPkColumnName() : this.getSpecifiedPkColumnName();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Pk Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Pk Column Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Pk Column Name</em>' attribute.
+ * @see #setSpecifiedPkColumnName(String)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getITableGenerator_SpecifiedPkColumnName()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedPkColumnName() {
+ return specifiedPkColumnName;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaTableGenerator#getSpecifiedPkColumnName <em>Specified Pk Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Pk Column Name</em>' attribute.
+ * @see #getSpecifiedPkColumnName()
+ * @generated
+ */
+ public void setSpecifiedPkColumnNameGen(String newSpecifiedPkColumnName) {
+ String oldSpecifiedPkColumnName = specifiedPkColumnName;
+ specifiedPkColumnName = newSpecifiedPkColumnName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_NAME, oldSpecifiedPkColumnName, specifiedPkColumnName));
+ }
+
+ public void setSpecifiedPkColumnName(String newSpecifiedPkColumnName) {
+ setSpecifiedPkColumnNameGen(newSpecifiedPkColumnName);
+ setSpecifiedPkColumnNameInJava(newSpecifiedPkColumnName);
+ }
+
+ private void setSpecifiedPkColumnNameInJava(String newSpecifiedPkColumnName) {
+ this.pkColumnNameAdapter.setValue(newSpecifiedPkColumnName);
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Pk Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Pk Column Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Pk Column Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getITableGenerator_DefaultPkColumnName()
+ * @model changeable="false"
+ * @generated
+ */
+ public String getDefaultPkColumnName() {
+ return defaultPkColumnName;
+ }
+
+ public String getValueColumnName() {
+ return (this.getSpecifiedValueColumnName() == null) ? getDefaultValueColumnName() : this.getSpecifiedValueColumnName();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Value Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Value Column Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Value Column Name</em>' attribute.
+ * @see #setSpecifiedValueColumnName(String)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getITableGenerator_SpecifiedValueColumnName()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedValueColumnName() {
+ return specifiedValueColumnName;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaTableGenerator#getSpecifiedValueColumnName <em>Specified Value Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Value Column Name</em>' attribute.
+ * @see #getSpecifiedValueColumnName()
+ * @generated
+ */
+ public void setSpecifiedValueColumnNameGen(String newSpecifiedValueColumnName) {
+ String oldSpecifiedValueColumnName = specifiedValueColumnName;
+ specifiedValueColumnName = newSpecifiedValueColumnName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_VALUE_COLUMN_NAME, oldSpecifiedValueColumnName, specifiedValueColumnName));
+ }
+
+ public void setSpecifiedValueColumnName(String newSpecifiedValueColumnName) {
+ setSpecifiedValueColumnNameGen(newSpecifiedValueColumnName);
+ setSpecifiedValueColumnNameInJava(newSpecifiedValueColumnName);
+ }
+
+ public void setSpecifiedValueColumnNameInJava(String newSpecifiedValueColumnName) {
+ this.valueColumnNameAdapter.setValue(newSpecifiedValueColumnName);
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Value Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Value Column Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Value Column Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getITableGenerator_DefaultValueColumnName()
+ * @model changeable="false"
+ * @generated
+ */
+ public String getDefaultValueColumnName() {
+ return defaultValueColumnName;
+ }
+
+ public String getPkColumnValue() {
+ return (this.getSpecifiedPkColumnValue() == null) ? getDefaultPkColumnValue() : this.getSpecifiedPkColumnValue();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Pk Column Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Pk Column 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>Specified Pk Column Value</em>' attribute.
+ * @see #setSpecifiedPkColumnValue(String)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getITableGenerator_SpecifiedPkColumnValue()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedPkColumnValue() {
+ return specifiedPkColumnValue;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaTableGenerator#getSpecifiedPkColumnValue <em>Specified Pk Column Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Pk Column Value</em>' attribute.
+ * @see #getSpecifiedPkColumnValue()
+ * @generated
+ */
+ public void setSpecifiedPkColumnValueGen(String newSpecifiedPkColumnValue) {
+ String oldSpecifiedPkColumnValue = specifiedPkColumnValue;
+ specifiedPkColumnValue = newSpecifiedPkColumnValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_VALUE, oldSpecifiedPkColumnValue, specifiedPkColumnValue));
+ }
+
+ public void setSpecifiedPkColumnValue(String newSpecifiedPkColumnValue) {
+ setSpecifiedPkColumnValueGen(newSpecifiedPkColumnValue);
+ setSpecifiedPkColumnValueInJava(newSpecifiedPkColumnValue);
+ }
+
+ public void setSpecifiedPkColumnValueInJava(String newSpecifiedPkColumnValue) {
+ this.pkColumnValueAdapter.setValue(newSpecifiedPkColumnValue);
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Pk Column Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Pk Column 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>Default Pk Column Value</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getITableGenerator_DefaultPkColumnValue()
+ * @model changeable="false"
+ * @generated
+ */
+ public String getDefaultPkColumnValue() {
+ return defaultPkColumnValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__TABLE :
+ return getTable();
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_TABLE :
+ return getSpecifiedTable();
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__DEFAULT_TABLE :
+ return getDefaultTable();
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__CATALOG :
+ return getCatalog();
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_CATALOG :
+ return getSpecifiedCatalog();
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__DEFAULT_CATALOG :
+ return getDefaultCatalog();
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SCHEMA :
+ return getSchema();
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_SCHEMA :
+ return getSpecifiedSchema();
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__DEFAULT_SCHEMA :
+ return getDefaultSchema();
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__PK_COLUMN_NAME :
+ return getPkColumnName();
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_NAME :
+ return getSpecifiedPkColumnName();
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__DEFAULT_PK_COLUMN_NAME :
+ return getDefaultPkColumnName();
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__VALUE_COLUMN_NAME :
+ return getValueColumnName();
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_VALUE_COLUMN_NAME :
+ return getSpecifiedValueColumnName();
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__DEFAULT_VALUE_COLUMN_NAME :
+ return getDefaultValueColumnName();
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__PK_COLUMN_VALUE :
+ return getPkColumnValue();
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_VALUE :
+ return getSpecifiedPkColumnValue();
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__DEFAULT_PK_COLUMN_VALUE :
+ return getDefaultPkColumnValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_TABLE :
+ setSpecifiedTable((String) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_CATALOG :
+ setSpecifiedCatalog((String) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_SCHEMA :
+ setSpecifiedSchema((String) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_NAME :
+ setSpecifiedPkColumnName((String) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_VALUE_COLUMN_NAME :
+ setSpecifiedValueColumnName((String) newValue);
+ return;
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_VALUE :
+ setSpecifiedPkColumnValue((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_TABLE :
+ setSpecifiedTable(SPECIFIED_TABLE_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_CATALOG :
+ setSpecifiedCatalog(SPECIFIED_CATALOG_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_SCHEMA :
+ setSpecifiedSchema(SPECIFIED_SCHEMA_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_NAME :
+ setSpecifiedPkColumnName(SPECIFIED_PK_COLUMN_NAME_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_VALUE_COLUMN_NAME :
+ setSpecifiedValueColumnName(SPECIFIED_VALUE_COLUMN_NAME_EDEFAULT);
+ return;
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_VALUE :
+ setSpecifiedPkColumnValue(SPECIFIED_PK_COLUMN_VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__TABLE :
+ return TABLE_EDEFAULT == null ? getTable() != null : !TABLE_EDEFAULT.equals(getTable());
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_TABLE :
+ return SPECIFIED_TABLE_EDEFAULT == null ? specifiedTable != null : !SPECIFIED_TABLE_EDEFAULT.equals(specifiedTable);
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__DEFAULT_TABLE :
+ return DEFAULT_TABLE_EDEFAULT == null ? defaultTable != null : !DEFAULT_TABLE_EDEFAULT.equals(defaultTable);
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__CATALOG :
+ return CATALOG_EDEFAULT == null ? getCatalog() != null : !CATALOG_EDEFAULT.equals(getCatalog());
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_CATALOG :
+ return SPECIFIED_CATALOG_EDEFAULT == null ? specifiedCatalog != null : !SPECIFIED_CATALOG_EDEFAULT.equals(specifiedCatalog);
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__DEFAULT_CATALOG :
+ return DEFAULT_CATALOG_EDEFAULT == null ? defaultCatalog != null : !DEFAULT_CATALOG_EDEFAULT.equals(defaultCatalog);
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SCHEMA :
+ return SCHEMA_EDEFAULT == null ? getSchema() != null : !SCHEMA_EDEFAULT.equals(getSchema());
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_SCHEMA :
+ return SPECIFIED_SCHEMA_EDEFAULT == null ? specifiedSchema != null : !SPECIFIED_SCHEMA_EDEFAULT.equals(specifiedSchema);
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__DEFAULT_SCHEMA :
+ return DEFAULT_SCHEMA_EDEFAULT == null ? defaultSchema != null : !DEFAULT_SCHEMA_EDEFAULT.equals(defaultSchema);
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__PK_COLUMN_NAME :
+ return PK_COLUMN_NAME_EDEFAULT == null ? getPkColumnName() != null : !PK_COLUMN_NAME_EDEFAULT.equals(getPkColumnName());
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_NAME :
+ return SPECIFIED_PK_COLUMN_NAME_EDEFAULT == null ? specifiedPkColumnName != null : !SPECIFIED_PK_COLUMN_NAME_EDEFAULT.equals(specifiedPkColumnName);
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__DEFAULT_PK_COLUMN_NAME :
+ return DEFAULT_PK_COLUMN_NAME_EDEFAULT == null ? defaultPkColumnName != null : !DEFAULT_PK_COLUMN_NAME_EDEFAULT.equals(defaultPkColumnName);
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__VALUE_COLUMN_NAME :
+ return VALUE_COLUMN_NAME_EDEFAULT == null ? getValueColumnName() != null : !VALUE_COLUMN_NAME_EDEFAULT.equals(getValueColumnName());
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_VALUE_COLUMN_NAME :
+ return SPECIFIED_VALUE_COLUMN_NAME_EDEFAULT == null ? specifiedValueColumnName != null : !SPECIFIED_VALUE_COLUMN_NAME_EDEFAULT.equals(specifiedValueColumnName);
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__DEFAULT_VALUE_COLUMN_NAME :
+ return DEFAULT_VALUE_COLUMN_NAME_EDEFAULT == null ? defaultValueColumnName != null : !DEFAULT_VALUE_COLUMN_NAME_EDEFAULT.equals(defaultValueColumnName);
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__PK_COLUMN_VALUE :
+ return PK_COLUMN_VALUE_EDEFAULT == null ? getPkColumnValue() != null : !PK_COLUMN_VALUE_EDEFAULT.equals(getPkColumnValue());
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_VALUE :
+ return SPECIFIED_PK_COLUMN_VALUE_EDEFAULT == null ? specifiedPkColumnValue != null : !SPECIFIED_PK_COLUMN_VALUE_EDEFAULT.equals(specifiedPkColumnValue);
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__DEFAULT_PK_COLUMN_VALUE :
+ return DEFAULT_PK_COLUMN_VALUE_EDEFAULT == null ? defaultPkColumnValue != null : !DEFAULT_PK_COLUMN_VALUE_EDEFAULT.equals(defaultPkColumnValue);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == ITableGenerator.class) {
+ switch (derivedFeatureID) {
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__TABLE :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__TABLE;
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_TABLE :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__SPECIFIED_TABLE;
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__DEFAULT_TABLE :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__DEFAULT_TABLE;
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__CATALOG :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__CATALOG;
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_CATALOG :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__SPECIFIED_CATALOG;
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__DEFAULT_CATALOG :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__DEFAULT_CATALOG;
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SCHEMA :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__SCHEMA;
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_SCHEMA :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__SPECIFIED_SCHEMA;
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__DEFAULT_SCHEMA :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__DEFAULT_SCHEMA;
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__PK_COLUMN_NAME :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__PK_COLUMN_NAME;
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_NAME :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__SPECIFIED_PK_COLUMN_NAME;
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__DEFAULT_PK_COLUMN_NAME :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__DEFAULT_PK_COLUMN_NAME;
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__VALUE_COLUMN_NAME :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__VALUE_COLUMN_NAME;
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_VALUE_COLUMN_NAME :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__SPECIFIED_VALUE_COLUMN_NAME;
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__DEFAULT_VALUE_COLUMN_NAME :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__DEFAULT_VALUE_COLUMN_NAME;
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__PK_COLUMN_VALUE :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__PK_COLUMN_VALUE;
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_VALUE :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__SPECIFIED_PK_COLUMN_VALUE;
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__DEFAULT_PK_COLUMN_VALUE :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__DEFAULT_PK_COLUMN_VALUE;
+ 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 == ITableGenerator.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__TABLE :
+ return JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__TABLE;
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__SPECIFIED_TABLE :
+ return JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_TABLE;
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__DEFAULT_TABLE :
+ return JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__DEFAULT_TABLE;
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__CATALOG :
+ return JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__CATALOG;
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__SPECIFIED_CATALOG :
+ return JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_CATALOG;
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__DEFAULT_CATALOG :
+ return JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__DEFAULT_CATALOG;
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__SCHEMA :
+ return JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SCHEMA;
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__SPECIFIED_SCHEMA :
+ return JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_SCHEMA;
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__DEFAULT_SCHEMA :
+ return JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__DEFAULT_SCHEMA;
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__PK_COLUMN_NAME :
+ return JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__PK_COLUMN_NAME;
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__SPECIFIED_PK_COLUMN_NAME :
+ return JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_NAME;
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__DEFAULT_PK_COLUMN_NAME :
+ return JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__DEFAULT_PK_COLUMN_NAME;
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__VALUE_COLUMN_NAME :
+ return JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__VALUE_COLUMN_NAME;
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__SPECIFIED_VALUE_COLUMN_NAME :
+ return JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_VALUE_COLUMN_NAME;
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__DEFAULT_VALUE_COLUMN_NAME :
+ return JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__DEFAULT_VALUE_COLUMN_NAME;
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__PK_COLUMN_VALUE :
+ return JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__PK_COLUMN_VALUE;
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__SPECIFIED_PK_COLUMN_VALUE :
+ return JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_VALUE;
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__DEFAULT_PK_COLUMN_VALUE :
+ return JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR__DEFAULT_PK_COLUMN_VALUE;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (specifiedTable: ");
+ result.append(specifiedTable);
+ result.append(", defaultTable: ");
+ result.append(defaultTable);
+ result.append(", specifiedCatalog: ");
+ result.append(specifiedCatalog);
+ result.append(", defaultCatalog: ");
+ result.append(defaultCatalog);
+ result.append(", specifiedSchema: ");
+ result.append(specifiedSchema);
+ result.append(", defaultSchema: ");
+ result.append(defaultSchema);
+ result.append(", specifiedPkColumnName: ");
+ result.append(specifiedPkColumnName);
+ result.append(", defaultPkColumnName: ");
+ result.append(defaultPkColumnName);
+ result.append(", specifiedValueColumnName: ");
+ result.append(specifiedValueColumnName);
+ result.append(", defaultValueColumnName: ");
+ result.append(defaultValueColumnName);
+ result.append(", specifiedPkColumnValue: ");
+ result.append(specifiedPkColumnValue);
+ result.append(", defaultPkColumnValue: ");
+ result.append(defaultPkColumnValue);
+ result.append(')');
+ return result.toString();
+ }
+
+ // ********** java annotations -> persistence model **********
+ public void updateFromJava(CompilationUnit astRoot) {
+ super.updateFromJava(astRoot);
+ setSpecifiedTable((String) this.tableAdapter.getValue(astRoot));
+ setSpecifiedCatalog((String) this.catalogAdapter.getValue(astRoot));
+ setSpecifiedSchema((String) this.schemaAdapter.getValue(astRoot));
+ setSpecifiedPkColumnName((String) this.pkColumnNameAdapter.getValue(astRoot));
+ setSpecifiedValueColumnName((String) this.valueColumnNameAdapter.getValue(astRoot));
+ setSpecifiedPkColumnValue((String) this.pkColumnValueAdapter.getValue(astRoot));
+ }
+
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ setDefaultSchema((String) defaultsContext.getDefault(BaseJpaPlatform.DEFAULT_TABLE_GENERATOR_SCHEMA_KEY));
+ }
+
+ // ********** static methods **********
+ private static DeclarationAnnotationElementAdapter buildAdapter(String elementName) {
+ return buildAdapter(DECLARATION_ANNOTATION_ADAPTER, elementName);
+ }
+
+ private static DeclarationAnnotationElementAdapter buildNumberAdapter(String elementName) {
+ return buildNumberAdapter(DECLARATION_ANNOTATION_ADAPTER, elementName);
+ }
+} // JavaTableGenerator
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTransient.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTransient.java
new file mode 100644
index 0000000000..da9c6501f5
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTransient.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.SimpleDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.mappings.ITransient;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Transient</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaTransient()
+ * @model kind="class"
+ * @generated
+ */
+public class JavaTransient extends JavaAttributeMapping implements ITransient
+{
+ public static final DeclarationAnnotationAdapter DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.TRANSIENT);
+
+ protected JavaTransient() {
+ throw new UnsupportedOperationException("Use JavaTransient(Attribute) instead");
+ }
+
+ protected JavaTransient(Attribute attribute) {
+ super(attribute);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_TRANSIENT;
+ }
+
+ @Override
+ protected DeclarationAnnotationAdapter declarationAnnotationAdapter() {
+ return DECLARATION_ANNOTATION_ADAPTER;
+ }
+
+ public String getKey() {
+ return IMappingKeys.TRANSIENT_ATTRIBUTE_MAPPING_KEY;
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTransientProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTransientProvider.java
new file mode 100644
index 0000000000..79b7de88a7
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTransientProvider.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMapping;
+import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMappingProvider;
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+
+/**
+ *
+ */
+public class JavaTransientProvider
+ implements IJavaAttributeMappingProvider
+{
+
+ // singleton
+ private static final JavaTransientProvider INSTANCE = new JavaTransientProvider();
+
+ /**
+ * Return the singleton.
+ */
+ public static IJavaAttributeMappingProvider instance() {
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private JavaTransientProvider() {
+ super();
+ }
+
+ public String key() {
+ return IMappingKeys.TRANSIENT_ATTRIBUTE_MAPPING_KEY;
+ }
+
+ public boolean defaultApplies(Attribute attribute, DefaultsContext defaultsContext) {
+ return false;
+ }
+
+ public IJavaAttributeMapping buildMapping(Attribute attribute) {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaTransient(attribute);
+ }
+
+ public DeclarationAnnotationAdapter declarationAnnotationAdapter() {
+ return JavaTransient.DECLARATION_ANNOTATION_ADAPTER;
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTypeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTypeMapping.java
new file mode 100644
index 0000000000..d42460f1cc
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaTypeMapping.java
@@ -0,0 +1,262 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.JpaCorePackage;
+import org.eclipse.jpt.core.internal.content.java.IJavaTypeMapping;
+import org.eclipse.jpt.core.internal.content.java.JavaEObject;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Type;
+import org.eclipse.jpt.db.internal.Table;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Type Mapping</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaTypeMapping()
+ * @model kind="class" abstract="true"
+ * @generated
+ */
+//TODO need a way to morph between mapping types to save any information that is
+//comming to the different TypeMappings. For java, we do not know the other types
+//of mappings since they are defined in an extension point so we can do this the same
+//way as xml.
+public abstract class JavaTypeMapping extends JavaEObject
+ implements IJavaTypeMapping
+{
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getTableName() <em>Table Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTableName()
+ * @generated
+ * @ordered
+ */
+ protected static final String TABLE_NAME_EDEFAULT = null;
+
+ private Type type;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected JavaTypeMapping() {
+ super();
+ }
+
+ protected JavaTypeMapping(Type type) {
+ super();
+ this.type = type;
+ }
+
+ /**
+ * Return the declaration adapter for the mapping's annotation.
+ */
+ protected abstract DeclarationAnnotationAdapter declarationAnnotationAdapter();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_TYPE_MAPPING;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getITypeMapping_Name()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated NOT
+ */
+ public String getName() {
+ return getType().getName();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Table Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Table Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Table Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getITypeMapping_TableName()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated NOT
+ */
+ public String getTableName() {
+ return getType().getName();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ public void initialize() {
+ // TODO: implement this method
+ // Ensure that you remove @generated or mark it @generated NOT
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation" required="true"
+ * @generated NOT
+ */
+ public IPersistentType getPersistentType() {
+ return (IPersistentType) eContainer();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_TYPE_MAPPING__NAME :
+ return getName();
+ case JpaJavaMappingsPackage.JAVA_TYPE_MAPPING__TABLE_NAME :
+ return getTableName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_TYPE_MAPPING__NAME :
+ return NAME_EDEFAULT == null ? getName() != null : !NAME_EDEFAULT.equals(getName());
+ case JpaJavaMappingsPackage.JAVA_TYPE_MAPPING__TABLE_NAME :
+ return TABLE_NAME_EDEFAULT == null ? getTableName() != null : !TABLE_NAME_EDEFAULT.equals(getTableName());
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == ITypeMapping.class) {
+ switch (derivedFeatureID) {
+ case JpaJavaMappingsPackage.JAVA_TYPE_MAPPING__NAME :
+ return JpaCorePackage.ITYPE_MAPPING__NAME;
+ case JpaJavaMappingsPackage.JAVA_TYPE_MAPPING__TABLE_NAME :
+ return JpaCorePackage.ITYPE_MAPPING__TABLE_NAME;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IJavaTypeMapping.class) {
+ switch (derivedFeatureID) {
+ 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 == ITypeMapping.class) {
+ switch (baseFeatureID) {
+ case JpaCorePackage.ITYPE_MAPPING__NAME :
+ return JpaJavaMappingsPackage.JAVA_TYPE_MAPPING__NAME;
+ case JpaCorePackage.ITYPE_MAPPING__TABLE_NAME :
+ return JpaJavaMappingsPackage.JAVA_TYPE_MAPPING__TABLE_NAME;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IJavaTypeMapping.class) {
+ switch (baseFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ public void updateFromJava(CompilationUnit astRoot) {
+ // do nothing
+ }
+
+ public Type getType() {
+ return this.type;
+ }
+
+ public ITextRange getTextRange() {
+ ITextRange textRange = type.annotationTextRange(declarationAnnotationAdapter());
+ return (textRange == null) ? getPersistentType().getTextRange() : textRange;
+ }
+
+ public Table primaryDbTable() {
+ return null;
+ }
+
+ public Table dbTable(String tableName) {
+ return null;
+ }
+
+ /**
+ * @see ITypeMapping#attributeMappingKeyAllowed(String)
+ *
+ * Default implementation: override where needed
+ */
+ public boolean attributeMappingKeyAllowed(String attributeMappingKey) {
+ return true;
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaVersion.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaVersion.java
new file mode 100644
index 0000000000..27c5517486
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaVersion.java
@@ -0,0 +1,377 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+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.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.jdtutility.AnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.AnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.EnumDeclarationAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.MemberAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.ShortCircuitAnnotationElementAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.SimpleDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.mappings.IColumn;
+import org.eclipse.jpt.core.internal.mappings.IColumnMapping;
+import org.eclipse.jpt.core.internal.mappings.IVersion;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.core.internal.mappings.TemporalType;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Version</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaVersion()
+ * @model kind="class"
+ * @generated
+ */
+public class JavaVersion extends JavaAttributeMapping implements IVersion
+{
+ private final AnnotationAdapter temporalAnnotationAdapter;
+
+ private final AnnotationElementAdapter temporalValueAdapter;
+
+ public static final DeclarationAnnotationAdapter DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.VERSION);
+
+ private static final DeclarationAnnotationAdapter TEMPORAL_ADAPTER = new SimpleDeclarationAnnotationAdapter(JPA.TEMPORAL);
+
+ private static final DeclarationAnnotationElementAdapter TEMPORAL_VALUE_ADAPTER = buildTemporalValueAdapter();
+
+ /**
+ * The cached value of the '{@link #getColumn() <em>Column</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getColumn()
+ * @generated
+ * @ordered
+ */
+ protected IColumn column;
+
+ /**
+ * The default value of the '{@link #getTemporal() <em>Temporal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTemporal()
+ * @generated
+ * @ordered
+ */
+ protected static final TemporalType TEMPORAL_EDEFAULT = TemporalType.NULL;
+
+ /**
+ * The cached value of the '{@link #getTemporal() <em>Temporal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTemporal()
+ * @generated
+ * @ordered
+ */
+ protected TemporalType temporal = TEMPORAL_EDEFAULT;
+
+ protected JavaVersion() {
+ throw new UnsupportedOperationException("Use JavaVersion(Attribute) instead");
+ }
+
+ protected JavaVersion(Attribute attribute) {
+ super(attribute);
+ this.column = JavaColumn.createColumnMappingColumn(buildColumnOwner(), getAttribute());
+ ((InternalEObject) this.column).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - JpaJavaMappingsPackage.JAVA_VERSION__COLUMN, null, null);
+ this.temporalAnnotationAdapter = new MemberAnnotationAdapter(this.getAttribute(), TEMPORAL_ADAPTER);
+ this.temporalValueAdapter = new ShortCircuitAnnotationElementAdapter(attribute, TEMPORAL_VALUE_ADAPTER);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return JpaJavaMappingsPackage.Literals.JAVA_VERSION;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Column</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Column</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Column</em>' containment reference.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIVersion_Column()
+ * @model containment="true" required="true" changeable="false"
+ * @generated
+ */
+ public IColumn getColumn() {
+ return column;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetColumn(IColumn newColumn, NotificationChain msgs) {
+ IColumn oldColumn = column;
+ column = newColumn;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_VERSION__COLUMN, oldColumn, newColumn);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Temporal</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.TemporalType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Temporal</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Temporal</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.TemporalType
+ * @see #setTemporal(TemporalType)
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getIVersion_Temporal()
+ * @model
+ * @generated
+ */
+ public TemporalType getTemporal() {
+ return temporal;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaVersion#getTemporal <em>Temporal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Temporal</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.TemporalType
+ * @see #getTemporal()
+ * @generated
+ */
+ public void setTemporalGen(TemporalType newTemporal) {
+ TemporalType oldTemporal = temporal;
+ temporal = newTemporal == null ? TEMPORAL_EDEFAULT : newTemporal;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, JpaJavaMappingsPackage.JAVA_VERSION__TEMPORAL, oldTemporal, temporal));
+ }
+
+ public void setTemporal(TemporalType newTemporal) {
+ if (newTemporal != TemporalType.NULL) {
+ if (this.temporalAnnotationAdapter.getAnnotation() == null) {
+ this.temporalAnnotationAdapter.newMarkerAnnotation();
+ }
+ this.temporalValueAdapter.setValue(newTemporal.convertToJavaAnnotationValue());
+ }
+ else if (this.temporalAnnotationAdapter.getAnnotation() != null) {
+ this.temporalAnnotationAdapter.removeAnnotation();
+ }
+ setTemporalGen(newTemporal);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_VERSION__COLUMN :
+ return basicSetColumn(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 JpaJavaMappingsPackage.JAVA_VERSION__COLUMN :
+ return getColumn();
+ case JpaJavaMappingsPackage.JAVA_VERSION__TEMPORAL :
+ return getTemporal();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_VERSION__TEMPORAL :
+ setTemporal((TemporalType) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_VERSION__TEMPORAL :
+ setTemporal(TEMPORAL_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case JpaJavaMappingsPackage.JAVA_VERSION__COLUMN :
+ return column != null;
+ case JpaJavaMappingsPackage.JAVA_VERSION__TEMPORAL :
+ return temporal != TEMPORAL_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IColumnMapping.class) {
+ switch (derivedFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IVersion.class) {
+ switch (derivedFeatureID) {
+ case JpaJavaMappingsPackage.JAVA_VERSION__COLUMN :
+ return JpaCoreMappingsPackage.IVERSION__COLUMN;
+ case JpaJavaMappingsPackage.JAVA_VERSION__TEMPORAL :
+ return JpaCoreMappingsPackage.IVERSION__TEMPORAL;
+ 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 == IColumnMapping.class) {
+ switch (baseFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IVersion.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IVERSION__COLUMN :
+ return JpaJavaMappingsPackage.JAVA_VERSION__COLUMN;
+ case JpaCoreMappingsPackage.IVERSION__TEMPORAL :
+ return JpaJavaMappingsPackage.JAVA_VERSION__TEMPORAL;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (temporal: ");
+ result.append(temporal);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ protected DeclarationAnnotationAdapter declarationAnnotationAdapter() {
+ return DECLARATION_ANNOTATION_ADAPTER;
+ }
+
+ public String getKey() {
+ return IMappingKeys.VERSION_ATTRIBUTE_MAPPING_KEY;
+ }
+
+ @Override
+ public void updateFromJava(CompilationUnit astRoot) {
+ super.updateFromJava(astRoot);
+ this.updateTemporalFromJava(astRoot);
+ ((JavaColumn) this.column).updateFromJava(astRoot);
+ }
+
+ /*
+ * The @Temporal annotation is a bit different than most JPA annotations.
+ * For some indecipherable reason it has no default value (e.g. TIMESTAMP).
+ * Also, it is *required* for any attribute declared with a type of
+ * java.util.Date or java.util.Calendar; otherwise, it is *prohibited*.
+ * As a result we allow a Basic mapping to have a null 'temporal',
+ * indicating that the annotation is completely missing, as opposed
+ * to the annotation being present but its value is invalid (e.g.
+ * @Temporal(FRIDAY)).
+ *
+ * TODO this comment is wrong now, revisit this with Brian at some point
+ */
+ private void updateTemporalFromJava(CompilationUnit astRoot) {
+ if (this.temporalAnnotationAdapter.getAnnotation(astRoot) == null) {
+ setTemporalGen(TemporalType.NULL);
+ }
+ else {
+ setTemporalGen(TemporalType.fromJavaAnnotationValue(this.temporalValueAdapter.getValue(astRoot)));
+ }
+ }
+
+ // ********** static methods **********
+ private static DeclarationAnnotationElementAdapter buildTemporalValueAdapter() {
+ return new EnumDeclarationAnnotationElementAdapter(TEMPORAL_ADAPTER, JPA.TEMPORAL__VALUE, false);
+ }
+} // JavaVersion
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaVersionProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaVersionProvider.java
new file mode 100644
index 0000000000..cd556bb4ce
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JavaVersionProvider.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMapping;
+import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMappingProvider;
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+
+/**
+ *
+ */
+public class JavaVersionProvider
+ implements IJavaAttributeMappingProvider
+{
+
+ // singleton
+ private static final JavaVersionProvider INSTANCE = new JavaVersionProvider();
+
+ /**
+ * Return the singleton.
+ */
+ public static IJavaAttributeMappingProvider instance() {
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private JavaVersionProvider() {
+ super();
+ }
+
+ public String key() {
+ return IMappingKeys.VERSION_ATTRIBUTE_MAPPING_KEY;
+ }
+
+ public boolean defaultApplies(Attribute attribute, DefaultsContext defaultsContext) {
+ return false;
+ }
+
+ public IJavaAttributeMapping buildMapping(Attribute attribute) {
+ return JpaJavaMappingsFactory.eINSTANCE.createJavaVersion(attribute);
+ }
+
+ public DeclarationAnnotationAdapter declarationAnnotationAdapter() {
+ return JavaVersion.DECLARATION_ANNOTATION_ADAPTER;
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JpaJavaMappingsFactory.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JpaJavaMappingsFactory.java
new file mode 100644
index 0000000000..de3b55d299
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JpaJavaMappingsFactory.java
@@ -0,0 +1,505 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+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.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.jdtutility.DeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.IndexedDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Member;
+import org.eclipse.jpt.core.internal.jdtutility.NullDeclarationAnnotationAdapter;
+import org.eclipse.jpt.core.internal.jdtutility.Type;
+import org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.IColumn;
+import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.IOverride;
+import org.eclipse.jpt.core.internal.mappings.ITable;
+
+/**
+ * <!-- 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.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage
+ * @generated
+ */
+public class JpaJavaMappingsFactory extends EFactoryImpl
+{
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final JpaJavaMappingsFactory eINSTANCE = init();
+
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static JpaJavaMappingsFactory init() {
+ try {
+ JpaJavaMappingsFactory theJpaJavaMappingsFactory = (JpaJavaMappingsFactory) EPackage.Registry.INSTANCE.getEFactory("jpt.core.java.mappings.xmi");
+ if (theJpaJavaMappingsFactory != null) {
+ return theJpaJavaMappingsFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new JpaJavaMappingsFactory();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JpaJavaMappingsFactory() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case JpaJavaMappingsPackage.JAVA_ENTITY :
+ return createJavaEntity();
+ case JpaJavaMappingsPackage.JAVA_MAPPED_SUPERCLASS :
+ return createJavaMappedSuperclass();
+ case JpaJavaMappingsPackage.JAVA_EMBEDDABLE :
+ return createJavaEmbeddable();
+ case JpaJavaMappingsPackage.JAVA_NULL_TYPE_MAPPING :
+ return createJavaNullTypeMapping();
+ case JpaJavaMappingsPackage.JAVA_BASIC :
+ return createJavaBasic();
+ case JpaJavaMappingsPackage.JAVA_ID :
+ return createJavaId();
+ case JpaJavaMappingsPackage.JAVA_TRANSIENT :
+ return createJavaTransient();
+ case JpaJavaMappingsPackage.JAVA_VERSION :
+ return createJavaVersion();
+ case JpaJavaMappingsPackage.JAVA_EMBEDDED_ID :
+ return createJavaEmbeddedId();
+ case JpaJavaMappingsPackage.JAVA_EMBEDDED :
+ return createJavaEmbedded();
+ case JpaJavaMappingsPackage.JAVA_MANY_TO_ONE :
+ return createJavaManyToOne();
+ case JpaJavaMappingsPackage.JAVA_ONE_TO_ONE :
+ return createJavaOneToOne();
+ case JpaJavaMappingsPackage.JAVA_ONE_TO_MANY :
+ return createJavaOneToMany();
+ case JpaJavaMappingsPackage.JAVA_MANY_TO_MANY :
+ return createJavaManyToMany();
+ case JpaJavaMappingsPackage.JAVA_NULL_ATTRIBUTE_MAPPING :
+ return createJavaNullAttributeMapping();
+ case JpaJavaMappingsPackage.JAVA_TABLE :
+ return createJavaTable();
+ case JpaJavaMappingsPackage.JAVA_SECONDARY_TABLE :
+ return createJavaSecondaryTable();
+ case JpaJavaMappingsPackage.JAVA_JOIN_TABLE :
+ return createJavaJoinTable();
+ case JpaJavaMappingsPackage.JAVA_COLUMN :
+ return createJavaColumn();
+ case JpaJavaMappingsPackage.JAVA_JOIN_COLUMN :
+ return createJavaJoinColumn();
+ case JpaJavaMappingsPackage.JAVA_ATTRIBUTE_OVERRIDE :
+ return createJavaAttributeOverride();
+ case JpaJavaMappingsPackage.JAVA_ASSOCIATION_OVERRIDE :
+ return createJavaAssociationOverride();
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN :
+ return createJavaDiscriminatorColumn();
+ case JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN :
+ return createJavaPrimaryKeyJoinColumn();
+ case JpaJavaMappingsPackage.JAVA_GENERATED_VALUE :
+ return createJavaGeneratedValue();
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR :
+ return createJavaTableGenerator();
+ case JpaJavaMappingsPackage.JAVA_SEQUENCE_GENERATOR :
+ return createJavaSequenceGenerator();
+ case JpaJavaMappingsPackage.JAVA_ORDER_BY :
+ return createJavaOrderBy();
+ case JpaJavaMappingsPackage.JAVA_NAMED_QUERY :
+ return createJavaNamedQuery();
+ case JpaJavaMappingsPackage.JAVA_NAMED_NATIVE_QUERY :
+ return createJavaNamedNativeQuery();
+ case JpaJavaMappingsPackage.JAVA_QUERY_HINT :
+ return createJavaQueryHint();
+ default :
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ public JavaEntity createJavaEntity() {
+ throw new UnsupportedOperationException("Use createJavaEntity(Type) instead");
+ }
+
+ public JavaEntity createJavaEntity(Type type) {
+ JavaEntity javaEntity = new JavaEntity(type);
+ return javaEntity;
+ }
+
+ public JavaMappedSuperclass createJavaMappedSuperclass() {
+ throw new UnsupportedOperationException("Use createJavaMappedSuperclass(Type) instead");
+ }
+
+ public JavaEmbeddable createJavaEmbeddable() {
+ throw new UnsupportedOperationException("Use createJavaEmbeddable(Type) instead");
+ }
+
+ public JavaEmbeddable createJavaEmbeddable(Type type) {
+ JavaEmbeddable javaEmbeddable = new JavaEmbeddable(type);
+ return javaEmbeddable;
+ }
+
+ public JavaMappedSuperclass createJavaMappedSuperclass(Type type) {
+ JavaMappedSuperclass javaMappedSuperclass = new JavaMappedSuperclass(type);
+ return javaMappedSuperclass;
+ }
+
+ public JavaNullTypeMapping createJavaNullTypeMapping() {
+ throw new UnsupportedOperationException("Use createJavaNullTypeMapping(Type) instead");
+ }
+
+ public JavaNullTypeMapping createJavaNullTypeMapping(Type type) {
+ JavaNullTypeMapping javaNullTypeMapping = new JavaNullTypeMapping(type);
+ return javaNullTypeMapping;
+ }
+
+ public JavaNullAttributeMapping createJavaNullAttributeMapping() {
+ throw new UnsupportedOperationException("Use createJavaNullAttributeMapping(Attribute) instead");
+ }
+
+ public JavaNullAttributeMapping createJavaNullAttributeMapping(Attribute attribute) {
+ JavaNullAttributeMapping javaNullAttributeMapping = new JavaNullAttributeMapping(attribute);
+ return javaNullAttributeMapping;
+ }
+
+ public JavaBasic createJavaBasic() {
+ throw new UnsupportedOperationException("Use createJavaBasic(Attribute) instead");
+ }
+
+ public JavaBasic createJavaBasic(Attribute attribute) {
+ JavaBasic javaBasic = new JavaBasic(attribute);
+ return javaBasic;
+ }
+
+ public JavaId createJavaId() {
+ throw new UnsupportedOperationException("Use createJavaId(Attribute) instead");
+ }
+
+ public JavaTransient createJavaTransient() {
+ throw new UnsupportedOperationException("Use createJavaTransient(Attribute) instead");
+ }
+
+ public JavaVersion createJavaVersion() {
+ throw new UnsupportedOperationException("Use createJavaVersion(Attribute) instead");
+ }
+
+ public JavaVersion createJavaVersion(Attribute attribute) {
+ JavaVersion javaVersion = new JavaVersion(attribute);
+ return javaVersion;
+ }
+
+ public JavaEmbeddedId createJavaEmbeddedId() {
+ throw new UnsupportedOperationException("Use createJavaEmbeddedId(Attribute) instead");
+ }
+
+ public JavaEmbeddedId createJavaEmbeddedId(Attribute attribute) {
+ JavaEmbeddedId javaEmbeddedId = new JavaEmbeddedId(attribute);
+ return javaEmbeddedId;
+ }
+
+ public JavaEmbedded createJavaEmbedded() {
+ throw new UnsupportedOperationException("Use createJavaEmbedded(Attribute) instead");
+ }
+
+ public JavaEmbedded createJavaEmbedded(Attribute attribute) {
+ JavaEmbedded javaEmbedded = new JavaEmbedded(attribute);
+ return javaEmbedded;
+ }
+
+ public JavaTransient createJavaTransient(Attribute attribute) {
+ JavaTransient javaTransient = new JavaTransient(attribute);
+ return javaTransient;
+ }
+
+ public JavaId createJavaId(Attribute attribute) {
+ JavaId javaId = new JavaId(attribute);
+ return javaId;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public JavaTable createJavaTable() {
+ throw new UnsupportedOperationException("Use createJavaTable(ITable.Owner, Member) instead");
+ }
+
+ public JavaTable createJavaTable(ITable.Owner owner, Member member) {
+ JavaTable javaTable = new JavaTable(owner, member);
+ return javaTable;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public JavaColumn createJavaColumn() {
+ throw new UnsupportedOperationException("Use createJavaColumn(Member ) instead");
+ }
+
+ public JavaOneToMany createJavaOneToMany() {
+ throw new UnsupportedOperationException("Use createJavaOneToMany(Attribute) instead");
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JavaManyToMany createJavaManyToMany() {
+ JavaManyToMany javaManyToMany = new JavaManyToMany();
+ return javaManyToMany;
+ }
+
+ public JavaManyToMany createJavaManyToMany(Attribute attribute) {
+ JavaManyToMany javaManyToMany = new JavaManyToMany(attribute);
+ return javaManyToMany;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JavaJoinTable createJavaJoinTable() {
+ JavaJoinTable javaJoinTable = new JavaJoinTable();
+ return javaJoinTable;
+ }
+
+ public JavaJoinTable createJavaJoinTable(ITable.Owner owner, Member member) {
+ JavaJoinTable javaJoinTable = new JavaJoinTable(owner, member);
+ return javaJoinTable;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JavaJoinColumn createJavaJoinColumn() {
+ JavaJoinColumn javaJoinColumn = new JavaJoinColumn();
+ return javaJoinColumn;
+ }
+
+ public JavaAttributeOverride createJavaAttributeOverride() {
+ throw new UnsupportedOperationException();
+ }
+
+ public JavaAttributeOverride createJavaAttributeOverride(IOverride.Owner owner, Member member, IndexedDeclarationAnnotationAdapter idaa) {
+ JavaAttributeOverride javaAttributeOverride = new JavaAttributeOverride(owner, member, idaa);
+ return javaAttributeOverride;
+ }
+
+ public JavaAttributeOverride createJavaAttributeOverride(IOverride.Owner owner, Member member) {
+ return this.createJavaAttributeOverride(owner, member, NullDeclarationAnnotationAdapter.instance());
+ }
+
+ public JavaAssociationOverride createJavaAssociationOverride() {
+ throw new UnsupportedOperationException();
+ }
+
+ public JavaAssociationOverride createJavaAssociationOverride(IOverride.Owner owner, Member member, IndexedDeclarationAnnotationAdapter idaa) {
+ JavaAssociationOverride javaAssociationOverride = new JavaAssociationOverride(owner, member, idaa);
+ return javaAssociationOverride;
+ }
+
+ public JavaAssociationOverride createJavaAssociationOverride(IOverride.Owner owner, Member member) {
+ return this.createJavaAssociationOverride(owner, member, NullDeclarationAnnotationAdapter.instance());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public JavaDiscriminatorColumn createJavaDiscriminatorColumn() {
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JavaPrimaryKeyJoinColumn createJavaPrimaryKeyJoinColumn() {
+ JavaPrimaryKeyJoinColumn javaPrimaryKeyJoinColumn = new JavaPrimaryKeyJoinColumn();
+ return javaPrimaryKeyJoinColumn;
+ }
+
+ public JavaGeneratedValue createJavaGeneratedValue() {
+ throw new UnsupportedOperationException("Use createJavaGeneratedValue(Member) instead");
+ }
+
+ public JavaGeneratedValue createJavaGeneratedValue(Member member) {
+ JavaGeneratedValue javaGeneratedValue = new JavaGeneratedValue(member);
+ return javaGeneratedValue;
+ }
+
+ public JavaTableGenerator createJavaTableGenerator() {
+ throw new UnsupportedOperationException("Use createJavaTableGenerator(Member) instead");
+ }
+
+ public JavaTableGenerator createJavaTableGenerator(Member member) {
+ JavaTableGenerator javaTableGenerator = new JavaTableGenerator(member);
+ return javaTableGenerator;
+ }
+
+ public JavaSequenceGenerator createJavaSequenceGenerator() {
+ throw new UnsupportedOperationException("Use createJavaSequenceGenerator(Member) instead");
+ }
+
+ public JavaOrderBy createJavaOrderBy() {
+ throw new UnsupportedOperationException("Use createJavaOrderBy(Member) instead");
+ }
+
+ public JavaNamedQuery createJavaNamedQuery() {
+ throw new UnsupportedOperationException("Use createJavaNamedQuery(Member, IndexedDeclarationAnnotationAdapter) instead");
+ }
+
+ public JavaNamedQuery createJavaNamedQuery(Member member, IndexedDeclarationAnnotationAdapter idaa) {
+ JavaNamedQuery javaNamedQuery = new JavaNamedQuery(member, idaa);
+ return javaNamedQuery;
+ }
+
+ public JavaNamedNativeQuery createJavaNamedNativeQuery() {
+ throw new UnsupportedOperationException("Use createJavaNamedNativeQuery(Member, IndexedDeclarationAnnotationAdapter) instead");
+ }
+
+ public JavaNamedNativeQuery createJavaNamedNativeQuery(Member member, IndexedDeclarationAnnotationAdapter idaa) {
+ JavaNamedNativeQuery javaNamedNativeQuery = new JavaNamedNativeQuery(member, idaa);
+ return javaNamedNativeQuery;
+ }
+
+ public JavaQueryHint createJavaQueryHint() {
+ throw new UnsupportedOperationException("Use createJavaQueryHint(Member, IndexedDeclarationAnnotationAdapter) instead");
+ }
+
+ public JavaQueryHint createJavaQueryHint(Member member, IndexedDeclarationAnnotationAdapter idaa) {
+ JavaQueryHint javaQueryHint = new JavaQueryHint(member, idaa);
+ return javaQueryHint;
+ }
+
+ public JavaOrderBy createJavaOrderBy(Member member) {
+ JavaOrderBy javaOrderBy = new JavaOrderBy(member);
+ return javaOrderBy;
+ }
+
+ public JavaSequenceGenerator createJavaSequenceGenerator(Member member) {
+ JavaSequenceGenerator javaSequenceGenerator = new JavaSequenceGenerator(member);
+ return javaSequenceGenerator;
+ }
+
+ public JavaPrimaryKeyJoinColumn createJavaPrimaryKeyJoinColumn(IAbstractJoinColumn.Owner owner, Member member, int index) {
+ JavaPrimaryKeyJoinColumn javaPrimaryKeyJoinColumn = new JavaPrimaryKeyJoinColumn(owner, member, index);
+ return javaPrimaryKeyJoinColumn;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public JavaSecondaryTable createJavaSecondaryTable() {
+ throw new UnsupportedOperationException();
+ }
+
+ public JavaSecondaryTable createJavaSecondaryTable(ITable.Owner owner, Member member, IndexedDeclarationAnnotationAdapter idaa) {
+ JavaSecondaryTable javaSecondaryTable = new JavaSecondaryTable(owner, member, idaa);
+ return javaSecondaryTable;
+ }
+
+ public JavaDiscriminatorColumn createJavaDiscriminatorColumn(Type type) {
+ JavaDiscriminatorColumn javaDiscriminatorColumn = new JavaDiscriminatorColumn(type);
+ return javaDiscriminatorColumn;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JpaJavaMappingsPackage getJpaJavaMappingsPackage() {
+ return (JpaJavaMappingsPackage) getEPackage();
+ }
+
+ public JavaJoinColumn createJavaJoinColumn(IJoinColumn.Owner joinColumnOwner, Member member, IndexedDeclarationAnnotationAdapter idaa) {
+ JavaJoinColumn javaJoinColumn = new JavaJoinColumn(joinColumnOwner, member, idaa);
+ return javaJoinColumn;
+ }
+
+ public JavaJoinColumn createJavaJoinColumn(IJoinColumn.Owner joinColumnOwner, Member member) {
+ return this.createJavaJoinColumn(joinColumnOwner, member, NullDeclarationAnnotationAdapter.instance());
+ }
+
+ public JavaManyToOne createJavaManyToOne() {
+ throw new UnsupportedOperationException("Use createJavaManyToOne(Attribute) instead");
+ }
+
+ public JavaOneToOne createJavaOneToOne() {
+ throw new UnsupportedOperationException("Use createJavaOneToOne(Attribute) instead");
+ }
+
+ public JavaOneToOne createJavaOneToOne(Attribute attribute) {
+ JavaOneToOne javaOneToOne = new JavaOneToOne(attribute);
+ return javaOneToOne;
+ }
+
+ public JavaManyToOne createJavaManyToOne(Attribute attribute) {
+ JavaManyToOne javaManyToOne = new JavaManyToOne(attribute);
+ return javaManyToOne;
+ }
+
+ public JavaOneToMany createJavaOneToMany(Attribute attribute) {
+ JavaOneToMany javaOneToMany = new JavaOneToMany(attribute);
+ return javaOneToMany;
+ }
+
+ public JavaColumn createJavaColumn(IColumn.Owner owner, Member member, DeclarationAnnotationAdapter daa) {
+ JavaColumn javaColumn = new JavaColumn(owner, member, daa);
+ return javaColumn;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static JpaJavaMappingsPackage getPackage() {
+ return JpaJavaMappingsPackage.eINSTANCE;
+ }
+} //JavaMappingsFactory
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JpaJavaMappingsPackage.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JpaJavaMappingsPackage.java
new file mode 100644
index 0000000000..d030ef1d8e
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/JpaJavaMappingsPackage.java
@@ -0,0 +1,4838 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings;
+
+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.jem.java.JavaRefPackage;
+import org.eclipse.jpt.core.internal.JpaCorePackage;
+import org.eclipse.jpt.core.internal.content.java.JpaJavaPackage;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.content.persistence.PersistencePackage;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+
+/**
+ * <!-- 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.jpt.core.internal.content.java.mappings.JpaJavaMappingsFactory
+ * @model kind="package"
+ * @generated
+ */
+public class JpaJavaMappingsPackage extends EPackageImpl
+{
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNAME = "mappings";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNS_URI = "jpt.core.java.mappings.xmi";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNS_PREFIX = "jpt.core.java.mappings";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final JpaJavaMappingsPackage eINSTANCE = org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaTypeMapping <em>Java Type Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaTypeMapping
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaTypeMapping()
+ * @generated
+ */
+ public static final int JAVA_TYPE_MAPPING = 0;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TYPE_MAPPING__NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Table Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TYPE_MAPPING__TABLE_NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Java Type Mapping</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TYPE_MAPPING_FEATURE_COUNT = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaEntity <em>Java Entity</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaEntity
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaEntity()
+ * @generated
+ */
+ public static final int JAVA_ENTITY = 1;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ENTITY__NAME = JAVA_TYPE_MAPPING__NAME;
+
+ /**
+ * The feature id for the '<em><b>Table Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ENTITY__TABLE_NAME = JAVA_TYPE_MAPPING__TABLE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ENTITY__SPECIFIED_NAME = JAVA_TYPE_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ENTITY__DEFAULT_NAME = JAVA_TYPE_MAPPING_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Table</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ENTITY__TABLE = JAVA_TYPE_MAPPING_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Primary Key Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ENTITY__PRIMARY_KEY_JOIN_COLUMNS = JAVA_TYPE_MAPPING_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Specified Primary Key Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ENTITY__SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS = JAVA_TYPE_MAPPING_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Default Primary Key Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ENTITY__DEFAULT_PRIMARY_KEY_JOIN_COLUMNS = JAVA_TYPE_MAPPING_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Inheritance Strategy</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ENTITY__INHERITANCE_STRATEGY = JAVA_TYPE_MAPPING_FEATURE_COUNT + 6;
+
+ /**
+ * The feature id for the '<em><b>Default Discriminator Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ENTITY__DEFAULT_DISCRIMINATOR_VALUE = JAVA_TYPE_MAPPING_FEATURE_COUNT + 7;
+
+ /**
+ * The feature id for the '<em><b>Specified Discriminator Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ENTITY__SPECIFIED_DISCRIMINATOR_VALUE = JAVA_TYPE_MAPPING_FEATURE_COUNT + 8;
+
+ /**
+ * The feature id for the '<em><b>Discriminator Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ENTITY__DISCRIMINATOR_VALUE = JAVA_TYPE_MAPPING_FEATURE_COUNT + 9;
+
+ /**
+ * The feature id for the '<em><b>Discriminator Column</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ENTITY__DISCRIMINATOR_COLUMN = JAVA_TYPE_MAPPING_FEATURE_COUNT + 10;
+
+ /**
+ * The feature id for the '<em><b>Sequence Generator</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ENTITY__SEQUENCE_GENERATOR = JAVA_TYPE_MAPPING_FEATURE_COUNT + 11;
+
+ /**
+ * The feature id for the '<em><b>Table Generator</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ENTITY__TABLE_GENERATOR = JAVA_TYPE_MAPPING_FEATURE_COUNT + 12;
+
+ /**
+ * The feature id for the '<em><b>Attribute Overrides</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ENTITY__ATTRIBUTE_OVERRIDES = JAVA_TYPE_MAPPING_FEATURE_COUNT + 13;
+
+ /**
+ * The feature id for the '<em><b>Specified Attribute Overrides</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ENTITY__SPECIFIED_ATTRIBUTE_OVERRIDES = JAVA_TYPE_MAPPING_FEATURE_COUNT + 14;
+
+ /**
+ * The feature id for the '<em><b>Default Attribute Overrides</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ENTITY__DEFAULT_ATTRIBUTE_OVERRIDES = JAVA_TYPE_MAPPING_FEATURE_COUNT + 15;
+
+ /**
+ * The feature id for the '<em><b>Association Overrides</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ENTITY__ASSOCIATION_OVERRIDES = JAVA_TYPE_MAPPING_FEATURE_COUNT + 16;
+
+ /**
+ * The feature id for the '<em><b>Specified Association Overrides</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ENTITY__SPECIFIED_ASSOCIATION_OVERRIDES = JAVA_TYPE_MAPPING_FEATURE_COUNT + 17;
+
+ /**
+ * The feature id for the '<em><b>Default Association Overrides</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ENTITY__DEFAULT_ASSOCIATION_OVERRIDES = JAVA_TYPE_MAPPING_FEATURE_COUNT + 18;
+
+ /**
+ * The feature id for the '<em><b>Named Queries</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ENTITY__NAMED_QUERIES = JAVA_TYPE_MAPPING_FEATURE_COUNT + 19;
+
+ /**
+ * The feature id for the '<em><b>Named Native Queries</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ENTITY__NAMED_NATIVE_QUERIES = JAVA_TYPE_MAPPING_FEATURE_COUNT + 20;
+
+ /**
+ * The feature id for the '<em><b>Secondary Tables</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ENTITY__SECONDARY_TABLES = JAVA_TYPE_MAPPING_FEATURE_COUNT + 21;
+
+ /**
+ * The number of structural features of the '<em>Java Entity</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ENTITY_FEATURE_COUNT = JAVA_TYPE_MAPPING_FEATURE_COUNT + 22;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaMappedSuperclass <em>Java Mapped Superclass</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaMappedSuperclass
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaMappedSuperclass()
+ * @generated
+ */
+ public static final int JAVA_MAPPED_SUPERCLASS = 2;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_MAPPED_SUPERCLASS__NAME = JAVA_TYPE_MAPPING__NAME;
+
+ /**
+ * The feature id for the '<em><b>Table Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_MAPPED_SUPERCLASS__TABLE_NAME = JAVA_TYPE_MAPPING__TABLE_NAME;
+
+ /**
+ * The number of structural features of the '<em>Java Mapped Superclass</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_MAPPED_SUPERCLASS_FEATURE_COUNT = JAVA_TYPE_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbeddable <em>Java Embeddable</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbeddable
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaEmbeddable()
+ * @generated
+ */
+ public static final int JAVA_EMBEDDABLE = 3;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_EMBEDDABLE__NAME = JAVA_TYPE_MAPPING__NAME;
+
+ /**
+ * The feature id for the '<em><b>Table Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_EMBEDDABLE__TABLE_NAME = JAVA_TYPE_MAPPING__TABLE_NAME;
+
+ /**
+ * The number of structural features of the '<em>Java Embeddable</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_EMBEDDABLE_FEATURE_COUNT = JAVA_TYPE_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaNullTypeMapping <em>Java Null Type Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaNullTypeMapping
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaNullTypeMapping()
+ * @generated
+ */
+ public static final int JAVA_NULL_TYPE_MAPPING = 4;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_NULL_TYPE_MAPPING__NAME = JAVA_TYPE_MAPPING__NAME;
+
+ /**
+ * The feature id for the '<em><b>Table Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_NULL_TYPE_MAPPING__TABLE_NAME = JAVA_TYPE_MAPPING__TABLE_NAME;
+
+ /**
+ * The number of structural features of the '<em>Java Null Type Mapping</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_NULL_TYPE_MAPPING_FEATURE_COUNT = JAVA_TYPE_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaAttributeMapping <em>Java Attribute Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaAttributeMapping
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaAttributeMapping()
+ * @generated
+ */
+ public static final int JAVA_ATTRIBUTE_MAPPING = 5;
+
+ /**
+ * The number of structural features of the '<em>Java Attribute Mapping</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaNullAttributeMapping <em>Java Null Attribute Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaNullAttributeMapping
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaNullAttributeMapping()
+ * @generated
+ */
+ public static final int JAVA_NULL_ATTRIBUTE_MAPPING = 19;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaBasic <em>Java Basic</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaBasic
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaBasic()
+ * @generated
+ */
+ public static final int JAVA_BASIC = 6;
+
+ /**
+ * The feature id for the '<em><b>Fetch</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_BASIC__FETCH = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Optional</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_BASIC__OPTIONAL = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Column</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_BASIC__COLUMN = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Lob</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_BASIC__LOB = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Temporal</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_BASIC__TEMPORAL = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Enumerated</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_BASIC__ENUMERATED = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 5;
+
+ /**
+ * The number of structural features of the '<em>Java Basic</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_BASIC_FEATURE_COUNT = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 6;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaId <em>Java Id</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaId
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaId()
+ * @generated
+ */
+ public static final int JAVA_ID = 7;
+
+ /**
+ * The feature id for the '<em><b>Column</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ID__COLUMN = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Generated Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ID__GENERATED_VALUE = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Temporal</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ID__TEMPORAL = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Table Generator</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ID__TABLE_GENERATOR = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Sequence Generator</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ID__SEQUENCE_GENERATOR = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 4;
+
+ /**
+ * The number of structural features of the '<em>Java Id</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ID_FEATURE_COUNT = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 5;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaTransient <em>Java Transient</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaTransient
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaTransient()
+ * @generated
+ */
+ public static final int JAVA_TRANSIENT = 8;
+
+ /**
+ * The number of structural features of the '<em>Java Transient</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TRANSIENT_FEATURE_COUNT = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaVersion <em>Java Version</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaVersion
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaVersion()
+ * @generated
+ */
+ public static final int JAVA_VERSION = 9;
+
+ /**
+ * The feature id for the '<em><b>Column</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_VERSION__COLUMN = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Temporal</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_VERSION__TEMPORAL = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Java Version</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_VERSION_FEATURE_COUNT = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbeddedId <em>Java Embedded Id</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbeddedId
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaEmbeddedId()
+ * @generated
+ */
+ public static final int JAVA_EMBEDDED_ID = 10;
+
+ /**
+ * The number of structural features of the '<em>Java Embedded Id</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_EMBEDDED_ID_FEATURE_COUNT = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbedded <em>Java Embedded</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbedded
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaEmbedded()
+ * @generated
+ */
+ public static final int JAVA_EMBEDDED = 11;
+
+ /**
+ * The feature id for the '<em><b>Attribute Overrides</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_EMBEDDED__ATTRIBUTE_OVERRIDES = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Specified Attribute Overrides</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_EMBEDDED__SPECIFIED_ATTRIBUTE_OVERRIDES = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Default Attribute Overrides</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_EMBEDDED__DEFAULT_ATTRIBUTE_OVERRIDES = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Java Embedded</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_EMBEDDED_FEATURE_COUNT = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaRelationshipMapping <em>Java Relationship Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaRelationshipMapping
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaRelationshipMapping()
+ * @generated
+ */
+ public static final int JAVA_RELATIONSHIP_MAPPING = 12;
+
+ /**
+ * The feature id for the '<em><b>Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_RELATIONSHIP_MAPPING__TARGET_ENTITY = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Specified Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Default Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Resolved Target Entity</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>Java Relationship Mapping</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_RELATIONSHIP_MAPPING_FEATURE_COUNT = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 4;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaSingleRelationshipMapping <em>Java Single Relationship Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaSingleRelationshipMapping
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaSingleRelationshipMapping()
+ * @generated
+ */
+ public static final int JAVA_SINGLE_RELATIONSHIP_MAPPING = 13;
+
+ /**
+ * The feature id for the '<em><b>Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_SINGLE_RELATIONSHIP_MAPPING__TARGET_ENTITY = JAVA_RELATIONSHIP_MAPPING__TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Specified Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_SINGLE_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY = JAVA_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Default Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_SINGLE_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY = JAVA_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Resolved Target Entity</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_SINGLE_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY = JAVA_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Fetch</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_SINGLE_RELATIONSHIP_MAPPING__FETCH = JAVA_RELATIONSHIP_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_SINGLE_RELATIONSHIP_MAPPING__JOIN_COLUMNS = JAVA_RELATIONSHIP_MAPPING_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Specified Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_SINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS = JAVA_RELATIONSHIP_MAPPING_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Default Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_SINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS = JAVA_RELATIONSHIP_MAPPING_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>Java Single Relationship Mapping</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_SINGLE_RELATIONSHIP_MAPPING_FEATURE_COUNT = JAVA_RELATIONSHIP_MAPPING_FEATURE_COUNT + 4;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaManyToOne <em>Java Many To One</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaManyToOne
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaManyToOne()
+ * @generated
+ */
+ public static final int JAVA_MANY_TO_ONE = 14;
+
+ /**
+ * The feature id for the '<em><b>Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_MANY_TO_ONE__TARGET_ENTITY = JAVA_SINGLE_RELATIONSHIP_MAPPING__TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Specified Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_MANY_TO_ONE__SPECIFIED_TARGET_ENTITY = JAVA_SINGLE_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Default Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_MANY_TO_ONE__DEFAULT_TARGET_ENTITY = JAVA_SINGLE_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Resolved Target Entity</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_MANY_TO_ONE__RESOLVED_TARGET_ENTITY = JAVA_SINGLE_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Fetch</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_MANY_TO_ONE__FETCH = JAVA_SINGLE_RELATIONSHIP_MAPPING__FETCH;
+
+ /**
+ * The feature id for the '<em><b>Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_MANY_TO_ONE__JOIN_COLUMNS = JAVA_SINGLE_RELATIONSHIP_MAPPING__JOIN_COLUMNS;
+
+ /**
+ * The feature id for the '<em><b>Specified Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_MANY_TO_ONE__SPECIFIED_JOIN_COLUMNS = JAVA_SINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS;
+
+ /**
+ * The feature id for the '<em><b>Default Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_MANY_TO_ONE__DEFAULT_JOIN_COLUMNS = JAVA_SINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS;
+
+ /**
+ * The number of structural features of the '<em>Java Many To One</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_MANY_TO_ONE_FEATURE_COUNT = JAVA_SINGLE_RELATIONSHIP_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaOneToOne <em>Java One To One</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaOneToOne
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaOneToOne()
+ * @generated
+ */
+ public static final int JAVA_ONE_TO_ONE = 15;
+
+ /**
+ * The feature id for the '<em><b>Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ONE_TO_ONE__TARGET_ENTITY = JAVA_SINGLE_RELATIONSHIP_MAPPING__TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Specified Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ONE_TO_ONE__SPECIFIED_TARGET_ENTITY = JAVA_SINGLE_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Default Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ONE_TO_ONE__DEFAULT_TARGET_ENTITY = JAVA_SINGLE_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Resolved Target Entity</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ONE_TO_ONE__RESOLVED_TARGET_ENTITY = JAVA_SINGLE_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Fetch</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ONE_TO_ONE__FETCH = JAVA_SINGLE_RELATIONSHIP_MAPPING__FETCH;
+
+ /**
+ * The feature id for the '<em><b>Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ONE_TO_ONE__JOIN_COLUMNS = JAVA_SINGLE_RELATIONSHIP_MAPPING__JOIN_COLUMNS;
+
+ /**
+ * The feature id for the '<em><b>Specified Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ONE_TO_ONE__SPECIFIED_JOIN_COLUMNS = JAVA_SINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS;
+
+ /**
+ * The feature id for the '<em><b>Default Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ONE_TO_ONE__DEFAULT_JOIN_COLUMNS = JAVA_SINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS;
+
+ /**
+ * The feature id for the '<em><b>Mapped By</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ONE_TO_ONE__MAPPED_BY = JAVA_SINGLE_RELATIONSHIP_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Java One To One</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ONE_TO_ONE_FEATURE_COUNT = JAVA_SINGLE_RELATIONSHIP_MAPPING_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaMultiRelationshipMapping <em>Java Multi Relationship Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaMultiRelationshipMapping
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaMultiRelationshipMapping()
+ * @generated
+ */
+ public static final int JAVA_MULTI_RELATIONSHIP_MAPPING = 16;
+
+ /**
+ * The feature id for the '<em><b>Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_MULTI_RELATIONSHIP_MAPPING__TARGET_ENTITY = JAVA_RELATIONSHIP_MAPPING__TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Specified Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_MULTI_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY = JAVA_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Default Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_MULTI_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY = JAVA_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Resolved Target Entity</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_MULTI_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY = JAVA_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Mapped By</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_MULTI_RELATIONSHIP_MAPPING__MAPPED_BY = JAVA_RELATIONSHIP_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Fetch</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_MULTI_RELATIONSHIP_MAPPING__FETCH = JAVA_RELATIONSHIP_MAPPING_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Join Table</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_MULTI_RELATIONSHIP_MAPPING__JOIN_TABLE = JAVA_RELATIONSHIP_MAPPING_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Order By</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_MULTI_RELATIONSHIP_MAPPING__ORDER_BY = JAVA_RELATIONSHIP_MAPPING_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>Java Multi Relationship Mapping</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_MULTI_RELATIONSHIP_MAPPING_FEATURE_COUNT = JAVA_RELATIONSHIP_MAPPING_FEATURE_COUNT + 4;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaOneToMany <em>Java One To Many</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaOneToMany
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaOneToMany()
+ * @generated
+ */
+ public static final int JAVA_ONE_TO_MANY = 17;
+
+ /**
+ * The feature id for the '<em><b>Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ONE_TO_MANY__TARGET_ENTITY = JAVA_MULTI_RELATIONSHIP_MAPPING__TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Specified Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ONE_TO_MANY__SPECIFIED_TARGET_ENTITY = JAVA_MULTI_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Default Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ONE_TO_MANY__DEFAULT_TARGET_ENTITY = JAVA_MULTI_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Resolved Target Entity</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ONE_TO_MANY__RESOLVED_TARGET_ENTITY = JAVA_MULTI_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Mapped By</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ONE_TO_MANY__MAPPED_BY = JAVA_MULTI_RELATIONSHIP_MAPPING__MAPPED_BY;
+
+ /**
+ * The feature id for the '<em><b>Fetch</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ONE_TO_MANY__FETCH = JAVA_MULTI_RELATIONSHIP_MAPPING__FETCH;
+
+ /**
+ * The feature id for the '<em><b>Join Table</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ONE_TO_MANY__JOIN_TABLE = JAVA_MULTI_RELATIONSHIP_MAPPING__JOIN_TABLE;
+
+ /**
+ * The feature id for the '<em><b>Order By</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ONE_TO_MANY__ORDER_BY = JAVA_MULTI_RELATIONSHIP_MAPPING__ORDER_BY;
+
+ /**
+ * The number of structural features of the '<em>Java One To Many</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ONE_TO_MANY_FEATURE_COUNT = JAVA_MULTI_RELATIONSHIP_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaManyToMany <em>Java Many To Many</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaManyToMany
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaManyToMany()
+ * @generated
+ */
+ public static final int JAVA_MANY_TO_MANY = 18;
+
+ /**
+ * The feature id for the '<em><b>Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_MANY_TO_MANY__TARGET_ENTITY = JAVA_MULTI_RELATIONSHIP_MAPPING__TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Specified Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_MANY_TO_MANY__SPECIFIED_TARGET_ENTITY = JAVA_MULTI_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Default Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_MANY_TO_MANY__DEFAULT_TARGET_ENTITY = JAVA_MULTI_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Resolved Target Entity</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_MANY_TO_MANY__RESOLVED_TARGET_ENTITY = JAVA_MULTI_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Mapped By</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_MANY_TO_MANY__MAPPED_BY = JAVA_MULTI_RELATIONSHIP_MAPPING__MAPPED_BY;
+
+ /**
+ * The feature id for the '<em><b>Fetch</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_MANY_TO_MANY__FETCH = JAVA_MULTI_RELATIONSHIP_MAPPING__FETCH;
+
+ /**
+ * The feature id for the '<em><b>Join Table</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_MANY_TO_MANY__JOIN_TABLE = JAVA_MULTI_RELATIONSHIP_MAPPING__JOIN_TABLE;
+
+ /**
+ * The feature id for the '<em><b>Order By</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_MANY_TO_MANY__ORDER_BY = JAVA_MULTI_RELATIONSHIP_MAPPING__ORDER_BY;
+
+ /**
+ * The number of structural features of the '<em>Java Many To Many</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_MANY_TO_MANY_FEATURE_COUNT = JAVA_MULTI_RELATIONSHIP_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Java Null Attribute Mapping</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_NULL_ATTRIBUTE_MAPPING_FEATURE_COUNT = JAVA_ATTRIBUTE_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.AbstractJavaTable <em>Abstract Java Table</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.AbstractJavaTable
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getAbstractJavaTable()
+ * @generated
+ */
+ public static final int ABSTRACT_JAVA_TABLE = 20;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_JAVA_TABLE__NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_JAVA_TABLE__SPECIFIED_NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_JAVA_TABLE__DEFAULT_NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_JAVA_TABLE__CATALOG = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Specified Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_JAVA_TABLE__SPECIFIED_CATALOG = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Default Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_JAVA_TABLE__DEFAULT_CATALOG = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_JAVA_TABLE__SCHEMA = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 6;
+
+ /**
+ * The feature id for the '<em><b>Specified Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_JAVA_TABLE__SPECIFIED_SCHEMA = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 7;
+
+ /**
+ * The feature id for the '<em><b>Default Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_JAVA_TABLE__DEFAULT_SCHEMA = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 8;
+
+ /**
+ * The number of structural features of the '<em>Abstract Java Table</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_JAVA_TABLE_FEATURE_COUNT = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 9;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaTable <em>Java Table</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaTable
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaTable()
+ * @generated
+ */
+ public static final int JAVA_TABLE = 21;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE__NAME = ABSTRACT_JAVA_TABLE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE__SPECIFIED_NAME = ABSTRACT_JAVA_TABLE__SPECIFIED_NAME;
+
+ /**
+ * The feature id for the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE__DEFAULT_NAME = ABSTRACT_JAVA_TABLE__DEFAULT_NAME;
+
+ /**
+ * The feature id for the '<em><b>Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE__CATALOG = ABSTRACT_JAVA_TABLE__CATALOG;
+
+ /**
+ * The feature id for the '<em><b>Specified Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE__SPECIFIED_CATALOG = ABSTRACT_JAVA_TABLE__SPECIFIED_CATALOG;
+
+ /**
+ * The feature id for the '<em><b>Default Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE__DEFAULT_CATALOG = ABSTRACT_JAVA_TABLE__DEFAULT_CATALOG;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE__SCHEMA = ABSTRACT_JAVA_TABLE__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Specified Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE__SPECIFIED_SCHEMA = ABSTRACT_JAVA_TABLE__SPECIFIED_SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Default Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE__DEFAULT_SCHEMA = ABSTRACT_JAVA_TABLE__DEFAULT_SCHEMA;
+
+ /**
+ * The number of structural features of the '<em>Java Table</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE_FEATURE_COUNT = ABSTRACT_JAVA_TABLE_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaJoinTable <em>Java Join Table</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaJoinTable
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaJoinTable()
+ * @generated
+ */
+ public static final int JAVA_JOIN_TABLE = 23;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaColumn <em>Java Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaColumn
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaColumn()
+ * @generated
+ */
+ public static final int JAVA_COLUMN = 26;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaJoinColumn <em>Java Join Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaJoinColumn
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaJoinColumn()
+ * @generated
+ */
+ public static final int JAVA_JOIN_COLUMN = 27;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaAttributeOverride <em>Java Attribute Override</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaAttributeOverride
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaAttributeOverride()
+ * @generated
+ */
+ public static final int JAVA_ATTRIBUTE_OVERRIDE = 29;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaAssociationOverride <em>Java Association Override</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaAssociationOverride
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaAssociationOverride()
+ * @generated
+ */
+ public static final int JAVA_ASSOCIATION_OVERRIDE = 30;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaDiscriminatorColumn <em>Java Discriminator Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaDiscriminatorColumn
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaDiscriminatorColumn()
+ * @generated
+ */
+ public static final int JAVA_DISCRIMINATOR_COLUMN = 31;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaPrimaryKeyJoinColumn <em>Java Primary Key Join Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaPrimaryKeyJoinColumn
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaPrimaryKeyJoinColumn()
+ * @generated
+ */
+ public static final int JAVA_PRIMARY_KEY_JOIN_COLUMN = 32;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaGeneratedValue <em>Java Generated Value</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaGeneratedValue
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaGeneratedValue()
+ * @generated
+ */
+ public static final int JAVA_GENERATED_VALUE = 33;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaGenerator <em>Java Generator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaGenerator
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaGenerator()
+ * @generated
+ */
+ public static final int JAVA_GENERATOR = 34;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaTableGenerator <em>Java Table Generator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaTableGenerator
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaTableGenerator()
+ * @generated
+ */
+ public static final int JAVA_TABLE_GENERATOR = 35;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaSequenceGenerator <em>Java Sequence Generator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaSequenceGenerator
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaSequenceGenerator()
+ * @generated
+ */
+ public static final int JAVA_SEQUENCE_GENERATOR = 36;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaSecondaryTable <em>Java Secondary Table</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaSecondaryTable
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaSecondaryTable()
+ * @generated
+ */
+ public static final int JAVA_SECONDARY_TABLE = 22;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_SECONDARY_TABLE__NAME = ABSTRACT_JAVA_TABLE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_SECONDARY_TABLE__SPECIFIED_NAME = ABSTRACT_JAVA_TABLE__SPECIFIED_NAME;
+
+ /**
+ * The feature id for the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_SECONDARY_TABLE__DEFAULT_NAME = ABSTRACT_JAVA_TABLE__DEFAULT_NAME;
+
+ /**
+ * The feature id for the '<em><b>Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_SECONDARY_TABLE__CATALOG = ABSTRACT_JAVA_TABLE__CATALOG;
+
+ /**
+ * The feature id for the '<em><b>Specified Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_SECONDARY_TABLE__SPECIFIED_CATALOG = ABSTRACT_JAVA_TABLE__SPECIFIED_CATALOG;
+
+ /**
+ * The feature id for the '<em><b>Default Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_SECONDARY_TABLE__DEFAULT_CATALOG = ABSTRACT_JAVA_TABLE__DEFAULT_CATALOG;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_SECONDARY_TABLE__SCHEMA = ABSTRACT_JAVA_TABLE__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Specified Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_SECONDARY_TABLE__SPECIFIED_SCHEMA = ABSTRACT_JAVA_TABLE__SPECIFIED_SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Default Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_SECONDARY_TABLE__DEFAULT_SCHEMA = ABSTRACT_JAVA_TABLE__DEFAULT_SCHEMA;
+
+ /**
+ * The number of structural features of the '<em>Java Secondary Table</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_SECONDARY_TABLE_FEATURE_COUNT = ABSTRACT_JAVA_TABLE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_JOIN_TABLE__NAME = ABSTRACT_JAVA_TABLE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_JOIN_TABLE__SPECIFIED_NAME = ABSTRACT_JAVA_TABLE__SPECIFIED_NAME;
+
+ /**
+ * The feature id for the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_JOIN_TABLE__DEFAULT_NAME = ABSTRACT_JAVA_TABLE__DEFAULT_NAME;
+
+ /**
+ * The feature id for the '<em><b>Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_JOIN_TABLE__CATALOG = ABSTRACT_JAVA_TABLE__CATALOG;
+
+ /**
+ * The feature id for the '<em><b>Specified Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_JOIN_TABLE__SPECIFIED_CATALOG = ABSTRACT_JAVA_TABLE__SPECIFIED_CATALOG;
+
+ /**
+ * The feature id for the '<em><b>Default Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_JOIN_TABLE__DEFAULT_CATALOG = ABSTRACT_JAVA_TABLE__DEFAULT_CATALOG;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_JOIN_TABLE__SCHEMA = ABSTRACT_JAVA_TABLE__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Specified Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_JOIN_TABLE__SPECIFIED_SCHEMA = ABSTRACT_JAVA_TABLE__SPECIFIED_SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Default Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_JOIN_TABLE__DEFAULT_SCHEMA = ABSTRACT_JAVA_TABLE__DEFAULT_SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_JOIN_TABLE__JOIN_COLUMNS = ABSTRACT_JAVA_TABLE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Specified Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_JOIN_TABLE__SPECIFIED_JOIN_COLUMNS = ABSTRACT_JAVA_TABLE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Default Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_JOIN_TABLE__DEFAULT_JOIN_COLUMNS = ABSTRACT_JAVA_TABLE_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Inverse Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_JOIN_TABLE__INVERSE_JOIN_COLUMNS = ABSTRACT_JAVA_TABLE_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Specified Inverse Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_JOIN_TABLE__SPECIFIED_INVERSE_JOIN_COLUMNS = ABSTRACT_JAVA_TABLE_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Default Inverse Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_JOIN_TABLE__DEFAULT_INVERSE_JOIN_COLUMNS = ABSTRACT_JAVA_TABLE_FEATURE_COUNT + 5;
+
+ /**
+ * The number of structural features of the '<em>Java Join Table</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_JOIN_TABLE_FEATURE_COUNT = ABSTRACT_JAVA_TABLE_FEATURE_COUNT + 6;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaNamedColumn <em>Java Named Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaNamedColumn
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaNamedColumn()
+ * @generated
+ */
+ public static final int JAVA_NAMED_COLUMN = 24;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_NAMED_COLUMN__NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_NAMED_COLUMN__SPECIFIED_NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_NAMED_COLUMN__DEFAULT_NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Column Definition</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_NAMED_COLUMN__COLUMN_DEFINITION = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>Java Named Column</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_NAMED_COLUMN_FEATURE_COUNT = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 4;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.AbstractJavaColumn <em>Abstract Java Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.AbstractJavaColumn
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getAbstractJavaColumn()
+ * @generated
+ */
+ public static final int ABSTRACT_JAVA_COLUMN = 25;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_JAVA_COLUMN__NAME = JAVA_NAMED_COLUMN__NAME;
+
+ /**
+ * The feature id for the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_JAVA_COLUMN__SPECIFIED_NAME = JAVA_NAMED_COLUMN__SPECIFIED_NAME;
+
+ /**
+ * The feature id for the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_JAVA_COLUMN__DEFAULT_NAME = JAVA_NAMED_COLUMN__DEFAULT_NAME;
+
+ /**
+ * The feature id for the '<em><b>Column Definition</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_JAVA_COLUMN__COLUMN_DEFINITION = JAVA_NAMED_COLUMN__COLUMN_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Unique</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_JAVA_COLUMN__UNIQUE = JAVA_NAMED_COLUMN_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Nullable</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_JAVA_COLUMN__NULLABLE = JAVA_NAMED_COLUMN_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Insertable</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_JAVA_COLUMN__INSERTABLE = JAVA_NAMED_COLUMN_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Updatable</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_JAVA_COLUMN__UPDATABLE = JAVA_NAMED_COLUMN_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_JAVA_COLUMN__TABLE = JAVA_NAMED_COLUMN_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Specified Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_JAVA_COLUMN__SPECIFIED_TABLE = JAVA_NAMED_COLUMN_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Default Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_JAVA_COLUMN__DEFAULT_TABLE = JAVA_NAMED_COLUMN_FEATURE_COUNT + 6;
+
+ /**
+ * The number of structural features of the '<em>Abstract Java Column</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_JAVA_COLUMN_FEATURE_COUNT = JAVA_NAMED_COLUMN_FEATURE_COUNT + 7;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_COLUMN__NAME = ABSTRACT_JAVA_COLUMN__NAME;
+
+ /**
+ * The feature id for the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_COLUMN__SPECIFIED_NAME = ABSTRACT_JAVA_COLUMN__SPECIFIED_NAME;
+
+ /**
+ * The feature id for the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_COLUMN__DEFAULT_NAME = ABSTRACT_JAVA_COLUMN__DEFAULT_NAME;
+
+ /**
+ * The feature id for the '<em><b>Column Definition</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_COLUMN__COLUMN_DEFINITION = ABSTRACT_JAVA_COLUMN__COLUMN_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Unique</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_COLUMN__UNIQUE = ABSTRACT_JAVA_COLUMN__UNIQUE;
+
+ /**
+ * The feature id for the '<em><b>Nullable</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_COLUMN__NULLABLE = ABSTRACT_JAVA_COLUMN__NULLABLE;
+
+ /**
+ * The feature id for the '<em><b>Insertable</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_COLUMN__INSERTABLE = ABSTRACT_JAVA_COLUMN__INSERTABLE;
+
+ /**
+ * The feature id for the '<em><b>Updatable</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_COLUMN__UPDATABLE = ABSTRACT_JAVA_COLUMN__UPDATABLE;
+
+ /**
+ * The feature id for the '<em><b>Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_COLUMN__TABLE = ABSTRACT_JAVA_COLUMN__TABLE;
+
+ /**
+ * The feature id for the '<em><b>Specified Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_COLUMN__SPECIFIED_TABLE = ABSTRACT_JAVA_COLUMN__SPECIFIED_TABLE;
+
+ /**
+ * The feature id for the '<em><b>Default Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_COLUMN__DEFAULT_TABLE = ABSTRACT_JAVA_COLUMN__DEFAULT_TABLE;
+
+ /**
+ * The feature id for the '<em><b>Length</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_COLUMN__LENGTH = ABSTRACT_JAVA_COLUMN_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Precision</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_COLUMN__PRECISION = ABSTRACT_JAVA_COLUMN_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Scale</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_COLUMN__SCALE = ABSTRACT_JAVA_COLUMN_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Java Column</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_COLUMN_FEATURE_COUNT = ABSTRACT_JAVA_COLUMN_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_JOIN_COLUMN__NAME = ABSTRACT_JAVA_COLUMN__NAME;
+
+ /**
+ * The feature id for the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_JOIN_COLUMN__SPECIFIED_NAME = ABSTRACT_JAVA_COLUMN__SPECIFIED_NAME;
+
+ /**
+ * The feature id for the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_JOIN_COLUMN__DEFAULT_NAME = ABSTRACT_JAVA_COLUMN__DEFAULT_NAME;
+
+ /**
+ * The feature id for the '<em><b>Column Definition</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_JOIN_COLUMN__COLUMN_DEFINITION = ABSTRACT_JAVA_COLUMN__COLUMN_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Unique</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_JOIN_COLUMN__UNIQUE = ABSTRACT_JAVA_COLUMN__UNIQUE;
+
+ /**
+ * The feature id for the '<em><b>Nullable</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_JOIN_COLUMN__NULLABLE = ABSTRACT_JAVA_COLUMN__NULLABLE;
+
+ /**
+ * The feature id for the '<em><b>Insertable</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_JOIN_COLUMN__INSERTABLE = ABSTRACT_JAVA_COLUMN__INSERTABLE;
+
+ /**
+ * The feature id for the '<em><b>Updatable</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_JOIN_COLUMN__UPDATABLE = ABSTRACT_JAVA_COLUMN__UPDATABLE;
+
+ /**
+ * The feature id for the '<em><b>Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_JOIN_COLUMN__TABLE = ABSTRACT_JAVA_COLUMN__TABLE;
+
+ /**
+ * The feature id for the '<em><b>Specified Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_JOIN_COLUMN__SPECIFIED_TABLE = ABSTRACT_JAVA_COLUMN__SPECIFIED_TABLE;
+
+ /**
+ * The feature id for the '<em><b>Default Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_JOIN_COLUMN__DEFAULT_TABLE = ABSTRACT_JAVA_COLUMN__DEFAULT_TABLE;
+
+ /**
+ * The feature id for the '<em><b>Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_JOIN_COLUMN__REFERENCED_COLUMN_NAME = ABSTRACT_JAVA_COLUMN_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Specified Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME = ABSTRACT_JAVA_COLUMN_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Default Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME = ABSTRACT_JAVA_COLUMN_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Java Join Column</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_JOIN_COLUMN_FEATURE_COUNT = ABSTRACT_JAVA_COLUMN_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaOverride <em>Java Override</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaOverride
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaOverride()
+ * @generated
+ */
+ public static final int JAVA_OVERRIDE = 28;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_OVERRIDE__NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Java Override</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_OVERRIDE_FEATURE_COUNT = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ATTRIBUTE_OVERRIDE__NAME = JAVA_OVERRIDE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Column</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ATTRIBUTE_OVERRIDE__COLUMN = JAVA_OVERRIDE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Java Attribute Override</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ATTRIBUTE_OVERRIDE_FEATURE_COUNT = JAVA_OVERRIDE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ASSOCIATION_OVERRIDE__NAME = JAVA_OVERRIDE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ASSOCIATION_OVERRIDE__JOIN_COLUMNS = JAVA_OVERRIDE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Specified Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ASSOCIATION_OVERRIDE__SPECIFIED_JOIN_COLUMNS = JAVA_OVERRIDE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Default Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ASSOCIATION_OVERRIDE__DEFAULT_JOIN_COLUMNS = JAVA_OVERRIDE_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Java Association Override</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ASSOCIATION_OVERRIDE_FEATURE_COUNT = JAVA_OVERRIDE_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_DISCRIMINATOR_COLUMN__DEFAULT_NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_DISCRIMINATOR_COLUMN__SPECIFIED_NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_DISCRIMINATOR_COLUMN__NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Discriminator Type</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Column Definition</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_DISCRIMINATOR_COLUMN__COLUMN_DEFINITION = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Default Length</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_DISCRIMINATOR_COLUMN__DEFAULT_LENGTH = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Specified Length</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_DISCRIMINATOR_COLUMN__SPECIFIED_LENGTH = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 6;
+
+ /**
+ * The feature id for the '<em><b>Length</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_DISCRIMINATOR_COLUMN__LENGTH = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 7;
+
+ /**
+ * The number of structural features of the '<em>Java Discriminator Column</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_DISCRIMINATOR_COLUMN_FEATURE_COUNT = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 8;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_PRIMARY_KEY_JOIN_COLUMN__NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_PRIMARY_KEY_JOIN_COLUMN__DEFAULT_NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Column Definition</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_PRIMARY_KEY_JOIN_COLUMN__COLUMN_DEFINITION = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_PRIMARY_KEY_JOIN_COLUMN__REFERENCED_COLUMN_NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Specified Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Default Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_PRIMARY_KEY_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 6;
+
+ /**
+ * The number of structural features of the '<em>Java Primary Key Join Column</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_PRIMARY_KEY_JOIN_COLUMN_FEATURE_COUNT = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 7;
+
+ /**
+ * The feature id for the '<em><b>Strategy</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_GENERATED_VALUE__STRATEGY = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Generator</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_GENERATED_VALUE__GENERATOR = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Java Generated Value</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_GENERATED_VALUE_FEATURE_COUNT = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_GENERATOR__NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Initial Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_GENERATOR__INITIAL_VALUE = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Specified Initial Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_GENERATOR__SPECIFIED_INITIAL_VALUE = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Default Initial Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_GENERATOR__DEFAULT_INITIAL_VALUE = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Allocation Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_GENERATOR__ALLOCATION_SIZE = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Specified Allocation Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_GENERATOR__SPECIFIED_ALLOCATION_SIZE = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Default Allocation Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_GENERATOR__DEFAULT_ALLOCATION_SIZE = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 6;
+
+ /**
+ * The number of structural features of the '<em>Java Generator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_GENERATOR_FEATURE_COUNT = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 7;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE_GENERATOR__NAME = JAVA_GENERATOR__NAME;
+
+ /**
+ * The feature id for the '<em><b>Initial Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE_GENERATOR__INITIAL_VALUE = JAVA_GENERATOR__INITIAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Specified Initial Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE_GENERATOR__SPECIFIED_INITIAL_VALUE = JAVA_GENERATOR__SPECIFIED_INITIAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Default Initial Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE_GENERATOR__DEFAULT_INITIAL_VALUE = JAVA_GENERATOR__DEFAULT_INITIAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Allocation Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE_GENERATOR__ALLOCATION_SIZE = JAVA_GENERATOR__ALLOCATION_SIZE;
+
+ /**
+ * The feature id for the '<em><b>Specified Allocation Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE_GENERATOR__SPECIFIED_ALLOCATION_SIZE = JAVA_GENERATOR__SPECIFIED_ALLOCATION_SIZE;
+
+ /**
+ * The feature id for the '<em><b>Default Allocation Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE_GENERATOR__DEFAULT_ALLOCATION_SIZE = JAVA_GENERATOR__DEFAULT_ALLOCATION_SIZE;
+
+ /**
+ * The feature id for the '<em><b>Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE_GENERATOR__TABLE = JAVA_GENERATOR_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Specified Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE_GENERATOR__SPECIFIED_TABLE = JAVA_GENERATOR_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Default Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE_GENERATOR__DEFAULT_TABLE = JAVA_GENERATOR_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE_GENERATOR__CATALOG = JAVA_GENERATOR_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Specified Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE_GENERATOR__SPECIFIED_CATALOG = JAVA_GENERATOR_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Default Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE_GENERATOR__DEFAULT_CATALOG = JAVA_GENERATOR_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE_GENERATOR__SCHEMA = JAVA_GENERATOR_FEATURE_COUNT + 6;
+
+ /**
+ * The feature id for the '<em><b>Specified Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE_GENERATOR__SPECIFIED_SCHEMA = JAVA_GENERATOR_FEATURE_COUNT + 7;
+
+ /**
+ * The feature id for the '<em><b>Default Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE_GENERATOR__DEFAULT_SCHEMA = JAVA_GENERATOR_FEATURE_COUNT + 8;
+
+ /**
+ * The feature id for the '<em><b>Pk Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE_GENERATOR__PK_COLUMN_NAME = JAVA_GENERATOR_FEATURE_COUNT + 9;
+
+ /**
+ * The feature id for the '<em><b>Specified Pk Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_NAME = JAVA_GENERATOR_FEATURE_COUNT + 10;
+
+ /**
+ * The feature id for the '<em><b>Default Pk Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE_GENERATOR__DEFAULT_PK_COLUMN_NAME = JAVA_GENERATOR_FEATURE_COUNT + 11;
+
+ /**
+ * The feature id for the '<em><b>Value Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE_GENERATOR__VALUE_COLUMN_NAME = JAVA_GENERATOR_FEATURE_COUNT + 12;
+
+ /**
+ * The feature id for the '<em><b>Specified Value Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE_GENERATOR__SPECIFIED_VALUE_COLUMN_NAME = JAVA_GENERATOR_FEATURE_COUNT + 13;
+
+ /**
+ * The feature id for the '<em><b>Default Value Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE_GENERATOR__DEFAULT_VALUE_COLUMN_NAME = JAVA_GENERATOR_FEATURE_COUNT + 14;
+
+ /**
+ * The feature id for the '<em><b>Pk Column Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE_GENERATOR__PK_COLUMN_VALUE = JAVA_GENERATOR_FEATURE_COUNT + 15;
+
+ /**
+ * The feature id for the '<em><b>Specified Pk Column Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_VALUE = JAVA_GENERATOR_FEATURE_COUNT + 16;
+
+ /**
+ * The feature id for the '<em><b>Default Pk Column Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE_GENERATOR__DEFAULT_PK_COLUMN_VALUE = JAVA_GENERATOR_FEATURE_COUNT + 17;
+
+ /**
+ * The number of structural features of the '<em>Java Table Generator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_TABLE_GENERATOR_FEATURE_COUNT = JAVA_GENERATOR_FEATURE_COUNT + 18;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_SEQUENCE_GENERATOR__NAME = JAVA_GENERATOR__NAME;
+
+ /**
+ * The feature id for the '<em><b>Initial Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_SEQUENCE_GENERATOR__INITIAL_VALUE = JAVA_GENERATOR__INITIAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Specified Initial Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_SEQUENCE_GENERATOR__SPECIFIED_INITIAL_VALUE = JAVA_GENERATOR__SPECIFIED_INITIAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Default Initial Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_SEQUENCE_GENERATOR__DEFAULT_INITIAL_VALUE = JAVA_GENERATOR__DEFAULT_INITIAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Allocation Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_SEQUENCE_GENERATOR__ALLOCATION_SIZE = JAVA_GENERATOR__ALLOCATION_SIZE;
+
+ /**
+ * The feature id for the '<em><b>Specified Allocation Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_SEQUENCE_GENERATOR__SPECIFIED_ALLOCATION_SIZE = JAVA_GENERATOR__SPECIFIED_ALLOCATION_SIZE;
+
+ /**
+ * The feature id for the '<em><b>Default Allocation Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_SEQUENCE_GENERATOR__DEFAULT_ALLOCATION_SIZE = JAVA_GENERATOR__DEFAULT_ALLOCATION_SIZE;
+
+ /**
+ * The feature id for the '<em><b>Sequence Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_SEQUENCE_GENERATOR__SEQUENCE_NAME = JAVA_GENERATOR_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Specified Sequence Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_SEQUENCE_GENERATOR__SPECIFIED_SEQUENCE_NAME = JAVA_GENERATOR_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Default Sequence Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_SEQUENCE_GENERATOR__DEFAULT_SEQUENCE_NAME = JAVA_GENERATOR_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Java Sequence Generator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_SEQUENCE_GENERATOR_FEATURE_COUNT = JAVA_GENERATOR_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaOrderBy <em>Java Order By</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaOrderBy
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaOrderBy()
+ * @generated
+ */
+ public static final int JAVA_ORDER_BY = 37;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ORDER_BY__VALUE = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ORDER_BY__TYPE = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Java Order By</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ORDER_BY_FEATURE_COUNT = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaAbstractQuery <em>Java Abstract Query</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaAbstractQuery
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaAbstractQuery()
+ * @generated
+ */
+ public static final int JAVA_ABSTRACT_QUERY = 38;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ABSTRACT_QUERY__NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Query</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ABSTRACT_QUERY__QUERY = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Hints</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ABSTRACT_QUERY__HINTS = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Java Abstract Query</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_ABSTRACT_QUERY_FEATURE_COUNT = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaNamedQuery <em>Java Named Query</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaNamedQuery
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaNamedQuery()
+ * @generated
+ */
+ public static final int JAVA_NAMED_QUERY = 39;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_NAMED_QUERY__NAME = JAVA_ABSTRACT_QUERY__NAME;
+
+ /**
+ * The feature id for the '<em><b>Query</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_NAMED_QUERY__QUERY = JAVA_ABSTRACT_QUERY__QUERY;
+
+ /**
+ * The feature id for the '<em><b>Hints</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_NAMED_QUERY__HINTS = JAVA_ABSTRACT_QUERY__HINTS;
+
+ /**
+ * The number of structural features of the '<em>Java Named Query</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_NAMED_QUERY_FEATURE_COUNT = JAVA_ABSTRACT_QUERY_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaNamedNativeQuery <em>Java Named Native Query</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaNamedNativeQuery
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaNamedNativeQuery()
+ * @generated
+ */
+ public static final int JAVA_NAMED_NATIVE_QUERY = 40;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_NAMED_NATIVE_QUERY__NAME = JAVA_ABSTRACT_QUERY__NAME;
+
+ /**
+ * The feature id for the '<em><b>Query</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_NAMED_NATIVE_QUERY__QUERY = JAVA_ABSTRACT_QUERY__QUERY;
+
+ /**
+ * The feature id for the '<em><b>Hints</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_NAMED_NATIVE_QUERY__HINTS = JAVA_ABSTRACT_QUERY__HINTS;
+
+ /**
+ * The feature id for the '<em><b>Result Class</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_NAMED_NATIVE_QUERY__RESULT_CLASS = JAVA_ABSTRACT_QUERY_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Result Set Mapping</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_NAMED_NATIVE_QUERY__RESULT_SET_MAPPING = JAVA_ABSTRACT_QUERY_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Java Named Native Query</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_NAMED_NATIVE_QUERY_FEATURE_COUNT = JAVA_ABSTRACT_QUERY_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaQueryHint <em>Java Query Hint</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaQueryHint
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaQueryHint()
+ * @generated
+ */
+ public static final int JAVA_QUERY_HINT = 41;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_QUERY_HINT__NAME = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_QUERY_HINT__VALUE = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Java Query Hint</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_QUERY_HINT_FEATURE_COUNT = JpaJavaPackage.JAVA_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaEntityEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaMappedSuperclassEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaEmbeddableEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaNullTypeMappingEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaNullAttributeMappingEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaBasicEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaIdEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaTransientEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaVersionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaEmbeddedIdEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaEmbeddedEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaAttributeMappingEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaTypeMappingEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass abstractJavaTableEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaTableEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaColumnEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaRelationshipMappingEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaSingleRelationshipMappingEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaManyToOneEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaOneToOneEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaMultiRelationshipMappingEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaOneToManyEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaManyToManyEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaJoinTableEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaNamedColumnEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass abstractJavaColumnEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaJoinColumnEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaOverrideEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaAttributeOverrideEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaAssociationOverrideEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaDiscriminatorColumnEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaPrimaryKeyJoinColumnEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaGeneratedValueEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaGeneratorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaTableGeneratorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaSequenceGeneratorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaOrderByEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaAbstractQueryEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaNamedQueryEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaNamedNativeQueryEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaQueryHintEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaSecondaryTableEClass = 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.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private JpaJavaMappingsPackage() {
+ super(eNS_URI, JpaJavaMappingsFactory.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. Simple
+ * dependencies are satisfied by calling this method on all
+ * dependent packages before doing anything else. This method drives
+ * initialization for interdependent packages directly, in parallel
+ * with this package, itself.
+ * <p>Of this package and its interdependencies, all packages which
+ * have not yet been registered by their URI values are first created
+ * and registered. The packages are then initialized in two steps:
+ * meta-model objects for all of the packages are created before any
+ * are initialized, since one package's meta-model objects may refer to
+ * those of another.
+ * <p>Invocation of this method will not affect any packages that have
+ * already been initialized.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static JpaJavaMappingsPackage init() {
+ if (isInited)
+ return (JpaJavaMappingsPackage) EPackage.Registry.INSTANCE.getEPackage(JpaJavaMappingsPackage.eNS_URI);
+ // Obtain or create and register package
+ JpaJavaMappingsPackage theJpaJavaMappingsPackage = (JpaJavaMappingsPackage) (EPackage.Registry.INSTANCE.getEPackage(eNS_URI) instanceof JpaJavaMappingsPackage ? EPackage.Registry.INSTANCE.getEPackage(eNS_URI) : new JpaJavaMappingsPackage());
+ isInited = true;
+ // Initialize simple dependencies
+ EcorePackage.eINSTANCE.eClass();
+ JavaRefPackage.eINSTANCE.eClass();
+ // Obtain or create and register interdependencies
+ JpaCorePackage theJpaCorePackage = (JpaCorePackage) (EPackage.Registry.INSTANCE.getEPackage(JpaCorePackage.eNS_URI) instanceof JpaCorePackage ? EPackage.Registry.INSTANCE.getEPackage(JpaCorePackage.eNS_URI) : JpaCorePackage.eINSTANCE);
+ JpaCoreMappingsPackage theJpaCoreMappingsPackage = (JpaCoreMappingsPackage) (EPackage.Registry.INSTANCE.getEPackage(JpaCoreMappingsPackage.eNS_URI) instanceof JpaCoreMappingsPackage ? EPackage.Registry.INSTANCE.getEPackage(JpaCoreMappingsPackage.eNS_URI) : JpaCoreMappingsPackage.eINSTANCE);
+ JpaJavaPackage theJpaJavaPackage = (JpaJavaPackage) (EPackage.Registry.INSTANCE.getEPackage(JpaJavaPackage.eNS_URI) instanceof JpaJavaPackage ? EPackage.Registry.INSTANCE.getEPackage(JpaJavaPackage.eNS_URI) : JpaJavaPackage.eINSTANCE);
+ OrmPackage theOrmPackage = (OrmPackage) (EPackage.Registry.INSTANCE.getEPackage(OrmPackage.eNS_URI) instanceof OrmPackage ? EPackage.Registry.INSTANCE.getEPackage(OrmPackage.eNS_URI) : OrmPackage.eINSTANCE);
+ PersistencePackage thePersistencePackage = (PersistencePackage) (EPackage.Registry.INSTANCE.getEPackage(PersistencePackage.eNS_URI) instanceof PersistencePackage ? EPackage.Registry.INSTANCE.getEPackage(PersistencePackage.eNS_URI) : PersistencePackage.eINSTANCE);
+ // Create package meta-data objects
+ theJpaJavaMappingsPackage.createPackageContents();
+ theJpaCorePackage.createPackageContents();
+ theJpaCoreMappingsPackage.createPackageContents();
+ theJpaJavaPackage.createPackageContents();
+ theOrmPackage.createPackageContents();
+ thePersistencePackage.createPackageContents();
+ // Initialize created meta-data
+ theJpaJavaMappingsPackage.initializePackageContents();
+ theJpaCorePackage.initializePackageContents();
+ theJpaCoreMappingsPackage.initializePackageContents();
+ theJpaJavaPackage.initializePackageContents();
+ theOrmPackage.initializePackageContents();
+ thePersistencePackage.initializePackageContents();
+ // Mark meta-data to indicate it can't be changed
+ theJpaJavaMappingsPackage.freeze();
+ return theJpaJavaMappingsPackage;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaEntity <em>Java Entity</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Entity</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaEntity
+ * @generated
+ */
+ public EClass getJavaEntity() {
+ return javaEntityEClass;
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaEntity#getSecondaryTables <em>Secondary Tables</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Secondary Tables</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaEntity#getSecondaryTables()
+ * @see #getJavaEntity()
+ * @generated
+ */
+ public EReference getJavaEntity_SecondaryTables() {
+ return (EReference) javaEntityEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaMappedSuperclass <em>Java Mapped Superclass</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Mapped Superclass</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaMappedSuperclass
+ * @generated
+ */
+ public EClass getJavaMappedSuperclass() {
+ return javaMappedSuperclassEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbeddable <em>Java Embeddable</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Embeddable</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbeddable
+ * @generated
+ */
+ public EClass getJavaEmbeddable() {
+ return javaEmbeddableEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaNullTypeMapping <em>Java Null Type Mapping</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Null Type Mapping</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaNullTypeMapping
+ * @generated
+ */
+ public EClass getJavaNullTypeMapping() {
+ return javaNullTypeMappingEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaNullAttributeMapping <em>Java Null Attribute Mapping</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Null Attribute Mapping</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaNullAttributeMapping
+ * @generated
+ */
+ public EClass getJavaNullAttributeMapping() {
+ return javaNullAttributeMappingEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaBasic <em>Java Basic</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Basic</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaBasic
+ * @generated
+ */
+ public EClass getJavaBasic() {
+ return javaBasicEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaId <em>Java Id</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Id</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaId
+ * @generated
+ */
+ public EClass getJavaId() {
+ return javaIdEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaTransient <em>Java Transient</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Transient</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaTransient
+ * @generated
+ */
+ public EClass getJavaTransient() {
+ return javaTransientEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaVersion <em>Java Version</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Version</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaVersion
+ * @generated
+ */
+ public EClass getJavaVersion() {
+ return javaVersionEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbeddedId <em>Java Embedded Id</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Embedded Id</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbeddedId
+ * @generated
+ */
+ public EClass getJavaEmbeddedId() {
+ return javaEmbeddedIdEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbedded <em>Java Embedded</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Embedded</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbedded
+ * @generated
+ */
+ public EClass getJavaEmbedded() {
+ return javaEmbeddedEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaAttributeMapping <em>Java Attribute Mapping</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Attribute Mapping</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaAttributeMapping
+ * @generated
+ */
+ public EClass getJavaAttributeMapping() {
+ return javaAttributeMappingEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaTypeMapping <em>Java Type Mapping</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Type Mapping</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaTypeMapping
+ * @generated
+ */
+ public EClass getJavaTypeMapping() {
+ return javaTypeMappingEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.AbstractJavaTable <em>Abstract Java Table</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Abstract Java Table</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.AbstractJavaTable
+ * @generated
+ */
+ public EClass getAbstractJavaTable() {
+ return abstractJavaTableEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaTable <em>Java Table</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Table</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaTable
+ * @generated
+ */
+ public EClass getJavaTable() {
+ return javaTableEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaColumn <em>Java Column</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Column</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaColumn
+ * @generated
+ */
+ public EClass getJavaColumn() {
+ return javaColumnEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaRelationshipMapping <em>Java Relationship Mapping</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Relationship Mapping</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaRelationshipMapping
+ * @generated
+ */
+ public EClass getJavaRelationshipMapping() {
+ return javaRelationshipMappingEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaSingleRelationshipMapping <em>Java Single Relationship Mapping</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Single Relationship Mapping</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaSingleRelationshipMapping
+ * @generated
+ */
+ public EClass getJavaSingleRelationshipMapping() {
+ return javaSingleRelationshipMappingEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaManyToOne <em>Java Many To One</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Many To One</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaManyToOne
+ * @generated
+ */
+ public EClass getJavaManyToOne() {
+ return javaManyToOneEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaOneToOne <em>Java One To One</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java One To One</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaOneToOne
+ * @generated
+ */
+ public EClass getJavaOneToOne() {
+ return javaOneToOneEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaMultiRelationshipMapping <em>Java Multi Relationship Mapping</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Multi Relationship Mapping</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaMultiRelationshipMapping
+ * @generated
+ */
+ public EClass getJavaMultiRelationshipMapping() {
+ return javaMultiRelationshipMappingEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaOneToMany <em>Java One To Many</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java One To Many</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaOneToMany
+ * @generated
+ */
+ public EClass getJavaOneToMany() {
+ return javaOneToManyEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaManyToMany <em>Java Many To Many</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Many To Many</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaManyToMany
+ * @generated
+ */
+ public EClass getJavaManyToMany() {
+ return javaManyToManyEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaJoinTable <em>Java Join Table</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Join Table</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaJoinTable
+ * @generated
+ */
+ public EClass getJavaJoinTable() {
+ return javaJoinTableEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaNamedColumn <em>Java Named Column</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Named Column</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaNamedColumn
+ * @generated
+ */
+ public EClass getJavaNamedColumn() {
+ return javaNamedColumnEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.AbstractJavaColumn <em>Abstract Java Column</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Abstract Java Column</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.AbstractJavaColumn
+ * @generated
+ */
+ public EClass getAbstractJavaColumn() {
+ return abstractJavaColumnEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaJoinColumn <em>Java Join Column</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Join Column</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaJoinColumn
+ * @generated
+ */
+ public EClass getJavaJoinColumn() {
+ return javaJoinColumnEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaOverride <em>Java Override</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Override</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaOverride
+ * @generated
+ */
+ public EClass getJavaOverride() {
+ return javaOverrideEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaAttributeOverride <em>Java Attribute Override</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Attribute Override</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaAttributeOverride
+ * @generated
+ */
+ public EClass getJavaAttributeOverride() {
+ return javaAttributeOverrideEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaAssociationOverride <em>Java Association Override</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Association Override</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaAssociationOverride
+ * @generated
+ */
+ public EClass getJavaAssociationOverride() {
+ return javaAssociationOverrideEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaDiscriminatorColumn <em>Java Discriminator Column</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Discriminator Column</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaDiscriminatorColumn
+ * @generated
+ */
+ public EClass getJavaDiscriminatorColumn() {
+ return javaDiscriminatorColumnEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaPrimaryKeyJoinColumn <em>Java Primary Key Join Column</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Primary Key Join Column</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaPrimaryKeyJoinColumn
+ * @generated
+ */
+ public EClass getJavaPrimaryKeyJoinColumn() {
+ return javaPrimaryKeyJoinColumnEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaGeneratedValue <em>Java Generated Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Generated Value</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaGeneratedValue
+ * @generated
+ */
+ public EClass getJavaGeneratedValue() {
+ return javaGeneratedValueEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaGenerator <em>Java Generator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Generator</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaGenerator
+ * @generated
+ */
+ public EClass getJavaGenerator() {
+ return javaGeneratorEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaTableGenerator <em>Java Table Generator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Table Generator</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaTableGenerator
+ * @generated
+ */
+ public EClass getJavaTableGenerator() {
+ return javaTableGeneratorEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaSequenceGenerator <em>Java Sequence Generator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Sequence Generator</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaSequenceGenerator
+ * @generated
+ */
+ public EClass getJavaSequenceGenerator() {
+ return javaSequenceGeneratorEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaOrderBy <em>Java Order By</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Order By</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaOrderBy
+ * @generated
+ */
+ public EClass getJavaOrderBy() {
+ return javaOrderByEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaAbstractQuery <em>Java Abstract Query</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Abstract Query</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaAbstractQuery
+ * @generated
+ */
+ public EClass getJavaAbstractQuery() {
+ return javaAbstractQueryEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaNamedQuery <em>Java Named Query</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Named Query</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaNamedQuery
+ * @generated
+ */
+ public EClass getJavaNamedQuery() {
+ return javaNamedQueryEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaNamedNativeQuery <em>Java Named Native Query</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Named Native Query</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaNamedNativeQuery
+ * @generated
+ */
+ public EClass getJavaNamedNativeQuery() {
+ return javaNamedNativeQueryEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaQueryHint <em>Java Query Hint</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Query Hint</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaQueryHint
+ * @generated
+ */
+ public EClass getJavaQueryHint() {
+ return javaQueryHintEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaSecondaryTable <em>Java Secondary Table</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Secondary Table</em>'.
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaSecondaryTable
+ * @generated
+ */
+ public EClass getJavaSecondaryTable() {
+ return javaSecondaryTableEClass;
+ }
+
+ /**
+ * 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
+ */
+ public JpaJavaMappingsFactory getJpaJavaMappingsFactory() {
+ return (JpaJavaMappingsFactory) 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
+ javaTypeMappingEClass = createEClass(JAVA_TYPE_MAPPING);
+ javaEntityEClass = createEClass(JAVA_ENTITY);
+ createEReference(javaEntityEClass, JAVA_ENTITY__SECONDARY_TABLES);
+ javaMappedSuperclassEClass = createEClass(JAVA_MAPPED_SUPERCLASS);
+ javaEmbeddableEClass = createEClass(JAVA_EMBEDDABLE);
+ javaNullTypeMappingEClass = createEClass(JAVA_NULL_TYPE_MAPPING);
+ javaAttributeMappingEClass = createEClass(JAVA_ATTRIBUTE_MAPPING);
+ javaBasicEClass = createEClass(JAVA_BASIC);
+ javaIdEClass = createEClass(JAVA_ID);
+ javaTransientEClass = createEClass(JAVA_TRANSIENT);
+ javaVersionEClass = createEClass(JAVA_VERSION);
+ javaEmbeddedIdEClass = createEClass(JAVA_EMBEDDED_ID);
+ javaEmbeddedEClass = createEClass(JAVA_EMBEDDED);
+ javaRelationshipMappingEClass = createEClass(JAVA_RELATIONSHIP_MAPPING);
+ javaSingleRelationshipMappingEClass = createEClass(JAVA_SINGLE_RELATIONSHIP_MAPPING);
+ javaManyToOneEClass = createEClass(JAVA_MANY_TO_ONE);
+ javaOneToOneEClass = createEClass(JAVA_ONE_TO_ONE);
+ javaMultiRelationshipMappingEClass = createEClass(JAVA_MULTI_RELATIONSHIP_MAPPING);
+ javaOneToManyEClass = createEClass(JAVA_ONE_TO_MANY);
+ javaManyToManyEClass = createEClass(JAVA_MANY_TO_MANY);
+ javaNullAttributeMappingEClass = createEClass(JAVA_NULL_ATTRIBUTE_MAPPING);
+ abstractJavaTableEClass = createEClass(ABSTRACT_JAVA_TABLE);
+ javaTableEClass = createEClass(JAVA_TABLE);
+ javaSecondaryTableEClass = createEClass(JAVA_SECONDARY_TABLE);
+ javaJoinTableEClass = createEClass(JAVA_JOIN_TABLE);
+ javaNamedColumnEClass = createEClass(JAVA_NAMED_COLUMN);
+ abstractJavaColumnEClass = createEClass(ABSTRACT_JAVA_COLUMN);
+ javaColumnEClass = createEClass(JAVA_COLUMN);
+ javaJoinColumnEClass = createEClass(JAVA_JOIN_COLUMN);
+ javaOverrideEClass = createEClass(JAVA_OVERRIDE);
+ javaAttributeOverrideEClass = createEClass(JAVA_ATTRIBUTE_OVERRIDE);
+ javaAssociationOverrideEClass = createEClass(JAVA_ASSOCIATION_OVERRIDE);
+ javaDiscriminatorColumnEClass = createEClass(JAVA_DISCRIMINATOR_COLUMN);
+ javaPrimaryKeyJoinColumnEClass = createEClass(JAVA_PRIMARY_KEY_JOIN_COLUMN);
+ javaGeneratedValueEClass = createEClass(JAVA_GENERATED_VALUE);
+ javaGeneratorEClass = createEClass(JAVA_GENERATOR);
+ javaTableGeneratorEClass = createEClass(JAVA_TABLE_GENERATOR);
+ javaSequenceGeneratorEClass = createEClass(JAVA_SEQUENCE_GENERATOR);
+ javaOrderByEClass = createEClass(JAVA_ORDER_BY);
+ javaAbstractQueryEClass = createEClass(JAVA_ABSTRACT_QUERY);
+ javaNamedQueryEClass = createEClass(JAVA_NAMED_QUERY);
+ javaNamedNativeQueryEClass = createEClass(JAVA_NAMED_NATIVE_QUERY);
+ javaQueryHintEClass = createEClass(JAVA_QUERY_HINT);
+ }
+
+ /**
+ * <!-- 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
+ JpaJavaPackage theJpaJavaPackage = (JpaJavaPackage) EPackage.Registry.INSTANCE.getEPackage(JpaJavaPackage.eNS_URI);
+ JpaCoreMappingsPackage theJpaCoreMappingsPackage = (JpaCoreMappingsPackage) EPackage.Registry.INSTANCE.getEPackage(JpaCoreMappingsPackage.eNS_URI);
+ // Create type parameters
+ // Set bounds for type parameters
+ // Add supertypes to classes
+ javaTypeMappingEClass.getESuperTypes().add(theJpaJavaPackage.getJavaEObject());
+ javaTypeMappingEClass.getESuperTypes().add(theJpaJavaPackage.getIJavaTypeMapping());
+ javaEntityEClass.getESuperTypes().add(this.getJavaTypeMapping());
+ javaEntityEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIEntity());
+ javaMappedSuperclassEClass.getESuperTypes().add(this.getJavaTypeMapping());
+ javaMappedSuperclassEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIMappedSuperclass());
+ javaEmbeddableEClass.getESuperTypes().add(this.getJavaTypeMapping());
+ javaEmbeddableEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIEmbeddable());
+ javaNullTypeMappingEClass.getESuperTypes().add(this.getJavaTypeMapping());
+ javaAttributeMappingEClass.getESuperTypes().add(theJpaJavaPackage.getJavaEObject());
+ javaAttributeMappingEClass.getESuperTypes().add(theJpaJavaPackage.getIJavaAttributeMapping());
+ javaBasicEClass.getESuperTypes().add(this.getJavaAttributeMapping());
+ javaBasicEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIBasic());
+ javaIdEClass.getESuperTypes().add(this.getJavaAttributeMapping());
+ javaIdEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIId());
+ javaTransientEClass.getESuperTypes().add(this.getJavaAttributeMapping());
+ javaTransientEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getITransient());
+ javaVersionEClass.getESuperTypes().add(this.getJavaAttributeMapping());
+ javaVersionEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIVersion());
+ javaEmbeddedIdEClass.getESuperTypes().add(this.getJavaAttributeMapping());
+ javaEmbeddedIdEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIEmbeddedId());
+ javaEmbeddedEClass.getESuperTypes().add(this.getJavaAttributeMapping());
+ javaEmbeddedEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIEmbedded());
+ javaRelationshipMappingEClass.getESuperTypes().add(this.getJavaAttributeMapping());
+ javaRelationshipMappingEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIRelationshipMapping());
+ javaSingleRelationshipMappingEClass.getESuperTypes().add(this.getJavaRelationshipMapping());
+ javaSingleRelationshipMappingEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getISingleRelationshipMapping());
+ javaManyToOneEClass.getESuperTypes().add(this.getJavaSingleRelationshipMapping());
+ javaManyToOneEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIManyToOne());
+ javaOneToOneEClass.getESuperTypes().add(this.getJavaSingleRelationshipMapping());
+ javaOneToOneEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIOneToOne());
+ javaMultiRelationshipMappingEClass.getESuperTypes().add(this.getJavaRelationshipMapping());
+ javaMultiRelationshipMappingEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIMultiRelationshipMapping());
+ javaOneToManyEClass.getESuperTypes().add(this.getJavaMultiRelationshipMapping());
+ javaOneToManyEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIOneToMany());
+ javaManyToManyEClass.getESuperTypes().add(this.getJavaMultiRelationshipMapping());
+ javaManyToManyEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIManyToMany());
+ javaNullAttributeMappingEClass.getESuperTypes().add(this.getJavaAttributeMapping());
+ abstractJavaTableEClass.getESuperTypes().add(theJpaJavaPackage.getJavaEObject());
+ abstractJavaTableEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getITable());
+ javaTableEClass.getESuperTypes().add(this.getAbstractJavaTable());
+ javaSecondaryTableEClass.getESuperTypes().add(this.getAbstractJavaTable());
+ javaSecondaryTableEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getISecondaryTable());
+ javaJoinTableEClass.getESuperTypes().add(this.getAbstractJavaTable());
+ javaJoinTableEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIJoinTable());
+ javaNamedColumnEClass.getESuperTypes().add(theJpaJavaPackage.getJavaEObject());
+ javaNamedColumnEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getINamedColumn());
+ abstractJavaColumnEClass.getESuperTypes().add(this.getJavaNamedColumn());
+ abstractJavaColumnEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIAbstractColumn());
+ javaColumnEClass.getESuperTypes().add(this.getAbstractJavaColumn());
+ javaColumnEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIColumn());
+ javaJoinColumnEClass.getESuperTypes().add(this.getAbstractJavaColumn());
+ javaJoinColumnEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIJoinColumn());
+ javaOverrideEClass.getESuperTypes().add(theJpaJavaPackage.getJavaEObject());
+ javaOverrideEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIOverride());
+ javaAttributeOverrideEClass.getESuperTypes().add(this.getJavaOverride());
+ javaAttributeOverrideEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIAttributeOverride());
+ javaAssociationOverrideEClass.getESuperTypes().add(this.getJavaOverride());
+ javaAssociationOverrideEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIAssociationOverride());
+ javaDiscriminatorColumnEClass.getESuperTypes().add(theJpaJavaPackage.getJavaEObject());
+ javaDiscriminatorColumnEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIDiscriminatorColumn());
+ javaPrimaryKeyJoinColumnEClass.getESuperTypes().add(theJpaJavaPackage.getJavaEObject());
+ javaPrimaryKeyJoinColumnEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIPrimaryKeyJoinColumn());
+ javaGeneratedValueEClass.getESuperTypes().add(theJpaJavaPackage.getJavaEObject());
+ javaGeneratedValueEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIGeneratedValue());
+ javaGeneratorEClass.getESuperTypes().add(theJpaJavaPackage.getJavaEObject());
+ javaGeneratorEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIGenerator());
+ javaTableGeneratorEClass.getESuperTypes().add(this.getJavaGenerator());
+ javaTableGeneratorEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getITableGenerator());
+ javaSequenceGeneratorEClass.getESuperTypes().add(this.getJavaGenerator());
+ javaSequenceGeneratorEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getISequenceGenerator());
+ javaOrderByEClass.getESuperTypes().add(theJpaJavaPackage.getJavaEObject());
+ javaOrderByEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIOrderBy());
+ javaAbstractQueryEClass.getESuperTypes().add(theJpaJavaPackage.getJavaEObject());
+ javaAbstractQueryEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIQuery());
+ javaNamedQueryEClass.getESuperTypes().add(this.getJavaAbstractQuery());
+ javaNamedQueryEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getINamedQuery());
+ javaNamedNativeQueryEClass.getESuperTypes().add(this.getJavaAbstractQuery());
+ javaNamedNativeQueryEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getINamedNativeQuery());
+ javaQueryHintEClass.getESuperTypes().add(theJpaJavaPackage.getJavaEObject());
+ javaQueryHintEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIQueryHint());
+ // Initialize classes and features; add operations and parameters
+ initEClass(javaTypeMappingEClass, JavaTypeMapping.class, "JavaTypeMapping", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaEntityEClass, JavaEntity.class, "JavaEntity", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getJavaEntity_SecondaryTables(), theJpaCoreMappingsPackage.getISecondaryTable(), null, "secondaryTables", null, 0, -1, JavaEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(javaMappedSuperclassEClass, JavaMappedSuperclass.class, "JavaMappedSuperclass", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaEmbeddableEClass, JavaEmbeddable.class, "JavaEmbeddable", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaNullTypeMappingEClass, JavaNullTypeMapping.class, "JavaNullTypeMapping", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaAttributeMappingEClass, JavaAttributeMapping.class, "JavaAttributeMapping", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaBasicEClass, JavaBasic.class, "JavaBasic", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaIdEClass, JavaId.class, "JavaId", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaTransientEClass, JavaTransient.class, "JavaTransient", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaVersionEClass, JavaVersion.class, "JavaVersion", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaEmbeddedIdEClass, JavaEmbeddedId.class, "JavaEmbeddedId", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaEmbeddedEClass, JavaEmbedded.class, "JavaEmbedded", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaRelationshipMappingEClass, JavaRelationshipMapping.class, "JavaRelationshipMapping", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaSingleRelationshipMappingEClass, JavaSingleRelationshipMapping.class, "JavaSingleRelationshipMapping", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaManyToOneEClass, JavaManyToOne.class, "JavaManyToOne", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaOneToOneEClass, JavaOneToOne.class, "JavaOneToOne", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaMultiRelationshipMappingEClass, JavaMultiRelationshipMapping.class, "JavaMultiRelationshipMapping", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaOneToManyEClass, JavaOneToMany.class, "JavaOneToMany", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaManyToManyEClass, JavaManyToMany.class, "JavaManyToMany", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaNullAttributeMappingEClass, JavaNullAttributeMapping.class, "JavaNullAttributeMapping", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(abstractJavaTableEClass, AbstractJavaTable.class, "AbstractJavaTable", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaTableEClass, JavaTable.class, "JavaTable", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaSecondaryTableEClass, JavaSecondaryTable.class, "JavaSecondaryTable", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaJoinTableEClass, JavaJoinTable.class, "JavaJoinTable", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaNamedColumnEClass, JavaNamedColumn.class, "JavaNamedColumn", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(abstractJavaColumnEClass, AbstractJavaColumn.class, "AbstractJavaColumn", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaColumnEClass, JavaColumn.class, "JavaColumn", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaJoinColumnEClass, JavaJoinColumn.class, "JavaJoinColumn", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaOverrideEClass, JavaOverride.class, "JavaOverride", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaAttributeOverrideEClass, JavaAttributeOverride.class, "JavaAttributeOverride", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaAssociationOverrideEClass, JavaAssociationOverride.class, "JavaAssociationOverride", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaDiscriminatorColumnEClass, JavaDiscriminatorColumn.class, "JavaDiscriminatorColumn", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaPrimaryKeyJoinColumnEClass, JavaPrimaryKeyJoinColumn.class, "JavaPrimaryKeyJoinColumn", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaGeneratedValueEClass, JavaGeneratedValue.class, "JavaGeneratedValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaGeneratorEClass, JavaGenerator.class, "JavaGenerator", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaTableGeneratorEClass, JavaTableGenerator.class, "JavaTableGenerator", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaSequenceGeneratorEClass, JavaSequenceGenerator.class, "JavaSequenceGenerator", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaOrderByEClass, JavaOrderBy.class, "JavaOrderBy", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaAbstractQueryEClass, JavaAbstractQuery.class, "JavaAbstractQuery", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaNamedQueryEClass, JavaNamedQuery.class, "JavaNamedQuery", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaNamedNativeQueryEClass, JavaNamedNativeQuery.class, "JavaNamedNativeQuery", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(javaQueryHintEClass, JavaQueryHint.class, "JavaQueryHint", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ }
+ /**
+ * <!-- 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
+ */
+ public interface Literals
+ {
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaEntity <em>Java Entity</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaEntity
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaEntity()
+ * @generated
+ */
+ public static final EClass JAVA_ENTITY = eINSTANCE.getJavaEntity();
+
+ /**
+ * The meta object literal for the '<em><b>Secondary Tables</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference JAVA_ENTITY__SECONDARY_TABLES = eINSTANCE.getJavaEntity_SecondaryTables();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaMappedSuperclass <em>Java Mapped Superclass</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaMappedSuperclass
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaMappedSuperclass()
+ * @generated
+ */
+ public static final EClass JAVA_MAPPED_SUPERCLASS = eINSTANCE.getJavaMappedSuperclass();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbeddable <em>Java Embeddable</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbeddable
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaEmbeddable()
+ * @generated
+ */
+ public static final EClass JAVA_EMBEDDABLE = eINSTANCE.getJavaEmbeddable();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaNullTypeMapping <em>Java Null Type Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaNullTypeMapping
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaNullTypeMapping()
+ * @generated
+ */
+ public static final EClass JAVA_NULL_TYPE_MAPPING = eINSTANCE.getJavaNullTypeMapping();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaNullAttributeMapping <em>Java Null Attribute Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaNullAttributeMapping
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaNullAttributeMapping()
+ * @generated
+ */
+ public static final EClass JAVA_NULL_ATTRIBUTE_MAPPING = eINSTANCE.getJavaNullAttributeMapping();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaBasic <em>Java Basic</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaBasic
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaBasic()
+ * @generated
+ */
+ public static final EClass JAVA_BASIC = eINSTANCE.getJavaBasic();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaId <em>Java Id</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaId
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaId()
+ * @generated
+ */
+ public static final EClass JAVA_ID = eINSTANCE.getJavaId();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaTransient <em>Java Transient</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaTransient
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaTransient()
+ * @generated
+ */
+ public static final EClass JAVA_TRANSIENT = eINSTANCE.getJavaTransient();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaVersion <em>Java Version</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaVersion
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaVersion()
+ * @generated
+ */
+ public static final EClass JAVA_VERSION = eINSTANCE.getJavaVersion();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbeddedId <em>Java Embedded Id</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbeddedId
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaEmbeddedId()
+ * @generated
+ */
+ public static final EClass JAVA_EMBEDDED_ID = eINSTANCE.getJavaEmbeddedId();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbedded <em>Java Embedded</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbedded
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaEmbedded()
+ * @generated
+ */
+ public static final EClass JAVA_EMBEDDED = eINSTANCE.getJavaEmbedded();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaAttributeMapping <em>Java Attribute Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaAttributeMapping
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaAttributeMapping()
+ * @generated
+ */
+ public static final EClass JAVA_ATTRIBUTE_MAPPING = eINSTANCE.getJavaAttributeMapping();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaTypeMapping <em>Java Type Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaTypeMapping
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaTypeMapping()
+ * @generated
+ */
+ public static final EClass JAVA_TYPE_MAPPING = eINSTANCE.getJavaTypeMapping();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.AbstractJavaTable <em>Abstract Java Table</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.AbstractJavaTable
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getAbstractJavaTable()
+ * @generated
+ */
+ public static final EClass ABSTRACT_JAVA_TABLE = eINSTANCE.getAbstractJavaTable();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaTable <em>Java Table</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaTable
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaTable()
+ * @generated
+ */
+ public static final EClass JAVA_TABLE = eINSTANCE.getJavaTable();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaColumn <em>Java Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaColumn
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaColumn()
+ * @generated
+ */
+ public static final EClass JAVA_COLUMN = eINSTANCE.getJavaColumn();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaRelationshipMapping <em>Java Relationship Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaRelationshipMapping
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaRelationshipMapping()
+ * @generated
+ */
+ public static final EClass JAVA_RELATIONSHIP_MAPPING = eINSTANCE.getJavaRelationshipMapping();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaSingleRelationshipMapping <em>Java Single Relationship Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaSingleRelationshipMapping
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaSingleRelationshipMapping()
+ * @generated
+ */
+ public static final EClass JAVA_SINGLE_RELATIONSHIP_MAPPING = eINSTANCE.getJavaSingleRelationshipMapping();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaManyToOne <em>Java Many To One</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaManyToOne
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaManyToOne()
+ * @generated
+ */
+ public static final EClass JAVA_MANY_TO_ONE = eINSTANCE.getJavaManyToOne();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaOneToOne <em>Java One To One</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaOneToOne
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaOneToOne()
+ * @generated
+ */
+ public static final EClass JAVA_ONE_TO_ONE = eINSTANCE.getJavaOneToOne();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaMultiRelationshipMapping <em>Java Multi Relationship Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaMultiRelationshipMapping
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaMultiRelationshipMapping()
+ * @generated
+ */
+ public static final EClass JAVA_MULTI_RELATIONSHIP_MAPPING = eINSTANCE.getJavaMultiRelationshipMapping();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaOneToMany <em>Java One To Many</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaOneToMany
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaOneToMany()
+ * @generated
+ */
+ public static final EClass JAVA_ONE_TO_MANY = eINSTANCE.getJavaOneToMany();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaManyToMany <em>Java Many To Many</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaManyToMany
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaManyToMany()
+ * @generated
+ */
+ public static final EClass JAVA_MANY_TO_MANY = eINSTANCE.getJavaManyToMany();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaJoinTable <em>Java Join Table</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaJoinTable
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaJoinTable()
+ * @generated
+ */
+ public static final EClass JAVA_JOIN_TABLE = eINSTANCE.getJavaJoinTable();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaNamedColumn <em>Java Named Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaNamedColumn
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaNamedColumn()
+ * @generated
+ */
+ public static final EClass JAVA_NAMED_COLUMN = eINSTANCE.getJavaNamedColumn();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.AbstractJavaColumn <em>Abstract Java Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.AbstractJavaColumn
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getAbstractJavaColumn()
+ * @generated
+ */
+ public static final EClass ABSTRACT_JAVA_COLUMN = eINSTANCE.getAbstractJavaColumn();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaJoinColumn <em>Java Join Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaJoinColumn
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaJoinColumn()
+ * @generated
+ */
+ public static final EClass JAVA_JOIN_COLUMN = eINSTANCE.getJavaJoinColumn();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaOverride <em>Java Override</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaOverride
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaOverride()
+ * @generated
+ */
+ public static final EClass JAVA_OVERRIDE = eINSTANCE.getJavaOverride();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaAttributeOverride <em>Java Attribute Override</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaAttributeOverride
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaAttributeOverride()
+ * @generated
+ */
+ public static final EClass JAVA_ATTRIBUTE_OVERRIDE = eINSTANCE.getJavaAttributeOverride();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaAssociationOverride <em>Java Association Override</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaAssociationOverride
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaAssociationOverride()
+ * @generated
+ */
+ public static final EClass JAVA_ASSOCIATION_OVERRIDE = eINSTANCE.getJavaAssociationOverride();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaDiscriminatorColumn <em>Java Discriminator Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaDiscriminatorColumn
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaDiscriminatorColumn()
+ * @generated
+ */
+ public static final EClass JAVA_DISCRIMINATOR_COLUMN = eINSTANCE.getJavaDiscriminatorColumn();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaPrimaryKeyJoinColumn <em>Java Primary Key Join Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaPrimaryKeyJoinColumn
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaPrimaryKeyJoinColumn()
+ * @generated
+ */
+ public static final EClass JAVA_PRIMARY_KEY_JOIN_COLUMN = eINSTANCE.getJavaPrimaryKeyJoinColumn();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaGeneratedValue <em>Java Generated Value</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaGeneratedValue
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaGeneratedValue()
+ * @generated
+ */
+ public static final EClass JAVA_GENERATED_VALUE = eINSTANCE.getJavaGeneratedValue();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaGenerator <em>Java Generator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaGenerator
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaGenerator()
+ * @generated
+ */
+ public static final EClass JAVA_GENERATOR = eINSTANCE.getJavaGenerator();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaTableGenerator <em>Java Table Generator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaTableGenerator
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaTableGenerator()
+ * @generated
+ */
+ public static final EClass JAVA_TABLE_GENERATOR = eINSTANCE.getJavaTableGenerator();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaSequenceGenerator <em>Java Sequence Generator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaSequenceGenerator
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaSequenceGenerator()
+ * @generated
+ */
+ public static final EClass JAVA_SEQUENCE_GENERATOR = eINSTANCE.getJavaSequenceGenerator();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaOrderBy <em>Java Order By</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaOrderBy
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaOrderBy()
+ * @generated
+ */
+ public static final EClass JAVA_ORDER_BY = eINSTANCE.getJavaOrderBy();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaAbstractQuery <em>Java Abstract Query</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaAbstractQuery
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaAbstractQuery()
+ * @generated
+ */
+ public static final EClass JAVA_ABSTRACT_QUERY = eINSTANCE.getJavaAbstractQuery();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaNamedQuery <em>Java Named Query</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaNamedQuery
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaNamedQuery()
+ * @generated
+ */
+ public static final EClass JAVA_NAMED_QUERY = eINSTANCE.getJavaNamedQuery();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaNamedNativeQuery <em>Java Named Native Query</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaNamedNativeQuery
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaNamedNativeQuery()
+ * @generated
+ */
+ public static final EClass JAVA_NAMED_NATIVE_QUERY = eINSTANCE.getJavaNamedNativeQuery();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaQueryHint <em>Java Query Hint</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaQueryHint
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaQueryHint()
+ * @generated
+ */
+ public static final EClass JAVA_QUERY_HINT = eINSTANCE.getJavaQueryHint();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaSecondaryTable <em>Java Secondary Table</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JavaSecondaryTable
+ * @see org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage#getJavaSecondaryTable()
+ * @generated
+ */
+ public static final EClass JAVA_SECONDARY_TABLE = eINSTANCE.getJavaSecondaryTable();
+ }
+} //JavaMappingsPackage
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/util/JpaJavaMappingsAdapterFactory.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/util/JpaJavaMappingsAdapterFactory.java
new file mode 100644
index 0000000000..6e2c7bd3b2
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/util/JpaJavaMappingsAdapterFactory.java
@@ -0,0 +1,1904 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings.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.jpt.core.internal.IAttributeMapping;
+import org.eclipse.jpt.core.internal.IJpaEObject;
+import org.eclipse.jpt.core.internal.IJpaSourceObject;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.JpaEObject;
+import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMapping;
+import org.eclipse.jpt.core.internal.content.java.IJavaTypeMapping;
+import org.eclipse.jpt.core.internal.content.java.JavaEObject;
+import org.eclipse.jpt.core.internal.content.java.mappings.AbstractJavaColumn;
+import org.eclipse.jpt.core.internal.content.java.mappings.AbstractJavaTable;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaAbstractQuery;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaAssociationOverride;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaAttributeMapping;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaAttributeOverride;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaBasic;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaColumn;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaDiscriminatorColumn;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbeddable;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbedded;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbeddedId;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaEntity;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaGeneratedValue;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaGenerator;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaId;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaJoinColumn;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaJoinTable;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaManyToMany;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaManyToOne;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaMappedSuperclass;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaMultiRelationshipMapping;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaNamedColumn;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaNamedNativeQuery;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaNamedQuery;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaNullAttributeMapping;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaNullTypeMapping;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaOneToMany;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaOneToOne;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaOrderBy;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaOverride;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaPrimaryKeyJoinColumn;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaQueryHint;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaRelationshipMapping;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaSecondaryTable;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaSequenceGenerator;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaSingleRelationshipMapping;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaTable;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaTableGenerator;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaTransient;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaTypeMapping;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaVersion;
+import org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage;
+import org.eclipse.jpt.core.internal.mappings.IAbstractColumn;
+import org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.IAssociationOverride;
+import org.eclipse.jpt.core.internal.mappings.IAttributeOverride;
+import org.eclipse.jpt.core.internal.mappings.IBasic;
+import org.eclipse.jpt.core.internal.mappings.IColumn;
+import org.eclipse.jpt.core.internal.mappings.IColumnMapping;
+import org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn;
+import org.eclipse.jpt.core.internal.mappings.IEmbeddable;
+import org.eclipse.jpt.core.internal.mappings.IEmbedded;
+import org.eclipse.jpt.core.internal.mappings.IEmbeddedId;
+import org.eclipse.jpt.core.internal.mappings.IEntity;
+import org.eclipse.jpt.core.internal.mappings.IGeneratedValue;
+import org.eclipse.jpt.core.internal.mappings.IGenerator;
+import org.eclipse.jpt.core.internal.mappings.IId;
+import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.IJoinTable;
+import org.eclipse.jpt.core.internal.mappings.IManyToMany;
+import org.eclipse.jpt.core.internal.mappings.IManyToOne;
+import org.eclipse.jpt.core.internal.mappings.IMappedSuperclass;
+import org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.INamedColumn;
+import org.eclipse.jpt.core.internal.mappings.INamedNativeQuery;
+import org.eclipse.jpt.core.internal.mappings.INamedQuery;
+import org.eclipse.jpt.core.internal.mappings.INonOwningMapping;
+import org.eclipse.jpt.core.internal.mappings.IOneToMany;
+import org.eclipse.jpt.core.internal.mappings.IOneToOne;
+import org.eclipse.jpt.core.internal.mappings.IOrderBy;
+import org.eclipse.jpt.core.internal.mappings.IOverride;
+import org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.IQuery;
+import org.eclipse.jpt.core.internal.mappings.IQueryHint;
+import org.eclipse.jpt.core.internal.mappings.IRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.ISecondaryTable;
+import org.eclipse.jpt.core.internal.mappings.ISequenceGenerator;
+import org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.ITable;
+import org.eclipse.jpt.core.internal.mappings.ITableGenerator;
+import org.eclipse.jpt.core.internal.mappings.ITransient;
+import org.eclipse.jpt.core.internal.mappings.IVersion;
+
+/**
+ * <!-- 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.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage
+ * @generated
+ */
+public class JpaJavaMappingsAdapterFactory extends AdapterFactoryImpl
+{
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static JpaJavaMappingsPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JpaJavaMappingsAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = JpaJavaMappingsPackage.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 JpaJavaMappingsSwitch<Adapter> modelSwitch = new JpaJavaMappingsSwitch<Adapter>() {
+ @Override
+ public Adapter caseJavaTypeMapping(JavaTypeMapping object) {
+ return createJavaTypeMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaEntity(JavaEntity object) {
+ return createJavaEntityAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaMappedSuperclass(JavaMappedSuperclass object) {
+ return createJavaMappedSuperclassAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaEmbeddable(JavaEmbeddable object) {
+ return createJavaEmbeddableAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaNullTypeMapping(JavaNullTypeMapping object) {
+ return createJavaNullTypeMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaAttributeMapping(JavaAttributeMapping object) {
+ return createJavaAttributeMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaBasic(JavaBasic object) {
+ return createJavaBasicAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaId(JavaId object) {
+ return createJavaIdAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaTransient(JavaTransient object) {
+ return createJavaTransientAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaVersion(JavaVersion object) {
+ return createJavaVersionAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaEmbeddedId(JavaEmbeddedId object) {
+ return createJavaEmbeddedIdAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaEmbedded(JavaEmbedded object) {
+ return createJavaEmbeddedAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaRelationshipMapping(JavaRelationshipMapping object) {
+ return createJavaRelationshipMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaSingleRelationshipMapping(JavaSingleRelationshipMapping object) {
+ return createJavaSingleRelationshipMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaManyToOne(JavaManyToOne object) {
+ return createJavaManyToOneAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaOneToOne(JavaOneToOne object) {
+ return createJavaOneToOneAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaMultiRelationshipMapping(JavaMultiRelationshipMapping object) {
+ return createJavaMultiRelationshipMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaOneToMany(JavaOneToMany object) {
+ return createJavaOneToManyAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaManyToMany(JavaManyToMany object) {
+ return createJavaManyToManyAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaNullAttributeMapping(JavaNullAttributeMapping object) {
+ return createJavaNullAttributeMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseAbstractJavaTable(AbstractJavaTable object) {
+ return createAbstractJavaTableAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaTable(JavaTable object) {
+ return createJavaTableAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaSecondaryTable(JavaSecondaryTable object) {
+ return createJavaSecondaryTableAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaJoinTable(JavaJoinTable object) {
+ return createJavaJoinTableAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaNamedColumn(JavaNamedColumn object) {
+ return createJavaNamedColumnAdapter();
+ }
+
+ @Override
+ public Adapter caseAbstractJavaColumn(AbstractJavaColumn object) {
+ return createAbstractJavaColumnAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaColumn(JavaColumn object) {
+ return createJavaColumnAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaJoinColumn(JavaJoinColumn object) {
+ return createJavaJoinColumnAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaOverride(JavaOverride object) {
+ return createJavaOverrideAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaAttributeOverride(JavaAttributeOverride object) {
+ return createJavaAttributeOverrideAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaAssociationOverride(JavaAssociationOverride object) {
+ return createJavaAssociationOverrideAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaDiscriminatorColumn(JavaDiscriminatorColumn object) {
+ return createJavaDiscriminatorColumnAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaPrimaryKeyJoinColumn(JavaPrimaryKeyJoinColumn object) {
+ return createJavaPrimaryKeyJoinColumnAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaGeneratedValue(JavaGeneratedValue object) {
+ return createJavaGeneratedValueAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaGenerator(JavaGenerator object) {
+ return createJavaGeneratorAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaTableGenerator(JavaTableGenerator object) {
+ return createJavaTableGeneratorAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaSequenceGenerator(JavaSequenceGenerator object) {
+ return createJavaSequenceGeneratorAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaOrderBy(JavaOrderBy object) {
+ return createJavaOrderByAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaAbstractQuery(JavaAbstractQuery object) {
+ return createJavaAbstractQueryAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaNamedQuery(JavaNamedQuery object) {
+ return createJavaNamedQueryAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaNamedNativeQuery(JavaNamedNativeQuery object) {
+ return createJavaNamedNativeQueryAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaQueryHint(JavaQueryHint object) {
+ return createJavaQueryHintAdapter();
+ }
+
+ @Override
+ public Adapter caseIJpaEObject(IJpaEObject object) {
+ return createIJpaEObjectAdapter();
+ }
+
+ @Override
+ public Adapter caseJpaEObject(JpaEObject object) {
+ return createJpaEObjectAdapter();
+ }
+
+ @Override
+ public Adapter caseIJpaSourceObject(IJpaSourceObject object) {
+ return createIJpaSourceObjectAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaEObject(JavaEObject object) {
+ return createJavaEObjectAdapter();
+ }
+
+ @Override
+ public Adapter caseITypeMapping(ITypeMapping object) {
+ return createITypeMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseIJavaTypeMapping(IJavaTypeMapping object) {
+ return createIJavaTypeMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseIEntity(IEntity object) {
+ return createIEntityAdapter();
+ }
+
+ @Override
+ public Adapter caseIMappedSuperclass(IMappedSuperclass object) {
+ return createIMappedSuperclassAdapter();
+ }
+
+ @Override
+ public Adapter caseIEmbeddable(IEmbeddable object) {
+ return createIEmbeddableAdapter();
+ }
+
+ @Override
+ public Adapter caseIAttributeMapping(IAttributeMapping object) {
+ return createIAttributeMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseIJavaAttributeMapping(IJavaAttributeMapping object) {
+ return createIJavaAttributeMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseIColumnMapping(IColumnMapping object) {
+ return createIColumnMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseIBasic(IBasic object) {
+ return createIBasicAdapter();
+ }
+
+ @Override
+ public Adapter caseIId(IId object) {
+ return createIIdAdapter();
+ }
+
+ @Override
+ public Adapter caseITransient(ITransient object) {
+ return createITransientAdapter();
+ }
+
+ @Override
+ public Adapter caseIVersion(IVersion object) {
+ return createIVersionAdapter();
+ }
+
+ @Override
+ public Adapter caseIEmbeddedId(IEmbeddedId object) {
+ return createIEmbeddedIdAdapter();
+ }
+
+ @Override
+ public Adapter caseIEmbedded(IEmbedded object) {
+ return createIEmbeddedAdapter();
+ }
+
+ @Override
+ public Adapter caseIRelationshipMapping(IRelationshipMapping object) {
+ return createIRelationshipMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseISingleRelationshipMapping(ISingleRelationshipMapping object) {
+ return createISingleRelationshipMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseIManyToOne(IManyToOne object) {
+ return createIManyToOneAdapter();
+ }
+
+ @Override
+ public Adapter caseINonOwningMapping(INonOwningMapping object) {
+ return createINonOwningMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseIOneToOne(IOneToOne object) {
+ return createIOneToOneAdapter();
+ }
+
+ @Override
+ public Adapter caseIMultiRelationshipMapping(IMultiRelationshipMapping object) {
+ return createIMultiRelationshipMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseIOneToMany(IOneToMany object) {
+ return createIOneToManyAdapter();
+ }
+
+ @Override
+ public Adapter caseIManyToMany(IManyToMany object) {
+ return createIManyToManyAdapter();
+ }
+
+ @Override
+ public Adapter caseITable(ITable object) {
+ return createITableAdapter();
+ }
+
+ @Override
+ public Adapter caseISecondaryTable(ISecondaryTable object) {
+ return createISecondaryTableAdapter();
+ }
+
+ @Override
+ public Adapter caseIJoinTable(IJoinTable object) {
+ return createIJoinTableAdapter();
+ }
+
+ @Override
+ public Adapter caseINamedColumn(INamedColumn object) {
+ return createINamedColumnAdapter();
+ }
+
+ @Override
+ public Adapter caseIAbstractColumn(IAbstractColumn object) {
+ return createIAbstractColumnAdapter();
+ }
+
+ @Override
+ public Adapter caseIColumn(IColumn object) {
+ return createIColumnAdapter();
+ }
+
+ @Override
+ public Adapter caseIAbstractJoinColumn(IAbstractJoinColumn object) {
+ return createIAbstractJoinColumnAdapter();
+ }
+
+ @Override
+ public Adapter caseIJoinColumn(IJoinColumn object) {
+ return createIJoinColumnAdapter();
+ }
+
+ @Override
+ public Adapter caseIOverride(IOverride object) {
+ return createIOverrideAdapter();
+ }
+
+ @Override
+ public Adapter caseIAttributeOverride(IAttributeOverride object) {
+ return createIAttributeOverrideAdapter();
+ }
+
+ @Override
+ public Adapter caseIAssociationOverride(IAssociationOverride object) {
+ return createIAssociationOverrideAdapter();
+ }
+
+ @Override
+ public Adapter caseIDiscriminatorColumn(IDiscriminatorColumn object) {
+ return createIDiscriminatorColumnAdapter();
+ }
+
+ @Override
+ public Adapter caseIPrimaryKeyJoinColumn(IPrimaryKeyJoinColumn object) {
+ return createIPrimaryKeyJoinColumnAdapter();
+ }
+
+ @Override
+ public Adapter caseIGeneratedValue(IGeneratedValue object) {
+ return createIGeneratedValueAdapter();
+ }
+
+ @Override
+ public Adapter caseIGenerator(IGenerator object) {
+ return createIGeneratorAdapter();
+ }
+
+ @Override
+ public Adapter caseITableGenerator(ITableGenerator object) {
+ return createITableGeneratorAdapter();
+ }
+
+ @Override
+ public Adapter caseISequenceGenerator(ISequenceGenerator object) {
+ return createISequenceGeneratorAdapter();
+ }
+
+ @Override
+ public Adapter caseIOrderBy(IOrderBy object) {
+ return createIOrderByAdapter();
+ }
+
+ @Override
+ public Adapter caseIQuery(IQuery object) {
+ return createIQueryAdapter();
+ }
+
+ @Override
+ public Adapter caseINamedQuery(INamedQuery object) {
+ return createINamedQueryAdapter();
+ }
+
+ @Override
+ public Adapter caseINamedNativeQuery(INamedNativeQuery object) {
+ return createINamedNativeQueryAdapter();
+ }
+
+ @Override
+ public Adapter caseIQueryHint(IQueryHint object) {
+ return createIQueryHintAdapter();
+ }
+
+ @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.jpt.core.internal.content.java.mappings.JavaEntity <em>Java Entity</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.jpt.core.internal.content.java.mappings.JavaEntity
+ * @generated
+ */
+ public Adapter createJavaEntityAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaMappedSuperclass <em>Java Mapped Superclass</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.jpt.core.internal.content.java.mappings.JavaMappedSuperclass
+ * @generated
+ */
+ public Adapter createJavaMappedSuperclassAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbeddable <em>Java Embeddable</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.jpt.core.internal.content.java.mappings.JavaEmbeddable
+ * @generated
+ */
+ public Adapter createJavaEmbeddableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaNullTypeMapping <em>Java Null Type Mapping</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.jpt.core.internal.content.java.mappings.JavaNullTypeMapping
+ * @generated
+ */
+ public Adapter createJavaNullTypeMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaNullAttributeMapping <em>Java Null Attribute Mapping</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.jpt.core.internal.content.java.mappings.JavaNullAttributeMapping
+ * @generated
+ */
+ public Adapter createJavaNullAttributeMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaBasic <em>Java Basic</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.jpt.core.internal.content.java.mappings.JavaBasic
+ * @generated
+ */
+ public Adapter createJavaBasicAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaId <em>Java Id</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.jpt.core.internal.content.java.mappings.JavaId
+ * @generated
+ */
+ public Adapter createJavaIdAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaTransient <em>Java Transient</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.jpt.core.internal.content.java.mappings.JavaTransient
+ * @generated
+ */
+ public Adapter createJavaTransientAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaVersion <em>Java Version</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.jpt.core.internal.content.java.mappings.JavaVersion
+ * @generated
+ */
+ public Adapter createJavaVersionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbeddedId <em>Java Embedded Id</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.jpt.core.internal.content.java.mappings.JavaEmbeddedId
+ * @generated
+ */
+ public Adapter createJavaEmbeddedIdAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbedded <em>Java Embedded</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.jpt.core.internal.content.java.mappings.JavaEmbedded
+ * @generated
+ */
+ public Adapter createJavaEmbeddedAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaAttributeMapping <em>Java Attribute Mapping</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.jpt.core.internal.content.java.mappings.JavaAttributeMapping
+ * @generated
+ */
+ public Adapter createJavaAttributeMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaTypeMapping <em>Java Type Mapping</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.jpt.core.internal.content.java.mappings.JavaTypeMapping
+ * @generated
+ */
+ public Adapter createJavaTypeMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.AbstractJavaTable <em>Abstract Java Table</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.jpt.core.internal.content.java.mappings.AbstractJavaTable
+ * @generated
+ */
+ public Adapter createAbstractJavaTableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaTable <em>Java Table</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.jpt.core.internal.content.java.mappings.JavaTable
+ * @generated
+ */
+ public Adapter createJavaTableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaColumn <em>Java Column</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.jpt.core.internal.content.java.mappings.JavaColumn
+ * @generated
+ */
+ public Adapter createJavaColumnAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaRelationshipMapping <em>Java Relationship Mapping</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.jpt.core.internal.content.java.mappings.JavaRelationshipMapping
+ * @generated
+ */
+ public Adapter createJavaRelationshipMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaSingleRelationshipMapping <em>Java Single Relationship Mapping</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.jpt.core.internal.content.java.mappings.JavaSingleRelationshipMapping
+ * @generated
+ */
+ public Adapter createJavaSingleRelationshipMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaOneToMany <em>Java One To Many</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.jpt.core.internal.content.java.mappings.JavaOneToMany
+ * @generated
+ */
+ public Adapter createJavaOneToManyAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaManyToMany <em>Java Many To Many</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.jpt.core.internal.content.java.mappings.JavaManyToMany
+ * @generated
+ */
+ public Adapter createJavaManyToManyAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaJoinTable <em>Java Join Table</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.jpt.core.internal.content.java.mappings.JavaJoinTable
+ * @generated
+ */
+ public Adapter createJavaJoinTableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaNamedColumn <em>Java Named Column</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.jpt.core.internal.content.java.mappings.JavaNamedColumn
+ * @generated
+ */
+ public Adapter createJavaNamedColumnAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.AbstractJavaColumn <em>Abstract Java Column</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.jpt.core.internal.content.java.mappings.AbstractJavaColumn
+ * @generated
+ */
+ public Adapter createAbstractJavaColumnAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaJoinColumn <em>Java Join Column</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.jpt.core.internal.content.java.mappings.JavaJoinColumn
+ * @generated
+ */
+ public Adapter createJavaJoinColumnAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaOverride <em>Java Override</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.jpt.core.internal.content.java.mappings.JavaOverride
+ * @generated
+ */
+ public Adapter createJavaOverrideAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaAttributeOverride <em>Java Attribute Override</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.jpt.core.internal.content.java.mappings.JavaAttributeOverride
+ * @generated
+ */
+ public Adapter createJavaAttributeOverrideAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaAssociationOverride <em>Java Association Override</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.jpt.core.internal.content.java.mappings.JavaAssociationOverride
+ * @generated
+ */
+ public Adapter createJavaAssociationOverrideAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaDiscriminatorColumn <em>Java Discriminator Column</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.jpt.core.internal.content.java.mappings.JavaDiscriminatorColumn
+ * @generated
+ */
+ public Adapter createJavaDiscriminatorColumnAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaPrimaryKeyJoinColumn <em>Java Primary Key Join Column</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.jpt.core.internal.content.java.mappings.JavaPrimaryKeyJoinColumn
+ * @generated
+ */
+ public Adapter createJavaPrimaryKeyJoinColumnAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaGeneratedValue <em>Java Generated 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.jpt.core.internal.content.java.mappings.JavaGeneratedValue
+ * @generated
+ */
+ public Adapter createJavaGeneratedValueAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaGenerator <em>Java Generator</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.jpt.core.internal.content.java.mappings.JavaGenerator
+ * @generated
+ */
+ public Adapter createJavaGeneratorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaTableGenerator <em>Java Table Generator</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.jpt.core.internal.content.java.mappings.JavaTableGenerator
+ * @generated
+ */
+ public Adapter createJavaTableGeneratorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaSequenceGenerator <em>Java Sequence Generator</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.jpt.core.internal.content.java.mappings.JavaSequenceGenerator
+ * @generated
+ */
+ public Adapter createJavaSequenceGeneratorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaOrderBy <em>Java Order By</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.jpt.core.internal.content.java.mappings.JavaOrderBy
+ * @generated
+ */
+ public Adapter createJavaOrderByAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaAbstractQuery <em>Java Abstract Query</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.jpt.core.internal.content.java.mappings.JavaAbstractQuery
+ * @generated
+ */
+ public Adapter createJavaAbstractQueryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaNamedQuery <em>Java Named Query</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.jpt.core.internal.content.java.mappings.JavaNamedQuery
+ * @generated
+ */
+ public Adapter createJavaNamedQueryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaNamedNativeQuery <em>Java Named Native Query</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.jpt.core.internal.content.java.mappings.JavaNamedNativeQuery
+ * @generated
+ */
+ public Adapter createJavaNamedNativeQueryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaQueryHint <em>Java Query Hint</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.jpt.core.internal.content.java.mappings.JavaQueryHint
+ * @generated
+ */
+ public Adapter createJavaQueryHintAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaSecondaryTable <em>Java Secondary Table</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.jpt.core.internal.content.java.mappings.JavaSecondaryTable
+ * @generated
+ */
+ public Adapter createJavaSecondaryTableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IJpaEObject <em>IJpa EObject</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.jpt.core.internal.IJpaEObject
+ * @generated
+ */
+ public Adapter createIJpaEObjectAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.JpaEObject <em>Jpa EObject</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.jpt.core.internal.JpaEObject
+ * @generated
+ */
+ public Adapter createJpaEObjectAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IJpaSourceObject <em>IJpa Source Object</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.jpt.core.internal.IJpaSourceObject
+ * @generated
+ */
+ public Adapter createIJpaSourceObjectAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.JavaEObject <em>Java EObject</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.jpt.core.internal.content.java.JavaEObject
+ * @generated
+ */
+ public Adapter createJavaEObjectAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaManyToOne <em>Java Many To One</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.jpt.core.internal.content.java.mappings.JavaManyToOne
+ * @generated
+ */
+ public Adapter createJavaManyToOneAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaOneToOne <em>Java One To One</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.jpt.core.internal.content.java.mappings.JavaOneToOne
+ * @generated
+ */
+ public Adapter createJavaOneToOneAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.mappings.JavaMultiRelationshipMapping <em>Java Multi Relationship Mapping</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.jpt.core.internal.content.java.mappings.JavaMultiRelationshipMapping
+ * @generated
+ */
+ public Adapter createJavaMultiRelationshipMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.ITypeMapping <em>IType Mapping</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.jpt.core.internal.ITypeMapping
+ * @generated
+ */
+ public Adapter createITypeMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.IJavaTypeMapping <em>IJava Type Mapping</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.jpt.core.internal.content.java.IJavaTypeMapping
+ * @generated
+ */
+ public Adapter createIJavaTypeMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IEntity <em>IEntity</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.jpt.core.internal.mappings.IEntity
+ * @generated
+ */
+ public Adapter createIEntityAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IMappedSuperclass <em>IMapped Superclass</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.jpt.core.internal.mappings.IMappedSuperclass
+ * @generated
+ */
+ public Adapter createIMappedSuperclassAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IEmbeddable <em>IEmbeddable</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.jpt.core.internal.mappings.IEmbeddable
+ * @generated
+ */
+ public Adapter createIEmbeddableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IAttributeMapping <em>IAttribute Mapping</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.jpt.core.internal.IAttributeMapping
+ * @generated
+ */
+ public Adapter createIAttributeMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.IJavaAttributeMapping <em>IJava Attribute Mapping</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.jpt.core.internal.content.java.IJavaAttributeMapping
+ * @generated
+ */
+ public Adapter createIJavaAttributeMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IColumnMapping <em>IColumn Mapping</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.jpt.core.internal.mappings.IColumnMapping
+ * @generated
+ */
+ public Adapter createIColumnMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IBasic <em>IBasic</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.jpt.core.internal.mappings.IBasic
+ * @generated
+ */
+ public Adapter createIBasicAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IId <em>IId</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.jpt.core.internal.mappings.IId
+ * @generated
+ */
+ public Adapter createIIdAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.ITransient <em>ITransient</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.jpt.core.internal.mappings.ITransient
+ * @generated
+ */
+ public Adapter createITransientAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IVersion <em>IVersion</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.jpt.core.internal.mappings.IVersion
+ * @generated
+ */
+ public Adapter createIVersionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IEmbeddedId <em>IEmbedded Id</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.jpt.core.internal.mappings.IEmbeddedId
+ * @generated
+ */
+ public Adapter createIEmbeddedIdAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IEmbedded <em>IEmbedded</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.jpt.core.internal.mappings.IEmbedded
+ * @generated
+ */
+ public Adapter createIEmbeddedAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.ITable <em>ITable</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.jpt.core.internal.mappings.ITable
+ * @generated
+ */
+ public Adapter createITableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IColumn <em>IColumn</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.jpt.core.internal.mappings.IColumn
+ * @generated
+ */
+ public Adapter createIColumnAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn <em>IAbstract Join Column</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.jpt.core.internal.mappings.IAbstractJoinColumn
+ * @generated
+ */
+ public Adapter createIAbstractJoinColumnAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IRelationshipMapping <em>IRelationship Mapping</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.jpt.core.internal.mappings.IRelationshipMapping
+ * @generated
+ */
+ public Adapter createIRelationshipMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping <em>IMulti Relationship Mapping</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.jpt.core.internal.mappings.IMultiRelationshipMapping
+ * @generated
+ */
+ public Adapter createIMultiRelationshipMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IOneToMany <em>IOne To Many</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.jpt.core.internal.mappings.IOneToMany
+ * @generated
+ */
+ public Adapter createIOneToManyAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IManyToMany <em>IMany To Many</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.jpt.core.internal.mappings.IManyToMany
+ * @generated
+ */
+ public Adapter createIManyToManyAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IJoinTable <em>IJoin Table</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.jpt.core.internal.mappings.IJoinTable
+ * @generated
+ */
+ public Adapter createIJoinTableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.INamedColumn <em>INamed Column</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.jpt.core.internal.mappings.INamedColumn
+ * @generated
+ */
+ public Adapter createINamedColumnAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IAbstractColumn <em>IAbstract Column</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.jpt.core.internal.mappings.IAbstractColumn
+ * @generated
+ */
+ public Adapter createIAbstractColumnAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IJoinColumn <em>IJoin Column</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.jpt.core.internal.mappings.IJoinColumn
+ * @generated
+ */
+ public Adapter createIJoinColumnAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IOverride <em>IOverride</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.jpt.core.internal.mappings.IOverride
+ * @generated
+ */
+ public Adapter createIOverrideAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride <em>IAttribute Override</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.jpt.core.internal.mappings.IAttributeOverride
+ * @generated
+ */
+ public Adapter createIAttributeOverrideAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IAssociationOverride <em>IAssociation Override</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.jpt.core.internal.mappings.IAssociationOverride
+ * @generated
+ */
+ public Adapter createIAssociationOverrideAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn <em>IDiscriminator Column</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.jpt.core.internal.mappings.IDiscriminatorColumn
+ * @generated
+ */
+ public Adapter createIDiscriminatorColumnAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn <em>IPrimary Key Join Column</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.jpt.core.internal.mappings.IPrimaryKeyJoinColumn
+ * @generated
+ */
+ public Adapter createIPrimaryKeyJoinColumnAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IGeneratedValue <em>IGenerated 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.jpt.core.internal.mappings.IGeneratedValue
+ * @generated
+ */
+ public Adapter createIGeneratedValueAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IGenerator <em>IGenerator</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.jpt.core.internal.mappings.IGenerator
+ * @generated
+ */
+ public Adapter createIGeneratorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator <em>ITable Generator</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.jpt.core.internal.mappings.ITableGenerator
+ * @generated
+ */
+ public Adapter createITableGeneratorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.ISequenceGenerator <em>ISequence Generator</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.jpt.core.internal.mappings.ISequenceGenerator
+ * @generated
+ */
+ public Adapter createISequenceGeneratorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IOrderBy <em>IOrder By</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.jpt.core.internal.mappings.IOrderBy
+ * @generated
+ */
+ public Adapter createIOrderByAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IQuery <em>IQuery</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.jpt.core.internal.mappings.IQuery
+ * @generated
+ */
+ public Adapter createIQueryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.INamedQuery <em>INamed Query</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.jpt.core.internal.mappings.INamedQuery
+ * @generated
+ */
+ public Adapter createINamedQueryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.INamedNativeQuery <em>INamed Native Query</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.jpt.core.internal.mappings.INamedNativeQuery
+ * @generated
+ */
+ public Adapter createINamedNativeQueryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IQueryHint <em>IQuery Hint</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.jpt.core.internal.mappings.IQueryHint
+ * @generated
+ */
+ public Adapter createIQueryHintAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.ISecondaryTable <em>ISecondary Table</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.jpt.core.internal.mappings.ISecondaryTable
+ * @generated
+ */
+ public Adapter createISecondaryTableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping <em>ISingle Relationship Mapping</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.jpt.core.internal.mappings.ISingleRelationshipMapping
+ * @generated
+ */
+ public Adapter createISingleRelationshipMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IManyToOne <em>IMany To One</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.jpt.core.internal.mappings.IManyToOne
+ * @generated
+ */
+ public Adapter createIManyToOneAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IOneToOne <em>IOne To One</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.jpt.core.internal.mappings.IOneToOne
+ * @generated
+ */
+ public Adapter createIOneToOneAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.INonOwningMapping <em>INon Owning Mapping</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.jpt.core.internal.mappings.INonOwningMapping
+ * @generated
+ */
+ public Adapter createINonOwningMappingAdapter() {
+ 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;
+ }
+} //JavaMappingsAdapterFactory
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/util/JpaJavaMappingsSwitch.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/util/JpaJavaMappingsSwitch.java
new file mode 100644
index 0000000000..1dd1c02163
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/mappings/util/JpaJavaMappingsSwitch.java
@@ -0,0 +1,2486 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.mappings.util;
+
+import java.util.List;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.IAttributeMapping;
+import org.eclipse.jpt.core.internal.IJpaEObject;
+import org.eclipse.jpt.core.internal.IJpaSourceObject;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.JpaEObject;
+import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMapping;
+import org.eclipse.jpt.core.internal.content.java.IJavaTypeMapping;
+import org.eclipse.jpt.core.internal.content.java.JavaEObject;
+import org.eclipse.jpt.core.internal.content.java.mappings.AbstractJavaColumn;
+import org.eclipse.jpt.core.internal.content.java.mappings.AbstractJavaTable;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaAbstractQuery;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaAssociationOverride;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaAttributeMapping;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaAttributeOverride;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaBasic;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaColumn;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaDiscriminatorColumn;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbeddable;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbedded;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbeddedId;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaEntity;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaGeneratedValue;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaGenerator;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaId;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaJoinColumn;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaJoinTable;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaManyToMany;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaManyToOne;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaMappedSuperclass;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaMultiRelationshipMapping;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaNamedColumn;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaNamedNativeQuery;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaNamedQuery;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaNullAttributeMapping;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaNullTypeMapping;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaOneToMany;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaOneToOne;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaOrderBy;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaOverride;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaPrimaryKeyJoinColumn;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaQueryHint;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaRelationshipMapping;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaSecondaryTable;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaSequenceGenerator;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaSingleRelationshipMapping;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaTable;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaTableGenerator;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaTransient;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaTypeMapping;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaVersion;
+import org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage;
+import org.eclipse.jpt.core.internal.mappings.IAbstractColumn;
+import org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.IAssociationOverride;
+import org.eclipse.jpt.core.internal.mappings.IAttributeOverride;
+import org.eclipse.jpt.core.internal.mappings.IBasic;
+import org.eclipse.jpt.core.internal.mappings.IColumn;
+import org.eclipse.jpt.core.internal.mappings.IColumnMapping;
+import org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn;
+import org.eclipse.jpt.core.internal.mappings.IEmbeddable;
+import org.eclipse.jpt.core.internal.mappings.IEmbedded;
+import org.eclipse.jpt.core.internal.mappings.IEmbeddedId;
+import org.eclipse.jpt.core.internal.mappings.IEntity;
+import org.eclipse.jpt.core.internal.mappings.IGeneratedValue;
+import org.eclipse.jpt.core.internal.mappings.IGenerator;
+import org.eclipse.jpt.core.internal.mappings.IId;
+import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.IJoinTable;
+import org.eclipse.jpt.core.internal.mappings.IManyToMany;
+import org.eclipse.jpt.core.internal.mappings.IManyToOne;
+import org.eclipse.jpt.core.internal.mappings.IMappedSuperclass;
+import org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.INamedColumn;
+import org.eclipse.jpt.core.internal.mappings.INamedNativeQuery;
+import org.eclipse.jpt.core.internal.mappings.INamedQuery;
+import org.eclipse.jpt.core.internal.mappings.INonOwningMapping;
+import org.eclipse.jpt.core.internal.mappings.IOneToMany;
+import org.eclipse.jpt.core.internal.mappings.IOneToOne;
+import org.eclipse.jpt.core.internal.mappings.IOrderBy;
+import org.eclipse.jpt.core.internal.mappings.IOverride;
+import org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.IQuery;
+import org.eclipse.jpt.core.internal.mappings.IQueryHint;
+import org.eclipse.jpt.core.internal.mappings.IRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.ISecondaryTable;
+import org.eclipse.jpt.core.internal.mappings.ISequenceGenerator;
+import org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.ITable;
+import org.eclipse.jpt.core.internal.mappings.ITableGenerator;
+import org.eclipse.jpt.core.internal.mappings.ITransient;
+import org.eclipse.jpt.core.internal.mappings.IVersion;
+
+/**
+ * <!-- 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.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage
+ * @generated
+ */
+public class JpaJavaMappingsSwitch<T>
+{
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static JpaJavaMappingsPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JpaJavaMappingsSwitch() {
+ if (modelPackage == null) {
+ modelPackage = JpaJavaMappingsPackage.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 T 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 T 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 T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case JpaJavaMappingsPackage.JAVA_TYPE_MAPPING : {
+ JavaTypeMapping javaTypeMapping = (JavaTypeMapping) theEObject;
+ T result = caseJavaTypeMapping(javaTypeMapping);
+ if (result == null)
+ result = caseJavaEObject(javaTypeMapping);
+ if (result == null)
+ result = caseIJavaTypeMapping(javaTypeMapping);
+ if (result == null)
+ result = caseJpaEObject(javaTypeMapping);
+ if (result == null)
+ result = caseIJpaSourceObject(javaTypeMapping);
+ if (result == null)
+ result = caseITypeMapping(javaTypeMapping);
+ if (result == null)
+ result = caseIJpaEObject(javaTypeMapping);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_ENTITY : {
+ JavaEntity javaEntity = (JavaEntity) theEObject;
+ T result = caseJavaEntity(javaEntity);
+ if (result == null)
+ result = caseJavaTypeMapping(javaEntity);
+ if (result == null)
+ result = caseIEntity(javaEntity);
+ if (result == null)
+ result = caseJavaEObject(javaEntity);
+ if (result == null)
+ result = caseIJavaTypeMapping(javaEntity);
+ if (result == null)
+ result = caseITypeMapping(javaEntity);
+ if (result == null)
+ result = caseJpaEObject(javaEntity);
+ if (result == null)
+ result = caseIJpaSourceObject(javaEntity);
+ if (result == null)
+ result = caseIJpaEObject(javaEntity);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_MAPPED_SUPERCLASS : {
+ JavaMappedSuperclass javaMappedSuperclass = (JavaMappedSuperclass) theEObject;
+ T result = caseJavaMappedSuperclass(javaMappedSuperclass);
+ if (result == null)
+ result = caseJavaTypeMapping(javaMappedSuperclass);
+ if (result == null)
+ result = caseIMappedSuperclass(javaMappedSuperclass);
+ if (result == null)
+ result = caseJavaEObject(javaMappedSuperclass);
+ if (result == null)
+ result = caseIJavaTypeMapping(javaMappedSuperclass);
+ if (result == null)
+ result = caseITypeMapping(javaMappedSuperclass);
+ if (result == null)
+ result = caseJpaEObject(javaMappedSuperclass);
+ if (result == null)
+ result = caseIJpaSourceObject(javaMappedSuperclass);
+ if (result == null)
+ result = caseIJpaEObject(javaMappedSuperclass);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_EMBEDDABLE : {
+ JavaEmbeddable javaEmbeddable = (JavaEmbeddable) theEObject;
+ T result = caseJavaEmbeddable(javaEmbeddable);
+ if (result == null)
+ result = caseJavaTypeMapping(javaEmbeddable);
+ if (result == null)
+ result = caseIEmbeddable(javaEmbeddable);
+ if (result == null)
+ result = caseJavaEObject(javaEmbeddable);
+ if (result == null)
+ result = caseIJavaTypeMapping(javaEmbeddable);
+ if (result == null)
+ result = caseITypeMapping(javaEmbeddable);
+ if (result == null)
+ result = caseJpaEObject(javaEmbeddable);
+ if (result == null)
+ result = caseIJpaSourceObject(javaEmbeddable);
+ if (result == null)
+ result = caseIJpaEObject(javaEmbeddable);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_NULL_TYPE_MAPPING : {
+ JavaNullTypeMapping javaNullTypeMapping = (JavaNullTypeMapping) theEObject;
+ T result = caseJavaNullTypeMapping(javaNullTypeMapping);
+ if (result == null)
+ result = caseJavaTypeMapping(javaNullTypeMapping);
+ if (result == null)
+ result = caseJavaEObject(javaNullTypeMapping);
+ if (result == null)
+ result = caseIJavaTypeMapping(javaNullTypeMapping);
+ if (result == null)
+ result = caseJpaEObject(javaNullTypeMapping);
+ if (result == null)
+ result = caseIJpaSourceObject(javaNullTypeMapping);
+ if (result == null)
+ result = caseITypeMapping(javaNullTypeMapping);
+ if (result == null)
+ result = caseIJpaEObject(javaNullTypeMapping);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_ATTRIBUTE_MAPPING : {
+ JavaAttributeMapping javaAttributeMapping = (JavaAttributeMapping) theEObject;
+ T result = caseJavaAttributeMapping(javaAttributeMapping);
+ if (result == null)
+ result = caseJavaEObject(javaAttributeMapping);
+ if (result == null)
+ result = caseIJavaAttributeMapping(javaAttributeMapping);
+ if (result == null)
+ result = caseJpaEObject(javaAttributeMapping);
+ if (result == null)
+ result = caseIJpaSourceObject(javaAttributeMapping);
+ if (result == null)
+ result = caseIAttributeMapping(javaAttributeMapping);
+ if (result == null)
+ result = caseIJpaEObject(javaAttributeMapping);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_BASIC : {
+ JavaBasic javaBasic = (JavaBasic) theEObject;
+ T result = caseJavaBasic(javaBasic);
+ if (result == null)
+ result = caseJavaAttributeMapping(javaBasic);
+ if (result == null)
+ result = caseIBasic(javaBasic);
+ if (result == null)
+ result = caseJavaEObject(javaBasic);
+ if (result == null)
+ result = caseIJavaAttributeMapping(javaBasic);
+ if (result == null)
+ result = caseIAttributeMapping(javaBasic);
+ if (result == null)
+ result = caseIColumnMapping(javaBasic);
+ if (result == null)
+ result = caseJpaEObject(javaBasic);
+ if (result == null)
+ result = caseIJpaSourceObject(javaBasic);
+ if (result == null)
+ result = caseIJpaEObject(javaBasic);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_ID : {
+ JavaId javaId = (JavaId) theEObject;
+ T result = caseJavaId(javaId);
+ if (result == null)
+ result = caseJavaAttributeMapping(javaId);
+ if (result == null)
+ result = caseIId(javaId);
+ if (result == null)
+ result = caseJavaEObject(javaId);
+ if (result == null)
+ result = caseIJavaAttributeMapping(javaId);
+ if (result == null)
+ result = caseIAttributeMapping(javaId);
+ if (result == null)
+ result = caseIColumnMapping(javaId);
+ if (result == null)
+ result = caseJpaEObject(javaId);
+ if (result == null)
+ result = caseIJpaSourceObject(javaId);
+ if (result == null)
+ result = caseIJpaEObject(javaId);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_TRANSIENT : {
+ JavaTransient javaTransient = (JavaTransient) theEObject;
+ T result = caseJavaTransient(javaTransient);
+ if (result == null)
+ result = caseJavaAttributeMapping(javaTransient);
+ if (result == null)
+ result = caseITransient(javaTransient);
+ if (result == null)
+ result = caseJavaEObject(javaTransient);
+ if (result == null)
+ result = caseIJavaAttributeMapping(javaTransient);
+ if (result == null)
+ result = caseIAttributeMapping(javaTransient);
+ if (result == null)
+ result = caseJpaEObject(javaTransient);
+ if (result == null)
+ result = caseIJpaSourceObject(javaTransient);
+ if (result == null)
+ result = caseIJpaEObject(javaTransient);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_VERSION : {
+ JavaVersion javaVersion = (JavaVersion) theEObject;
+ T result = caseJavaVersion(javaVersion);
+ if (result == null)
+ result = caseJavaAttributeMapping(javaVersion);
+ if (result == null)
+ result = caseIVersion(javaVersion);
+ if (result == null)
+ result = caseJavaEObject(javaVersion);
+ if (result == null)
+ result = caseIJavaAttributeMapping(javaVersion);
+ if (result == null)
+ result = caseIAttributeMapping(javaVersion);
+ if (result == null)
+ result = caseIColumnMapping(javaVersion);
+ if (result == null)
+ result = caseJpaEObject(javaVersion);
+ if (result == null)
+ result = caseIJpaSourceObject(javaVersion);
+ if (result == null)
+ result = caseIJpaEObject(javaVersion);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_EMBEDDED_ID : {
+ JavaEmbeddedId javaEmbeddedId = (JavaEmbeddedId) theEObject;
+ T result = caseJavaEmbeddedId(javaEmbeddedId);
+ if (result == null)
+ result = caseJavaAttributeMapping(javaEmbeddedId);
+ if (result == null)
+ result = caseIEmbeddedId(javaEmbeddedId);
+ if (result == null)
+ result = caseJavaEObject(javaEmbeddedId);
+ if (result == null)
+ result = caseIJavaAttributeMapping(javaEmbeddedId);
+ if (result == null)
+ result = caseIAttributeMapping(javaEmbeddedId);
+ if (result == null)
+ result = caseJpaEObject(javaEmbeddedId);
+ if (result == null)
+ result = caseIJpaSourceObject(javaEmbeddedId);
+ if (result == null)
+ result = caseIJpaEObject(javaEmbeddedId);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_EMBEDDED : {
+ JavaEmbedded javaEmbedded = (JavaEmbedded) theEObject;
+ T result = caseJavaEmbedded(javaEmbedded);
+ if (result == null)
+ result = caseJavaAttributeMapping(javaEmbedded);
+ if (result == null)
+ result = caseIEmbedded(javaEmbedded);
+ if (result == null)
+ result = caseJavaEObject(javaEmbedded);
+ if (result == null)
+ result = caseIJavaAttributeMapping(javaEmbedded);
+ if (result == null)
+ result = caseIAttributeMapping(javaEmbedded);
+ if (result == null)
+ result = caseJpaEObject(javaEmbedded);
+ if (result == null)
+ result = caseIJpaSourceObject(javaEmbedded);
+ if (result == null)
+ result = caseIJpaEObject(javaEmbedded);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_RELATIONSHIP_MAPPING : {
+ JavaRelationshipMapping javaRelationshipMapping = (JavaRelationshipMapping) theEObject;
+ T result = caseJavaRelationshipMapping(javaRelationshipMapping);
+ if (result == null)
+ result = caseJavaAttributeMapping(javaRelationshipMapping);
+ if (result == null)
+ result = caseIRelationshipMapping(javaRelationshipMapping);
+ if (result == null)
+ result = caseJavaEObject(javaRelationshipMapping);
+ if (result == null)
+ result = caseIJavaAttributeMapping(javaRelationshipMapping);
+ if (result == null)
+ result = caseIAttributeMapping(javaRelationshipMapping);
+ if (result == null)
+ result = caseJpaEObject(javaRelationshipMapping);
+ if (result == null)
+ result = caseIJpaSourceObject(javaRelationshipMapping);
+ if (result == null)
+ result = caseIJpaEObject(javaRelationshipMapping);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_SINGLE_RELATIONSHIP_MAPPING : {
+ JavaSingleRelationshipMapping javaSingleRelationshipMapping = (JavaSingleRelationshipMapping) theEObject;
+ T result = caseJavaSingleRelationshipMapping(javaSingleRelationshipMapping);
+ if (result == null)
+ result = caseJavaRelationshipMapping(javaSingleRelationshipMapping);
+ if (result == null)
+ result = caseISingleRelationshipMapping(javaSingleRelationshipMapping);
+ if (result == null)
+ result = caseJavaAttributeMapping(javaSingleRelationshipMapping);
+ if (result == null)
+ result = caseIRelationshipMapping(javaSingleRelationshipMapping);
+ if (result == null)
+ result = caseJavaEObject(javaSingleRelationshipMapping);
+ if (result == null)
+ result = caseIJavaAttributeMapping(javaSingleRelationshipMapping);
+ if (result == null)
+ result = caseIAttributeMapping(javaSingleRelationshipMapping);
+ if (result == null)
+ result = caseJpaEObject(javaSingleRelationshipMapping);
+ if (result == null)
+ result = caseIJpaSourceObject(javaSingleRelationshipMapping);
+ if (result == null)
+ result = caseIJpaEObject(javaSingleRelationshipMapping);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_MANY_TO_ONE : {
+ JavaManyToOne javaManyToOne = (JavaManyToOne) theEObject;
+ T result = caseJavaManyToOne(javaManyToOne);
+ if (result == null)
+ result = caseJavaSingleRelationshipMapping(javaManyToOne);
+ if (result == null)
+ result = caseIManyToOne(javaManyToOne);
+ if (result == null)
+ result = caseJavaRelationshipMapping(javaManyToOne);
+ if (result == null)
+ result = caseISingleRelationshipMapping(javaManyToOne);
+ if (result == null)
+ result = caseJavaAttributeMapping(javaManyToOne);
+ if (result == null)
+ result = caseIRelationshipMapping(javaManyToOne);
+ if (result == null)
+ result = caseJavaEObject(javaManyToOne);
+ if (result == null)
+ result = caseIJavaAttributeMapping(javaManyToOne);
+ if (result == null)
+ result = caseIAttributeMapping(javaManyToOne);
+ if (result == null)
+ result = caseJpaEObject(javaManyToOne);
+ if (result == null)
+ result = caseIJpaSourceObject(javaManyToOne);
+ if (result == null)
+ result = caseIJpaEObject(javaManyToOne);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_ONE_TO_ONE : {
+ JavaOneToOne javaOneToOne = (JavaOneToOne) theEObject;
+ T result = caseJavaOneToOne(javaOneToOne);
+ if (result == null)
+ result = caseJavaSingleRelationshipMapping(javaOneToOne);
+ if (result == null)
+ result = caseIOneToOne(javaOneToOne);
+ if (result == null)
+ result = caseJavaRelationshipMapping(javaOneToOne);
+ if (result == null)
+ result = caseISingleRelationshipMapping(javaOneToOne);
+ if (result == null)
+ result = caseINonOwningMapping(javaOneToOne);
+ if (result == null)
+ result = caseJavaAttributeMapping(javaOneToOne);
+ if (result == null)
+ result = caseIRelationshipMapping(javaOneToOne);
+ if (result == null)
+ result = caseJavaEObject(javaOneToOne);
+ if (result == null)
+ result = caseIJavaAttributeMapping(javaOneToOne);
+ if (result == null)
+ result = caseIAttributeMapping(javaOneToOne);
+ if (result == null)
+ result = caseJpaEObject(javaOneToOne);
+ if (result == null)
+ result = caseIJpaSourceObject(javaOneToOne);
+ if (result == null)
+ result = caseIJpaEObject(javaOneToOne);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_MULTI_RELATIONSHIP_MAPPING : {
+ JavaMultiRelationshipMapping javaMultiRelationshipMapping = (JavaMultiRelationshipMapping) theEObject;
+ T result = caseJavaMultiRelationshipMapping(javaMultiRelationshipMapping);
+ if (result == null)
+ result = caseJavaRelationshipMapping(javaMultiRelationshipMapping);
+ if (result == null)
+ result = caseIMultiRelationshipMapping(javaMultiRelationshipMapping);
+ if (result == null)
+ result = caseJavaAttributeMapping(javaMultiRelationshipMapping);
+ if (result == null)
+ result = caseIRelationshipMapping(javaMultiRelationshipMapping);
+ if (result == null)
+ result = caseINonOwningMapping(javaMultiRelationshipMapping);
+ if (result == null)
+ result = caseJavaEObject(javaMultiRelationshipMapping);
+ if (result == null)
+ result = caseIJavaAttributeMapping(javaMultiRelationshipMapping);
+ if (result == null)
+ result = caseIAttributeMapping(javaMultiRelationshipMapping);
+ if (result == null)
+ result = caseJpaEObject(javaMultiRelationshipMapping);
+ if (result == null)
+ result = caseIJpaSourceObject(javaMultiRelationshipMapping);
+ if (result == null)
+ result = caseIJpaEObject(javaMultiRelationshipMapping);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_ONE_TO_MANY : {
+ JavaOneToMany javaOneToMany = (JavaOneToMany) theEObject;
+ T result = caseJavaOneToMany(javaOneToMany);
+ if (result == null)
+ result = caseJavaMultiRelationshipMapping(javaOneToMany);
+ if (result == null)
+ result = caseIOneToMany(javaOneToMany);
+ if (result == null)
+ result = caseJavaRelationshipMapping(javaOneToMany);
+ if (result == null)
+ result = caseIMultiRelationshipMapping(javaOneToMany);
+ if (result == null)
+ result = caseJavaAttributeMapping(javaOneToMany);
+ if (result == null)
+ result = caseIRelationshipMapping(javaOneToMany);
+ if (result == null)
+ result = caseINonOwningMapping(javaOneToMany);
+ if (result == null)
+ result = caseJavaEObject(javaOneToMany);
+ if (result == null)
+ result = caseIJavaAttributeMapping(javaOneToMany);
+ if (result == null)
+ result = caseIAttributeMapping(javaOneToMany);
+ if (result == null)
+ result = caseJpaEObject(javaOneToMany);
+ if (result == null)
+ result = caseIJpaSourceObject(javaOneToMany);
+ if (result == null)
+ result = caseIJpaEObject(javaOneToMany);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_MANY_TO_MANY : {
+ JavaManyToMany javaManyToMany = (JavaManyToMany) theEObject;
+ T result = caseJavaManyToMany(javaManyToMany);
+ if (result == null)
+ result = caseJavaMultiRelationshipMapping(javaManyToMany);
+ if (result == null)
+ result = caseIManyToMany(javaManyToMany);
+ if (result == null)
+ result = caseJavaRelationshipMapping(javaManyToMany);
+ if (result == null)
+ result = caseIMultiRelationshipMapping(javaManyToMany);
+ if (result == null)
+ result = caseJavaAttributeMapping(javaManyToMany);
+ if (result == null)
+ result = caseIRelationshipMapping(javaManyToMany);
+ if (result == null)
+ result = caseINonOwningMapping(javaManyToMany);
+ if (result == null)
+ result = caseJavaEObject(javaManyToMany);
+ if (result == null)
+ result = caseIJavaAttributeMapping(javaManyToMany);
+ if (result == null)
+ result = caseIAttributeMapping(javaManyToMany);
+ if (result == null)
+ result = caseJpaEObject(javaManyToMany);
+ if (result == null)
+ result = caseIJpaSourceObject(javaManyToMany);
+ if (result == null)
+ result = caseIJpaEObject(javaManyToMany);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_NULL_ATTRIBUTE_MAPPING : {
+ JavaNullAttributeMapping javaNullAttributeMapping = (JavaNullAttributeMapping) theEObject;
+ T result = caseJavaNullAttributeMapping(javaNullAttributeMapping);
+ if (result == null)
+ result = caseJavaAttributeMapping(javaNullAttributeMapping);
+ if (result == null)
+ result = caseJavaEObject(javaNullAttributeMapping);
+ if (result == null)
+ result = caseIJavaAttributeMapping(javaNullAttributeMapping);
+ if (result == null)
+ result = caseJpaEObject(javaNullAttributeMapping);
+ if (result == null)
+ result = caseIJpaSourceObject(javaNullAttributeMapping);
+ if (result == null)
+ result = caseIAttributeMapping(javaNullAttributeMapping);
+ if (result == null)
+ result = caseIJpaEObject(javaNullAttributeMapping);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_TABLE : {
+ AbstractJavaTable abstractJavaTable = (AbstractJavaTable) theEObject;
+ T result = caseAbstractJavaTable(abstractJavaTable);
+ if (result == null)
+ result = caseJavaEObject(abstractJavaTable);
+ if (result == null)
+ result = caseITable(abstractJavaTable);
+ if (result == null)
+ result = caseJpaEObject(abstractJavaTable);
+ if (result == null)
+ result = caseIJpaSourceObject(abstractJavaTable);
+ if (result == null)
+ result = caseIJpaEObject(abstractJavaTable);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_TABLE : {
+ JavaTable javaTable = (JavaTable) theEObject;
+ T result = caseJavaTable(javaTable);
+ if (result == null)
+ result = caseAbstractJavaTable(javaTable);
+ if (result == null)
+ result = caseJavaEObject(javaTable);
+ if (result == null)
+ result = caseITable(javaTable);
+ if (result == null)
+ result = caseJpaEObject(javaTable);
+ if (result == null)
+ result = caseIJpaSourceObject(javaTable);
+ if (result == null)
+ result = caseIJpaEObject(javaTable);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_SECONDARY_TABLE : {
+ JavaSecondaryTable javaSecondaryTable = (JavaSecondaryTable) theEObject;
+ T result = caseJavaSecondaryTable(javaSecondaryTable);
+ if (result == null)
+ result = caseAbstractJavaTable(javaSecondaryTable);
+ if (result == null)
+ result = caseISecondaryTable(javaSecondaryTable);
+ if (result == null)
+ result = caseJavaEObject(javaSecondaryTable);
+ if (result == null)
+ result = caseITable(javaSecondaryTable);
+ if (result == null)
+ result = caseJpaEObject(javaSecondaryTable);
+ if (result == null)
+ result = caseIJpaSourceObject(javaSecondaryTable);
+ if (result == null)
+ result = caseIJpaEObject(javaSecondaryTable);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_JOIN_TABLE : {
+ JavaJoinTable javaJoinTable = (JavaJoinTable) theEObject;
+ T result = caseJavaJoinTable(javaJoinTable);
+ if (result == null)
+ result = caseAbstractJavaTable(javaJoinTable);
+ if (result == null)
+ result = caseIJoinTable(javaJoinTable);
+ if (result == null)
+ result = caseJavaEObject(javaJoinTable);
+ if (result == null)
+ result = caseITable(javaJoinTable);
+ if (result == null)
+ result = caseJpaEObject(javaJoinTable);
+ if (result == null)
+ result = caseIJpaSourceObject(javaJoinTable);
+ if (result == null)
+ result = caseIJpaEObject(javaJoinTable);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_NAMED_COLUMN : {
+ JavaNamedColumn javaNamedColumn = (JavaNamedColumn) theEObject;
+ T result = caseJavaNamedColumn(javaNamedColumn);
+ if (result == null)
+ result = caseJavaEObject(javaNamedColumn);
+ if (result == null)
+ result = caseINamedColumn(javaNamedColumn);
+ if (result == null)
+ result = caseJpaEObject(javaNamedColumn);
+ if (result == null)
+ result = caseIJpaSourceObject(javaNamedColumn);
+ if (result == null)
+ result = caseIJpaEObject(javaNamedColumn);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.ABSTRACT_JAVA_COLUMN : {
+ AbstractJavaColumn abstractJavaColumn = (AbstractJavaColumn) theEObject;
+ T result = caseAbstractJavaColumn(abstractJavaColumn);
+ if (result == null)
+ result = caseJavaNamedColumn(abstractJavaColumn);
+ if (result == null)
+ result = caseIAbstractColumn(abstractJavaColumn);
+ if (result == null)
+ result = caseJavaEObject(abstractJavaColumn);
+ if (result == null)
+ result = caseINamedColumn(abstractJavaColumn);
+ if (result == null)
+ result = caseJpaEObject(abstractJavaColumn);
+ if (result == null)
+ result = caseIJpaSourceObject(abstractJavaColumn);
+ if (result == null)
+ result = caseIJpaEObject(abstractJavaColumn);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_COLUMN : {
+ JavaColumn javaColumn = (JavaColumn) theEObject;
+ T result = caseJavaColumn(javaColumn);
+ if (result == null)
+ result = caseAbstractJavaColumn(javaColumn);
+ if (result == null)
+ result = caseIColumn(javaColumn);
+ if (result == null)
+ result = caseJavaNamedColumn(javaColumn);
+ if (result == null)
+ result = caseIAbstractColumn(javaColumn);
+ if (result == null)
+ result = caseJavaEObject(javaColumn);
+ if (result == null)
+ result = caseINamedColumn(javaColumn);
+ if (result == null)
+ result = caseJpaEObject(javaColumn);
+ if (result == null)
+ result = caseIJpaSourceObject(javaColumn);
+ if (result == null)
+ result = caseIJpaEObject(javaColumn);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_JOIN_COLUMN : {
+ JavaJoinColumn javaJoinColumn = (JavaJoinColumn) theEObject;
+ T result = caseJavaJoinColumn(javaJoinColumn);
+ if (result == null)
+ result = caseAbstractJavaColumn(javaJoinColumn);
+ if (result == null)
+ result = caseIJoinColumn(javaJoinColumn);
+ if (result == null)
+ result = caseJavaNamedColumn(javaJoinColumn);
+ if (result == null)
+ result = caseIAbstractColumn(javaJoinColumn);
+ if (result == null)
+ result = caseIAbstractJoinColumn(javaJoinColumn);
+ if (result == null)
+ result = caseJavaEObject(javaJoinColumn);
+ if (result == null)
+ result = caseINamedColumn(javaJoinColumn);
+ if (result == null)
+ result = caseJpaEObject(javaJoinColumn);
+ if (result == null)
+ result = caseIJpaSourceObject(javaJoinColumn);
+ if (result == null)
+ result = caseIJpaEObject(javaJoinColumn);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_OVERRIDE : {
+ JavaOverride javaOverride = (JavaOverride) theEObject;
+ T result = caseJavaOverride(javaOverride);
+ if (result == null)
+ result = caseJavaEObject(javaOverride);
+ if (result == null)
+ result = caseIOverride(javaOverride);
+ if (result == null)
+ result = caseJpaEObject(javaOverride);
+ if (result == null)
+ result = caseIJpaSourceObject(javaOverride);
+ if (result == null)
+ result = caseIJpaEObject(javaOverride);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_ATTRIBUTE_OVERRIDE : {
+ JavaAttributeOverride javaAttributeOverride = (JavaAttributeOverride) theEObject;
+ T result = caseJavaAttributeOverride(javaAttributeOverride);
+ if (result == null)
+ result = caseJavaOverride(javaAttributeOverride);
+ if (result == null)
+ result = caseIAttributeOverride(javaAttributeOverride);
+ if (result == null)
+ result = caseJavaEObject(javaAttributeOverride);
+ if (result == null)
+ result = caseIOverride(javaAttributeOverride);
+ if (result == null)
+ result = caseIColumnMapping(javaAttributeOverride);
+ if (result == null)
+ result = caseJpaEObject(javaAttributeOverride);
+ if (result == null)
+ result = caseIJpaSourceObject(javaAttributeOverride);
+ if (result == null)
+ result = caseIJpaEObject(javaAttributeOverride);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_ASSOCIATION_OVERRIDE : {
+ JavaAssociationOverride javaAssociationOverride = (JavaAssociationOverride) theEObject;
+ T result = caseJavaAssociationOverride(javaAssociationOverride);
+ if (result == null)
+ result = caseJavaOverride(javaAssociationOverride);
+ if (result == null)
+ result = caseIAssociationOverride(javaAssociationOverride);
+ if (result == null)
+ result = caseJavaEObject(javaAssociationOverride);
+ if (result == null)
+ result = caseIOverride(javaAssociationOverride);
+ if (result == null)
+ result = caseJpaEObject(javaAssociationOverride);
+ if (result == null)
+ result = caseIJpaSourceObject(javaAssociationOverride);
+ if (result == null)
+ result = caseIJpaEObject(javaAssociationOverride);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_DISCRIMINATOR_COLUMN : {
+ JavaDiscriminatorColumn javaDiscriminatorColumn = (JavaDiscriminatorColumn) theEObject;
+ T result = caseJavaDiscriminatorColumn(javaDiscriminatorColumn);
+ if (result == null)
+ result = caseJavaEObject(javaDiscriminatorColumn);
+ if (result == null)
+ result = caseIDiscriminatorColumn(javaDiscriminatorColumn);
+ if (result == null)
+ result = caseJpaEObject(javaDiscriminatorColumn);
+ if (result == null)
+ result = caseIJpaSourceObject(javaDiscriminatorColumn);
+ if (result == null)
+ result = caseIJpaEObject(javaDiscriminatorColumn);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_PRIMARY_KEY_JOIN_COLUMN : {
+ JavaPrimaryKeyJoinColumn javaPrimaryKeyJoinColumn = (JavaPrimaryKeyJoinColumn) theEObject;
+ T result = caseJavaPrimaryKeyJoinColumn(javaPrimaryKeyJoinColumn);
+ if (result == null)
+ result = caseJavaEObject(javaPrimaryKeyJoinColumn);
+ if (result == null)
+ result = caseIPrimaryKeyJoinColumn(javaPrimaryKeyJoinColumn);
+ if (result == null)
+ result = caseJpaEObject(javaPrimaryKeyJoinColumn);
+ if (result == null)
+ result = caseIJpaSourceObject(javaPrimaryKeyJoinColumn);
+ if (result == null)
+ result = caseIAbstractJoinColumn(javaPrimaryKeyJoinColumn);
+ if (result == null)
+ result = caseIJpaEObject(javaPrimaryKeyJoinColumn);
+ if (result == null)
+ result = caseINamedColumn(javaPrimaryKeyJoinColumn);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_GENERATED_VALUE : {
+ JavaGeneratedValue javaGeneratedValue = (JavaGeneratedValue) theEObject;
+ T result = caseJavaGeneratedValue(javaGeneratedValue);
+ if (result == null)
+ result = caseJavaEObject(javaGeneratedValue);
+ if (result == null)
+ result = caseIGeneratedValue(javaGeneratedValue);
+ if (result == null)
+ result = caseJpaEObject(javaGeneratedValue);
+ if (result == null)
+ result = caseIJpaSourceObject(javaGeneratedValue);
+ if (result == null)
+ result = caseIJpaEObject(javaGeneratedValue);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_GENERATOR : {
+ JavaGenerator javaGenerator = (JavaGenerator) theEObject;
+ T result = caseJavaGenerator(javaGenerator);
+ if (result == null)
+ result = caseJavaEObject(javaGenerator);
+ if (result == null)
+ result = caseIGenerator(javaGenerator);
+ if (result == null)
+ result = caseJpaEObject(javaGenerator);
+ if (result == null)
+ result = caseIJpaSourceObject(javaGenerator);
+ if (result == null)
+ result = caseIJpaEObject(javaGenerator);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_TABLE_GENERATOR : {
+ JavaTableGenerator javaTableGenerator = (JavaTableGenerator) theEObject;
+ T result = caseJavaTableGenerator(javaTableGenerator);
+ if (result == null)
+ result = caseJavaGenerator(javaTableGenerator);
+ if (result == null)
+ result = caseITableGenerator(javaTableGenerator);
+ if (result == null)
+ result = caseJavaEObject(javaTableGenerator);
+ if (result == null)
+ result = caseIGenerator(javaTableGenerator);
+ if (result == null)
+ result = caseJpaEObject(javaTableGenerator);
+ if (result == null)
+ result = caseIJpaSourceObject(javaTableGenerator);
+ if (result == null)
+ result = caseIJpaEObject(javaTableGenerator);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_SEQUENCE_GENERATOR : {
+ JavaSequenceGenerator javaSequenceGenerator = (JavaSequenceGenerator) theEObject;
+ T result = caseJavaSequenceGenerator(javaSequenceGenerator);
+ if (result == null)
+ result = caseJavaGenerator(javaSequenceGenerator);
+ if (result == null)
+ result = caseISequenceGenerator(javaSequenceGenerator);
+ if (result == null)
+ result = caseJavaEObject(javaSequenceGenerator);
+ if (result == null)
+ result = caseIGenerator(javaSequenceGenerator);
+ if (result == null)
+ result = caseJpaEObject(javaSequenceGenerator);
+ if (result == null)
+ result = caseIJpaSourceObject(javaSequenceGenerator);
+ if (result == null)
+ result = caseIJpaEObject(javaSequenceGenerator);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_ORDER_BY : {
+ JavaOrderBy javaOrderBy = (JavaOrderBy) theEObject;
+ T result = caseJavaOrderBy(javaOrderBy);
+ if (result == null)
+ result = caseJavaEObject(javaOrderBy);
+ if (result == null)
+ result = caseIOrderBy(javaOrderBy);
+ if (result == null)
+ result = caseJpaEObject(javaOrderBy);
+ if (result == null)
+ result = caseIJpaSourceObject(javaOrderBy);
+ if (result == null)
+ result = caseIJpaEObject(javaOrderBy);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_ABSTRACT_QUERY : {
+ JavaAbstractQuery javaAbstractQuery = (JavaAbstractQuery) theEObject;
+ T result = caseJavaAbstractQuery(javaAbstractQuery);
+ if (result == null)
+ result = caseJavaEObject(javaAbstractQuery);
+ if (result == null)
+ result = caseIQuery(javaAbstractQuery);
+ if (result == null)
+ result = caseJpaEObject(javaAbstractQuery);
+ if (result == null)
+ result = caseIJpaSourceObject(javaAbstractQuery);
+ if (result == null)
+ result = caseIJpaEObject(javaAbstractQuery);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_NAMED_QUERY : {
+ JavaNamedQuery javaNamedQuery = (JavaNamedQuery) theEObject;
+ T result = caseJavaNamedQuery(javaNamedQuery);
+ if (result == null)
+ result = caseJavaAbstractQuery(javaNamedQuery);
+ if (result == null)
+ result = caseINamedQuery(javaNamedQuery);
+ if (result == null)
+ result = caseJavaEObject(javaNamedQuery);
+ if (result == null)
+ result = caseIQuery(javaNamedQuery);
+ if (result == null)
+ result = caseIJpaSourceObject(javaNamedQuery);
+ if (result == null)
+ result = caseJpaEObject(javaNamedQuery);
+ if (result == null)
+ result = caseIJpaEObject(javaNamedQuery);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_NAMED_NATIVE_QUERY : {
+ JavaNamedNativeQuery javaNamedNativeQuery = (JavaNamedNativeQuery) theEObject;
+ T result = caseJavaNamedNativeQuery(javaNamedNativeQuery);
+ if (result == null)
+ result = caseJavaAbstractQuery(javaNamedNativeQuery);
+ if (result == null)
+ result = caseINamedNativeQuery(javaNamedNativeQuery);
+ if (result == null)
+ result = caseJavaEObject(javaNamedNativeQuery);
+ if (result == null)
+ result = caseIQuery(javaNamedNativeQuery);
+ if (result == null)
+ result = caseIJpaSourceObject(javaNamedNativeQuery);
+ if (result == null)
+ result = caseJpaEObject(javaNamedNativeQuery);
+ if (result == null)
+ result = caseIJpaEObject(javaNamedNativeQuery);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaMappingsPackage.JAVA_QUERY_HINT : {
+ JavaQueryHint javaQueryHint = (JavaQueryHint) theEObject;
+ T result = caseJavaQueryHint(javaQueryHint);
+ if (result == null)
+ result = caseJavaEObject(javaQueryHint);
+ if (result == null)
+ result = caseIQueryHint(javaQueryHint);
+ if (result == null)
+ result = caseJpaEObject(javaQueryHint);
+ if (result == null)
+ result = caseIJpaSourceObject(javaQueryHint);
+ if (result == null)
+ result = caseIJpaEObject(javaQueryHint);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ default :
+ return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Entity</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 interpretting the object as an instance of '<em>Java Entity</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaEntity(JavaEntity object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Mapped Superclass</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 interpretting the object as an instance of '<em>Java Mapped Superclass</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaMappedSuperclass(JavaMappedSuperclass object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Embeddable</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 interpretting the object as an instance of '<em>Java Embeddable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaEmbeddable(JavaEmbeddable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Null Type Mapping</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 interpretting the object as an instance of '<em>Java Null Type Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaNullTypeMapping(JavaNullTypeMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Null Attribute Mapping</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 interpretting the object as an instance of '<em>Java Null Attribute Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaNullAttributeMapping(JavaNullAttributeMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Basic</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 interpretting the object as an instance of '<em>Java Basic</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaBasic(JavaBasic object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Id</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 interpretting the object as an instance of '<em>Java Id</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaId(JavaId object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Transient</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 interpretting the object as an instance of '<em>Java Transient</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaTransient(JavaTransient object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Version</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 interpretting the object as an instance of '<em>Java Version</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaVersion(JavaVersion object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Embedded Id</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 interpretting the object as an instance of '<em>Java Embedded Id</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaEmbeddedId(JavaEmbeddedId object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Embedded</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 interpretting the object as an instance of '<em>Java Embedded</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaEmbedded(JavaEmbedded object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Attribute Mapping</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 interpretting the object as an instance of '<em>Java Attribute Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaAttributeMapping(JavaAttributeMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Type Mapping</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 interpretting the object as an instance of '<em>Java Type Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaTypeMapping(JavaTypeMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Abstract Java Table</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 interpretting the object as an instance of '<em>Abstract Java Table</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAbstractJavaTable(AbstractJavaTable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Table</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 interpretting the object as an instance of '<em>Java Table</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaTable(JavaTable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Column</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 interpretting the object as an instance of '<em>Java Column</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaColumn(JavaColumn object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Relationship Mapping</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 interpretting the object as an instance of '<em>Java Relationship Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaRelationshipMapping(JavaRelationshipMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Single Relationship Mapping</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 interpretting the object as an instance of '<em>Java Single Relationship Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaSingleRelationshipMapping(JavaSingleRelationshipMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java One To Many</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 interpretting the object as an instance of '<em>Java One To Many</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaOneToMany(JavaOneToMany object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Many To Many</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 interpretting the object as an instance of '<em>Java Many To Many</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaManyToMany(JavaManyToMany object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Join Table</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 interpretting the object as an instance of '<em>Java Join Table</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaJoinTable(JavaJoinTable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Named Column</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 interpretting the object as an instance of '<em>Java Named Column</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaNamedColumn(JavaNamedColumn object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Abstract Java Column</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 interpretting the object as an instance of '<em>Abstract Java Column</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAbstractJavaColumn(AbstractJavaColumn object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Join Column</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 interpretting the object as an instance of '<em>Java Join Column</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaJoinColumn(JavaJoinColumn object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Override</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 interpretting the object as an instance of '<em>Java Override</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaOverride(JavaOverride object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Attribute Override</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 interpretting the object as an instance of '<em>Java Attribute Override</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaAttributeOverride(JavaAttributeOverride object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Association Override</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 interpretting the object as an instance of '<em>Java Association Override</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaAssociationOverride(JavaAssociationOverride object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Discriminator Column</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 interpretting the object as an instance of '<em>Java Discriminator Column</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaDiscriminatorColumn(JavaDiscriminatorColumn object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Primary Key Join Column</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 interpretting the object as an instance of '<em>Java Primary Key Join Column</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaPrimaryKeyJoinColumn(JavaPrimaryKeyJoinColumn object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Generated 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 interpretting the object as an instance of '<em>Java Generated Value</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaGeneratedValue(JavaGeneratedValue object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Generator</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 interpretting the object as an instance of '<em>Java Generator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaGenerator(JavaGenerator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Table Generator</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 interpretting the object as an instance of '<em>Java Table Generator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaTableGenerator(JavaTableGenerator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Sequence Generator</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 interpretting the object as an instance of '<em>Java Sequence Generator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaSequenceGenerator(JavaSequenceGenerator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Order By</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 interpretting the object as an instance of '<em>Java Order By</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaOrderBy(JavaOrderBy object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Abstract Query</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 interpretting the object as an instance of '<em>Java Abstract Query</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaAbstractQuery(JavaAbstractQuery object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Named Query</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 interpretting the object as an instance of '<em>Java Named Query</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaNamedQuery(JavaNamedQuery object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Named Native Query</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 interpretting the object as an instance of '<em>Java Named Native Query</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaNamedNativeQuery(JavaNamedNativeQuery object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Query Hint</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 interpretting the object as an instance of '<em>Java Query Hint</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaQueryHint(JavaQueryHint object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Secondary Table</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 interpretting the object as an instance of '<em>Java Secondary Table</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaSecondaryTable(JavaSecondaryTable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IJpa EObject</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 interpretting the object as an instance of '<em>IJpa EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIJpaEObject(IJpaEObject object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Jpa EObject</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 interpretting the object as an instance of '<em>Jpa EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJpaEObject(JpaEObject object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IJpa Source Object</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 interpretting the object as an instance of '<em>IJpa Source Object</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIJpaSourceObject(IJpaSourceObject object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java EObject</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 interpretting the object as an instance of '<em>Java EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaEObject(JavaEObject object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Many To One</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 interpretting the object as an instance of '<em>Java Many To One</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaManyToOne(JavaManyToOne object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java One To One</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 interpretting the object as an instance of '<em>Java One To One</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaOneToOne(JavaOneToOne object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Multi Relationship Mapping</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 interpretting the object as an instance of '<em>Java Multi Relationship Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaMultiRelationshipMapping(JavaMultiRelationshipMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IType Mapping</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 interpretting the object as an instance of '<em>IType Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseITypeMapping(ITypeMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IJava Type Mapping</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 interpretting the object as an instance of '<em>IJava Type Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIJavaTypeMapping(IJavaTypeMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IEntity</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 interpretting the object as an instance of '<em>IEntity</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIEntity(IEntity object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IMapped Superclass</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 interpretting the object as an instance of '<em>IMapped Superclass</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIMappedSuperclass(IMappedSuperclass object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IEmbeddable</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 interpretting the object as an instance of '<em>IEmbeddable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIEmbeddable(IEmbeddable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IAttribute Mapping</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 interpretting the object as an instance of '<em>IAttribute Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIAttributeMapping(IAttributeMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IJava Attribute Mapping</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 interpretting the object as an instance of '<em>IJava Attribute Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIJavaAttributeMapping(IJavaAttributeMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IColumn Mapping</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 interpretting the object as an instance of '<em>IColumn Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIColumnMapping(IColumnMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IBasic</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 interpretting the object as an instance of '<em>IBasic</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIBasic(IBasic object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IId</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 interpretting the object as an instance of '<em>IId</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIId(IId object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>ITransient</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 interpretting the object as an instance of '<em>ITransient</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseITransient(ITransient object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IVersion</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 interpretting the object as an instance of '<em>IVersion</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIVersion(IVersion object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IEmbedded Id</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 interpretting the object as an instance of '<em>IEmbedded Id</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIEmbeddedId(IEmbeddedId object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IEmbedded</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 interpretting the object as an instance of '<em>IEmbedded</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIEmbedded(IEmbedded object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>ITable</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 interpretting the object as an instance of '<em>ITable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseITable(ITable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IColumn</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 interpretting the object as an instance of '<em>IColumn</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIColumn(IColumn object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IAbstract Join Column</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 interpretting the object as an instance of '<em>IAbstract Join Column</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIAbstractJoinColumn(IAbstractJoinColumn object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IRelationship Mapping</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 interpretting the object as an instance of '<em>IRelationship Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIRelationshipMapping(IRelationshipMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IMulti Relationship Mapping</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 interpretting the object as an instance of '<em>IMulti Relationship Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIMultiRelationshipMapping(IMultiRelationshipMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IOne To Many</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 interpretting the object as an instance of '<em>IOne To Many</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIOneToMany(IOneToMany object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IMany To Many</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 interpretting the object as an instance of '<em>IMany To Many</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIManyToMany(IManyToMany object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IJoin Table</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 interpretting the object as an instance of '<em>IJoin Table</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIJoinTable(IJoinTable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>INamed Column</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 interpretting the object as an instance of '<em>INamed Column</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseINamedColumn(INamedColumn object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IAbstract Column</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 interpretting the object as an instance of '<em>IAbstract Column</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIAbstractColumn(IAbstractColumn object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IJoin Column</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 interpretting the object as an instance of '<em>IJoin Column</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIJoinColumn(IJoinColumn object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IOverride</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 interpretting the object as an instance of '<em>IOverride</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIOverride(IOverride object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IAttribute Override</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 interpretting the object as an instance of '<em>IAttribute Override</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIAttributeOverride(IAttributeOverride object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IAssociation Override</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 interpretting the object as an instance of '<em>IAssociation Override</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIAssociationOverride(IAssociationOverride object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IDiscriminator Column</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 interpretting the object as an instance of '<em>IDiscriminator Column</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIDiscriminatorColumn(IDiscriminatorColumn object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IPrimary Key Join Column</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 interpretting the object as an instance of '<em>IPrimary Key Join Column</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIPrimaryKeyJoinColumn(IPrimaryKeyJoinColumn object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IGenerated 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 interpretting the object as an instance of '<em>IGenerated Value</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIGeneratedValue(IGeneratedValue object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IGenerator</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 interpretting the object as an instance of '<em>IGenerator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIGenerator(IGenerator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>ITable Generator</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 interpretting the object as an instance of '<em>ITable Generator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseITableGenerator(ITableGenerator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>ISequence Generator</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 interpretting the object as an instance of '<em>ISequence Generator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseISequenceGenerator(ISequenceGenerator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IOrder By</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 interpretting the object as an instance of '<em>IOrder By</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIOrderBy(IOrderBy object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IQuery</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 interpretting the object as an instance of '<em>IQuery</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIQuery(IQuery object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>INamed Query</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 interpretting the object as an instance of '<em>INamed Query</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseINamedQuery(INamedQuery object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>INamed Native Query</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 interpretting the object as an instance of '<em>INamed Native Query</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseINamedNativeQuery(INamedNativeQuery object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IQuery Hint</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 interpretting the object as an instance of '<em>IQuery Hint</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIQueryHint(IQueryHint object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>ISecondary Table</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 interpretting the object as an instance of '<em>ISecondary Table</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseISecondaryTable(ISecondaryTable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>ISingle Relationship Mapping</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 interpretting the object as an instance of '<em>ISingle Relationship Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseISingleRelationshipMapping(ISingleRelationshipMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IMany To One</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 interpretting the object as an instance of '<em>IMany To One</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIManyToOne(IManyToOne object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IOne To One</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 interpretting the object as an instance of '<em>IOne To One</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIOneToOne(IOneToOne object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>INon Owning Mapping</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 interpretting the object as an instance of '<em>INon Owning Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseINonOwningMapping(INonOwningMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting 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 interpretting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ public T defaultCase(EObject object) {
+ return null;
+ }
+} //JavaMappingsSwitch
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/util/JpaJavaAdapterFactory.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/util/JpaJavaAdapterFactory.java
new file mode 100644
index 0000000000..2fd383cf89
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/util/JpaJavaAdapterFactory.java
@@ -0,0 +1,404 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.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.jpt.core.internal.IAttributeMapping;
+import org.eclipse.jpt.core.internal.IJpaContentNode;
+import org.eclipse.jpt.core.internal.IJpaEObject;
+import org.eclipse.jpt.core.internal.IJpaRootContentNode;
+import org.eclipse.jpt.core.internal.IJpaSourceObject;
+import org.eclipse.jpt.core.internal.IPersistentAttribute;
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.JpaEObject;
+import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMapping;
+import org.eclipse.jpt.core.internal.content.java.IJavaTypeMapping;
+import org.eclipse.jpt.core.internal.content.java.JavaEObject;
+import org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute;
+import org.eclipse.jpt.core.internal.content.java.JavaPersistentType;
+import org.eclipse.jpt.core.internal.content.java.JpaCompilationUnit;
+import org.eclipse.jpt.core.internal.content.java.JpaJavaPackage;
+
+/**
+ * <!-- 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.jpt.core.internal.content.java.JpaJavaPackage
+ * @generated
+ */
+public class JpaJavaAdapterFactory extends AdapterFactoryImpl
+{
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static JpaJavaPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JpaJavaAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = JpaJavaPackage.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 JpaJavaSwitch<Adapter> modelSwitch = new JpaJavaSwitch<Adapter>() {
+ @Override
+ public Adapter caseJavaEObject(JavaEObject object) {
+ return createJavaEObjectAdapter();
+ }
+
+ @Override
+ public Adapter caseJpaCompilationUnit(JpaCompilationUnit object) {
+ return createJpaCompilationUnitAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaPersistentType(JavaPersistentType object) {
+ return createJavaPersistentTypeAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaPersistentAttribute(JavaPersistentAttribute object) {
+ return createJavaPersistentAttributeAdapter();
+ }
+
+ @Override
+ public Adapter caseIJavaTypeMapping(IJavaTypeMapping object) {
+ return createIJavaTypeMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseIJavaAttributeMapping(IJavaAttributeMapping object) {
+ return createIJavaAttributeMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseIJpaEObject(IJpaEObject object) {
+ return createIJpaEObjectAdapter();
+ }
+
+ @Override
+ public Adapter caseJpaEObject(JpaEObject object) {
+ return createJpaEObjectAdapter();
+ }
+
+ @Override
+ public Adapter caseIJpaSourceObject(IJpaSourceObject object) {
+ return createIJpaSourceObjectAdapter();
+ }
+
+ @Override
+ public Adapter caseIJpaContentNode(IJpaContentNode object) {
+ return createIJpaContentNodeAdapter();
+ }
+
+ @Override
+ public Adapter caseIJpaRootContentNode(IJpaRootContentNode object) {
+ return createIJpaRootContentNodeAdapter();
+ }
+
+ @Override
+ public Adapter caseIPersistentType(IPersistentType object) {
+ return createIPersistentTypeAdapter();
+ }
+
+ @Override
+ public Adapter caseIPersistentAttribute(IPersistentAttribute object) {
+ return createIPersistentAttributeAdapter();
+ }
+
+ @Override
+ public Adapter caseITypeMapping(ITypeMapping object) {
+ return createITypeMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseIAttributeMapping(IAttributeMapping object) {
+ return createIAttributeMappingAdapter();
+ }
+
+ @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.jpt.core.internal.content.java.IJavaAttributeMapping <em>IJava Attribute Mapping</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.jpt.core.internal.content.java.IJavaAttributeMapping
+ * @generated
+ */
+ public Adapter createIJavaAttributeMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.IJavaTypeMapping <em>IJava Type Mapping</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.jpt.core.internal.content.java.IJavaTypeMapping
+ * @generated
+ */
+ public Adapter createIJavaTypeMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.JavaEObject <em>Java EObject</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.jpt.core.internal.content.java.JavaEObject
+ * @generated
+ */
+ public Adapter createJavaEObjectAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.JpaCompilationUnit <em>Jpa Compilation Unit</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.jpt.core.internal.content.java.JpaCompilationUnit
+ * @generated
+ */
+ public Adapter createJpaCompilationUnitAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.JavaPersistentType <em>Java Persistent Type</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.jpt.core.internal.content.java.JavaPersistentType
+ * @generated
+ */
+ public Adapter createJavaPersistentTypeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute <em>Java Persistent Attribute</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.jpt.core.internal.content.java.JavaPersistentAttribute
+ * @generated
+ */
+ public Adapter createJavaPersistentAttributeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IJpaEObject <em>IJpa EObject</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.jpt.core.internal.IJpaEObject
+ * @generated
+ */
+ public Adapter createIJpaEObjectAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IJpaSourceObject <em>IJpa Source Object</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.jpt.core.internal.IJpaSourceObject
+ * @generated
+ */
+ public Adapter createIJpaSourceObjectAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IJpaContentNode <em>IJpa Content 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.jpt.core.internal.IJpaContentNode
+ * @generated
+ */
+ public Adapter createIJpaContentNodeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IJpaRootContentNode <em>IJpa Root Content 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.jpt.core.internal.IJpaRootContentNode
+ * @generated
+ */
+ public Adapter createIJpaRootContentNodeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IPersistentType <em>IPersistent Type</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.jpt.core.internal.IPersistentType
+ * @generated
+ */
+ public Adapter createIPersistentTypeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IPersistentAttribute <em>IPersistent Attribute</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.jpt.core.internal.IPersistentAttribute
+ * @generated
+ */
+ public Adapter createIPersistentAttributeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IAttributeMapping <em>IAttribute Mapping</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.jpt.core.internal.IAttributeMapping
+ * @generated
+ */
+ public Adapter createIAttributeMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.ITypeMapping <em>IType Mapping</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.jpt.core.internal.ITypeMapping
+ * @generated
+ */
+ public Adapter createITypeMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.JpaEObject <em>Jpa EObject</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.jpt.core.internal.JpaEObject
+ * @generated
+ */
+ public Adapter createJpaEObjectAdapter() {
+ 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;
+ }
+} //JpaCoreJavaAdapterFactory
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/util/JpaJavaSwitch.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/util/JpaJavaSwitch.java
new file mode 100644
index 0000000000..0a303952f0
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/java/util/JpaJavaSwitch.java
@@ -0,0 +1,444 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.java.util;
+
+import java.util.List;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.IAttributeMapping;
+import org.eclipse.jpt.core.internal.IJpaContentNode;
+import org.eclipse.jpt.core.internal.IJpaEObject;
+import org.eclipse.jpt.core.internal.IJpaRootContentNode;
+import org.eclipse.jpt.core.internal.IJpaSourceObject;
+import org.eclipse.jpt.core.internal.IPersistentAttribute;
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.JpaEObject;
+import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMapping;
+import org.eclipse.jpt.core.internal.content.java.IJavaTypeMapping;
+import org.eclipse.jpt.core.internal.content.java.JavaEObject;
+import org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute;
+import org.eclipse.jpt.core.internal.content.java.JavaPersistentType;
+import org.eclipse.jpt.core.internal.content.java.JpaCompilationUnit;
+import org.eclipse.jpt.core.internal.content.java.JpaJavaPackage;
+
+/**
+ * <!-- 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.jpt.core.internal.content.java.JpaJavaPackage
+ * @generated
+ */
+public class JpaJavaSwitch<T>
+{
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static JpaJavaPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JpaJavaSwitch() {
+ if (modelPackage == null) {
+ modelPackage = JpaJavaPackage.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 T 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 T 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 T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case JpaJavaPackage.JAVA_EOBJECT : {
+ JavaEObject javaEObject = (JavaEObject) theEObject;
+ T result = caseJavaEObject(javaEObject);
+ if (result == null)
+ result = caseJpaEObject(javaEObject);
+ if (result == null)
+ result = caseIJpaSourceObject(javaEObject);
+ if (result == null)
+ result = caseIJpaEObject(javaEObject);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaPackage.JPA_COMPILATION_UNIT : {
+ JpaCompilationUnit jpaCompilationUnit = (JpaCompilationUnit) theEObject;
+ T result = caseJpaCompilationUnit(jpaCompilationUnit);
+ if (result == null)
+ result = caseJavaEObject(jpaCompilationUnit);
+ if (result == null)
+ result = caseIJpaRootContentNode(jpaCompilationUnit);
+ if (result == null)
+ result = caseJpaEObject(jpaCompilationUnit);
+ if (result == null)
+ result = caseIJpaSourceObject(jpaCompilationUnit);
+ if (result == null)
+ result = caseIJpaContentNode(jpaCompilationUnit);
+ if (result == null)
+ result = caseIJpaEObject(jpaCompilationUnit);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaPackage.JAVA_PERSISTENT_TYPE : {
+ JavaPersistentType javaPersistentType = (JavaPersistentType) theEObject;
+ T result = caseJavaPersistentType(javaPersistentType);
+ if (result == null)
+ result = caseJavaEObject(javaPersistentType);
+ if (result == null)
+ result = caseIPersistentType(javaPersistentType);
+ if (result == null)
+ result = caseJpaEObject(javaPersistentType);
+ if (result == null)
+ result = caseIJpaSourceObject(javaPersistentType);
+ if (result == null)
+ result = caseIJpaContentNode(javaPersistentType);
+ if (result == null)
+ result = caseIJpaEObject(javaPersistentType);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaPackage.JAVA_PERSISTENT_ATTRIBUTE : {
+ JavaPersistentAttribute javaPersistentAttribute = (JavaPersistentAttribute) theEObject;
+ T result = caseJavaPersistentAttribute(javaPersistentAttribute);
+ if (result == null)
+ result = caseJavaEObject(javaPersistentAttribute);
+ if (result == null)
+ result = caseIPersistentAttribute(javaPersistentAttribute);
+ if (result == null)
+ result = caseJpaEObject(javaPersistentAttribute);
+ if (result == null)
+ result = caseIJpaSourceObject(javaPersistentAttribute);
+ if (result == null)
+ result = caseIJpaContentNode(javaPersistentAttribute);
+ if (result == null)
+ result = caseIJpaEObject(javaPersistentAttribute);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaPackage.IJAVA_TYPE_MAPPING : {
+ IJavaTypeMapping iJavaTypeMapping = (IJavaTypeMapping) theEObject;
+ T result = caseIJavaTypeMapping(iJavaTypeMapping);
+ if (result == null)
+ result = caseITypeMapping(iJavaTypeMapping);
+ if (result == null)
+ result = caseIJpaSourceObject(iJavaTypeMapping);
+ if (result == null)
+ result = caseIJpaEObject(iJavaTypeMapping);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaJavaPackage.IJAVA_ATTRIBUTE_MAPPING : {
+ IJavaAttributeMapping iJavaAttributeMapping = (IJavaAttributeMapping) theEObject;
+ T result = caseIJavaAttributeMapping(iJavaAttributeMapping);
+ if (result == null)
+ result = caseIAttributeMapping(iJavaAttributeMapping);
+ if (result == null)
+ result = caseIJpaSourceObject(iJavaAttributeMapping);
+ if (result == null)
+ result = caseIJpaEObject(iJavaAttributeMapping);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ default :
+ return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IJava Attribute Mapping</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 interpretting the object as an instance of '<em>IJava Attribute Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIJavaAttributeMapping(IJavaAttributeMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IJava Type Mapping</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 interpretting the object as an instance of '<em>IJava Type Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIJavaTypeMapping(IJavaTypeMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java EObject</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 interpretting the object as an instance of '<em>Java EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaEObject(JavaEObject object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Jpa Compilation Unit</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 interpretting the object as an instance of '<em>Jpa Compilation Unit</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJpaCompilationUnit(JpaCompilationUnit object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Persistent Type</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 interpretting the object as an instance of '<em>Java Persistent Type</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaPersistentType(JavaPersistentType object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Persistent Attribute</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 interpretting the object as an instance of '<em>Java Persistent Attribute</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaPersistentAttribute(JavaPersistentAttribute object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IJpa EObject</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 interpretting the object as an instance of '<em>IJpa EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIJpaEObject(IJpaEObject object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IJpa Source Object</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 interpretting the object as an instance of '<em>IJpa Source Object</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIJpaSourceObject(IJpaSourceObject object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IJpa Content 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 interpretting the object as an instance of '<em>IJpa Content Node</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIJpaContentNode(IJpaContentNode object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IJpa Root Content 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 interpretting the object as an instance of '<em>IJpa Root Content Node</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIJpaRootContentNode(IJpaRootContentNode object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IPersistent Type</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 interpretting the object as an instance of '<em>IPersistent Type</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIPersistentType(IPersistentType object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IPersistent Attribute</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 interpretting the object as an instance of '<em>IPersistent Attribute</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIPersistentAttribute(IPersistentAttribute object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IAttribute Mapping</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 interpretting the object as an instance of '<em>IAttribute Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIAttributeMapping(IAttributeMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IType Mapping</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 interpretting the object as an instance of '<em>IType Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseITypeMapping(ITypeMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Jpa EObject</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 interpretting the object as an instance of '<em>Jpa EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJpaEObject(JpaEObject object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting 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 interpretting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ public T defaultCase(EObject object) {
+ return null;
+ }
+} //JpaCoreJavaSwitch
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/AbstractXmlColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/AbstractXmlColumn.java
new file mode 100644
index 0000000000..d9d9d6c750
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/AbstractXmlColumn.java
@@ -0,0 +1,929 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.content.orm.resource.OrmXmlMapper;
+import org.eclipse.jpt.core.internal.emfutility.DOMUtilities;
+import org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean;
+import org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean;
+import org.eclipse.jpt.core.internal.mappings.IAbstractColumn;
+import org.eclipse.jpt.core.internal.mappings.INamedColumn;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.db.internal.Column;
+import org.eclipse.jpt.db.internal.ConnectionProfile;
+import org.eclipse.jpt.db.internal.Table;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Abstract Xml Column</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn#getUniqueForXml <em>Unique For Xml</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn#getNullableForXml <em>Nullable For Xml</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn#getInsertableForXml <em>Insertable For Xml</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn#getUpdatableForXml <em>Updatable For Xml</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn#getSpecifiedTableForXml <em>Specified Table For Xml</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getAbstractXmlColumn()
+ * @model kind="class" abstract="true"
+ * @generated
+ */
+public abstract class AbstractXmlColumn extends AbstractXmlNamedColumn
+ implements IAbstractColumn
+{
+ /**
+ * The default value of the '{@link #getUnique() <em>Unique</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getUnique()
+ * @generated
+ * @ordered
+ */
+ protected static final DefaultFalseBoolean UNIQUE_EDEFAULT = DefaultFalseBoolean.DEFAULT;
+
+ /**
+ * The cached value of the '{@link #getUnique() <em>Unique</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getUnique()
+ * @generated
+ * @ordered
+ */
+ protected DefaultFalseBoolean unique = UNIQUE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getNullable() <em>Nullable</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNullable()
+ * @generated
+ * @ordered
+ */
+ protected static final DefaultTrueBoolean NULLABLE_EDEFAULT = DefaultTrueBoolean.DEFAULT;
+
+ /**
+ * The cached value of the '{@link #getNullable() <em>Nullable</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNullable()
+ * @generated
+ * @ordered
+ */
+ protected DefaultTrueBoolean nullable = NULLABLE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getInsertable() <em>Insertable</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getInsertable()
+ * @generated
+ * @ordered
+ */
+ protected static final DefaultTrueBoolean INSERTABLE_EDEFAULT = DefaultTrueBoolean.DEFAULT;
+
+ /**
+ * The cached value of the '{@link #getInsertable() <em>Insertable</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getInsertable()
+ * @generated
+ * @ordered
+ */
+ protected DefaultTrueBoolean insertable = INSERTABLE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getUpdatable() <em>Updatable</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getUpdatable()
+ * @generated
+ * @ordered
+ */
+ protected static final DefaultTrueBoolean UPDATABLE_EDEFAULT = DefaultTrueBoolean.DEFAULT;
+
+ /**
+ * The cached value of the '{@link #getUpdatable() <em>Updatable</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getUpdatable()
+ * @generated
+ * @ordered
+ */
+ protected DefaultTrueBoolean updatable = UPDATABLE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getTable() <em>Table</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTable()
+ * @generated
+ * @ordered
+ */
+ protected static final String TABLE_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getSpecifiedTable() <em>Specified Table</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedTable()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_TABLE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedTable() <em>Specified Table</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedTable()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedTable = SPECIFIED_TABLE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultTable() <em>Default Table</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultTable()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_TABLE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultTable() <em>Default Table</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultTable()
+ * @generated
+ * @ordered
+ */
+ protected String defaultTable = DEFAULT_TABLE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getUniqueForXml() <em>Unique For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getUniqueForXml()
+ * @generated
+ * @ordered
+ */
+ protected static final DefaultFalseBoolean UNIQUE_FOR_XML_EDEFAULT = DefaultFalseBoolean.DEFAULT;
+
+ /**
+ * The default value of the '{@link #getNullableForXml() <em>Nullable For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNullableForXml()
+ * @generated
+ * @ordered
+ */
+ protected static final DefaultTrueBoolean NULLABLE_FOR_XML_EDEFAULT = DefaultTrueBoolean.DEFAULT;
+
+ /**
+ * The default value of the '{@link #getInsertableForXml() <em>Insertable For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getInsertableForXml()
+ * @generated
+ * @ordered
+ */
+ protected static final DefaultTrueBoolean INSERTABLE_FOR_XML_EDEFAULT = DefaultTrueBoolean.DEFAULT;
+
+ /**
+ * The default value of the '{@link #getUpdatableForXml() <em>Updatable For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getUpdatableForXml()
+ * @generated
+ * @ordered
+ */
+ protected static final DefaultTrueBoolean UPDATABLE_FOR_XML_EDEFAULT = DefaultTrueBoolean.DEFAULT;
+
+ /**
+ * The default value of the '{@link #getSpecifiedTableForXml() <em>Specified Table For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedTableForXml()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_TABLE_FOR_XML_EDEFAULT = null;
+
+ protected AbstractXmlColumn() {
+ throw new UnsupportedOperationException("Use AbstractXmlColumn(IColumn.Owner) instead.");
+ }
+
+ protected AbstractXmlColumn(INamedColumn.Owner owner) {
+ super(owner);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.ABSTRACT_XML_COLUMN;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Unique</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Unique</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Unique</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean
+ * @see #setUnique(DefaultFalseBoolean)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIAbstractColumn_Unique()
+ * @model
+ * @generated
+ */
+ public DefaultFalseBoolean getUnique() {
+ return unique;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn#getUnique <em>Unique</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Unique</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean
+ * @see #getUnique()
+ * @generated
+ */
+ public void setUniqueGen(DefaultFalseBoolean newUnique) {
+ DefaultFalseBoolean oldUnique = unique;
+ unique = newUnique == null ? UNIQUE_EDEFAULT : newUnique;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.ABSTRACT_XML_COLUMN__UNIQUE, oldUnique, unique));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Nullable</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Nullable</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Nullable</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean
+ * @see #setNullable(DefaultTrueBoolean)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIAbstractColumn_Nullable()
+ * @model
+ * @generated
+ */
+ public DefaultTrueBoolean getNullable() {
+ return nullable;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn#getNullable <em>Nullable</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Nullable</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean
+ * @see #getNullable()
+ * @generated
+ */
+ public void setNullableGen(DefaultTrueBoolean newNullable) {
+ DefaultTrueBoolean oldNullable = nullable;
+ nullable = newNullable == null ? NULLABLE_EDEFAULT : newNullable;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.ABSTRACT_XML_COLUMN__NULLABLE, oldNullable, nullable));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Insertable</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Insertable</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Insertable</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean
+ * @see #setInsertable(DefaultTrueBoolean)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIAbstractColumn_Insertable()
+ * @model
+ * @generated
+ */
+ public DefaultTrueBoolean getInsertable() {
+ return insertable;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn#getInsertable <em>Insertable</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Insertable</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean
+ * @see #getInsertable()
+ * @generated
+ */
+ public void setInsertableGen(DefaultTrueBoolean newInsertable) {
+ DefaultTrueBoolean oldInsertable = insertable;
+ insertable = newInsertable == null ? INSERTABLE_EDEFAULT : newInsertable;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.ABSTRACT_XML_COLUMN__INSERTABLE, oldInsertable, insertable));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Updatable</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Updatable</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Updatable</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean
+ * @see #setUpdatable(DefaultTrueBoolean)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIAbstractColumn_Updatable()
+ * @model
+ * @generated
+ */
+ public DefaultTrueBoolean getUpdatable() {
+ return updatable;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn#getUpdatable <em>Updatable</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Updatable</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean
+ * @see #getUpdatable()
+ * @generated
+ */
+ public void setUpdatableGen(DefaultTrueBoolean newUpdatable) {
+ DefaultTrueBoolean oldUpdatable = updatable;
+ updatable = newUpdatable == null ? UPDATABLE_EDEFAULT : newUpdatable;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.ABSTRACT_XML_COLUMN__UPDATABLE, oldUpdatable, updatable));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Table</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Table</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIAbstractColumn_Table()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated NOT
+ */
+ public String getTable() {
+ return (this.getSpecifiedTable() == null) ? getDefaultTable() : this.getSpecifiedTable();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Table</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Table</em>' attribute.
+ * @see #setSpecifiedTable(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIAbstractColumn_SpecifiedTable()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedTable() {
+ return specifiedTable;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn#getSpecifiedTable <em>Specified Table</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Table</em>' attribute.
+ * @see #getSpecifiedTable()
+ * @generated
+ */
+ public void setSpecifiedTableGen(String newSpecifiedTable) {
+ String oldSpecifiedTable = specifiedTable;
+ specifiedTable = newSpecifiedTable;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.ABSTRACT_XML_COLUMN__SPECIFIED_TABLE, oldSpecifiedTable, specifiedTable));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Table</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Table</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIAbstractColumn_DefaultTable()
+ * @model changeable="false"
+ * @generated
+ */
+ public String getDefaultTable() {
+ return defaultTable;
+ }
+
+ protected void setDefaultTable(String newDefaultTable) {
+ String oldDefaultTable = this.defaultTable;
+ this.defaultTable = newDefaultTable;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_COLUMN__DEFAULT_TABLE, oldDefaultTable, this.defaultTable));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Unique For Xml</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Unique For Xml</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Unique For Xml</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean
+ * @see #setUniqueForXml(DefaultFalseBoolean)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getAbstractXmlColumn_UniqueForXml()
+ * @model volatile="true"
+ * @generated NOT
+ */
+ public DefaultFalseBoolean getUniqueForXml() {
+ return getUnique();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn#getUniqueForXml <em>Unique For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Unique For Xml</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean
+ * @see #getUniqueForXml()
+ * @generated NOT
+ */
+ public void setUniqueForXml(DefaultFalseBoolean newUniqueForXml) {
+ setUniqueGen(newUniqueForXml);
+ if (eNotificationRequired())
+ //pass in oldValue of null because we don't store the value from the xml, see super.eNotify()
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.ABSTRACT_XML_COLUMN__UNIQUE_FOR_XML, null, newUniqueForXml));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Nullable For Xml</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Nullable For Xml</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Nullable For Xml</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean
+ * @see #setNullableForXml(DefaultTrueBoolean)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getAbstractXmlColumn_NullableForXml()
+ * @model volatile="true"
+ * @generated NOT
+ */
+ public DefaultTrueBoolean getNullableForXml() {
+ return getNullable();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn#getNullableForXml <em>Nullable For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Nullable For Xml</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean
+ * @see #getNullableForXml()
+ * @generated NOT
+ */
+ public void setNullableForXml(DefaultTrueBoolean newNullableForXml) {
+ setNullableGen(newNullableForXml);
+ if (eNotificationRequired())
+ //pass in oldValue of null because we don't store the value from the xml, see super.eNotify()
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.ABSTRACT_XML_COLUMN__NULLABLE_FOR_XML, null, newNullableForXml));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Insertable For Xml</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Insertable For Xml</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Insertable For Xml</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean
+ * @see #setInsertableForXml(DefaultTrueBoolean)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getAbstractXmlColumn_InsertableForXml()
+ * @model volatile="true"
+ * @generated NOT
+ */
+ public DefaultTrueBoolean getInsertableForXml() {
+ return getInsertable();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn#getInsertableForXml <em>Insertable For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Insertable For Xml</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean
+ * @see #getInsertableForXml()
+ * @generated NOT
+ */
+ public void setInsertableForXml(DefaultTrueBoolean newInsertableForXml) {
+ setInsertableGen(newInsertableForXml);
+ if (eNotificationRequired())
+ //pass in oldValue of null because we don't store the value from the xml, see super.eNotify()
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.ABSTRACT_XML_COLUMN__INSERTABLE_FOR_XML, null, newInsertableForXml));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Updatable For Xml</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Updatable For Xml</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Updatable For Xml</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean
+ * @see #setUpdatableForXml(DefaultTrueBoolean)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getAbstractXmlColumn_UpdatableForXml()
+ * @model volatile="true"
+ * @generated NOT
+ */
+ public DefaultTrueBoolean getUpdatableForXml() {
+ return getUpdatable();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn#getUpdatableForXml <em>Updatable For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Updatable For Xml</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean
+ * @see #getUpdatableForXml()
+ * @generated NOT
+ */
+ public void setUpdatableForXml(DefaultTrueBoolean newUpdatableForXml) {
+ setUpdatableGen(newUpdatableForXml);
+ if (eNotificationRequired())
+ //pass in oldValue of null because we don't store the value from the xml, see super.eNotify()
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.ABSTRACT_XML_COLUMN__UPDATABLE_FOR_XML, null, newUpdatableForXml));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Column Definition For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Column Definition For Xml</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Column Definition For Xml</em>' attribute.
+ * @see #setColumnDefinitionForXml(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getAbstractXmlColumn_ColumnDefinitionForXml()
+ * @model volatile="true"
+ * @generated NOT
+ */
+ public String getColumnDefinitionForXml() {
+ return getColumnDefinition();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Table For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Table For Xml</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Table For Xml</em>' attribute.
+ * @see #setSpecifiedTableForXml(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getAbstractXmlColumn_SpecifiedTableForXml()
+ * @model volatile="true"
+ * @generated NOT
+ */
+ public String getSpecifiedTableForXml() {
+ return getSpecifiedTable();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn#getSpecifiedTableForXml <em>Specified Table For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Table For Xml</em>' attribute.
+ * @see #getSpecifiedTableForXml()
+ * @generated NOT
+ */
+ public void setSpecifiedTableForXml(String newSpecifiedTableForXml) {
+ setSpecifiedTableGen(newSpecifiedTableForXml);
+ if (eNotificationRequired())
+ //pass in oldValue of null because we don't store the value from the xml, see super.eNotify()
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_COLUMN__SPECIFIED_TABLE_FOR_XML, newSpecifiedTableForXml + " ", newSpecifiedTableForXml));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case OrmPackage.ABSTRACT_XML_COLUMN__UNIQUE :
+ return getUnique();
+ case OrmPackage.ABSTRACT_XML_COLUMN__NULLABLE :
+ return getNullable();
+ case OrmPackage.ABSTRACT_XML_COLUMN__INSERTABLE :
+ return getInsertable();
+ case OrmPackage.ABSTRACT_XML_COLUMN__UPDATABLE :
+ return getUpdatable();
+ case OrmPackage.ABSTRACT_XML_COLUMN__TABLE :
+ return getTable();
+ case OrmPackage.ABSTRACT_XML_COLUMN__SPECIFIED_TABLE :
+ return getSpecifiedTable();
+ case OrmPackage.ABSTRACT_XML_COLUMN__DEFAULT_TABLE :
+ return getDefaultTable();
+ case OrmPackage.ABSTRACT_XML_COLUMN__UNIQUE_FOR_XML :
+ return getUniqueForXml();
+ case OrmPackage.ABSTRACT_XML_COLUMN__NULLABLE_FOR_XML :
+ return getNullableForXml();
+ case OrmPackage.ABSTRACT_XML_COLUMN__INSERTABLE_FOR_XML :
+ return getInsertableForXml();
+ case OrmPackage.ABSTRACT_XML_COLUMN__UPDATABLE_FOR_XML :
+ return getUpdatableForXml();
+ case OrmPackage.ABSTRACT_XML_COLUMN__SPECIFIED_TABLE_FOR_XML :
+ return getSpecifiedTableForXml();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case OrmPackage.ABSTRACT_XML_COLUMN__UNIQUE :
+ setUnique((DefaultFalseBoolean) newValue);
+ return;
+ case OrmPackage.ABSTRACT_XML_COLUMN__NULLABLE :
+ setNullable((DefaultTrueBoolean) newValue);
+ return;
+ case OrmPackage.ABSTRACT_XML_COLUMN__INSERTABLE :
+ setInsertable((DefaultTrueBoolean) newValue);
+ return;
+ case OrmPackage.ABSTRACT_XML_COLUMN__UPDATABLE :
+ setUpdatable((DefaultTrueBoolean) newValue);
+ return;
+ case OrmPackage.ABSTRACT_XML_COLUMN__SPECIFIED_TABLE :
+ setSpecifiedTable((String) newValue);
+ return;
+ case OrmPackage.ABSTRACT_XML_COLUMN__UNIQUE_FOR_XML :
+ setUniqueForXml((DefaultFalseBoolean) newValue);
+ return;
+ case OrmPackage.ABSTRACT_XML_COLUMN__NULLABLE_FOR_XML :
+ setNullableForXml((DefaultTrueBoolean) newValue);
+ return;
+ case OrmPackage.ABSTRACT_XML_COLUMN__INSERTABLE_FOR_XML :
+ setInsertableForXml((DefaultTrueBoolean) newValue);
+ return;
+ case OrmPackage.ABSTRACT_XML_COLUMN__UPDATABLE_FOR_XML :
+ setUpdatableForXml((DefaultTrueBoolean) newValue);
+ return;
+ case OrmPackage.ABSTRACT_XML_COLUMN__SPECIFIED_TABLE_FOR_XML :
+ setSpecifiedTableForXml((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case OrmPackage.ABSTRACT_XML_COLUMN__UNIQUE :
+ setUnique(UNIQUE_EDEFAULT);
+ return;
+ case OrmPackage.ABSTRACT_XML_COLUMN__NULLABLE :
+ setNullable(NULLABLE_EDEFAULT);
+ return;
+ case OrmPackage.ABSTRACT_XML_COLUMN__INSERTABLE :
+ setInsertable(INSERTABLE_EDEFAULT);
+ return;
+ case OrmPackage.ABSTRACT_XML_COLUMN__UPDATABLE :
+ setUpdatable(UPDATABLE_EDEFAULT);
+ return;
+ case OrmPackage.ABSTRACT_XML_COLUMN__SPECIFIED_TABLE :
+ setSpecifiedTable(SPECIFIED_TABLE_EDEFAULT);
+ return;
+ case OrmPackage.ABSTRACT_XML_COLUMN__UNIQUE_FOR_XML :
+ setUniqueForXml(UNIQUE_FOR_XML_EDEFAULT);
+ return;
+ case OrmPackage.ABSTRACT_XML_COLUMN__NULLABLE_FOR_XML :
+ setNullableForXml(NULLABLE_FOR_XML_EDEFAULT);
+ return;
+ case OrmPackage.ABSTRACT_XML_COLUMN__INSERTABLE_FOR_XML :
+ setInsertableForXml(INSERTABLE_FOR_XML_EDEFAULT);
+ return;
+ case OrmPackage.ABSTRACT_XML_COLUMN__UPDATABLE_FOR_XML :
+ setUpdatableForXml(UPDATABLE_FOR_XML_EDEFAULT);
+ return;
+ case OrmPackage.ABSTRACT_XML_COLUMN__SPECIFIED_TABLE_FOR_XML :
+ setSpecifiedTableForXml(SPECIFIED_TABLE_FOR_XML_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.ABSTRACT_XML_COLUMN__UNIQUE :
+ return unique != UNIQUE_EDEFAULT;
+ case OrmPackage.ABSTRACT_XML_COLUMN__NULLABLE :
+ return nullable != NULLABLE_EDEFAULT;
+ case OrmPackage.ABSTRACT_XML_COLUMN__INSERTABLE :
+ return insertable != INSERTABLE_EDEFAULT;
+ case OrmPackage.ABSTRACT_XML_COLUMN__UPDATABLE :
+ return updatable != UPDATABLE_EDEFAULT;
+ case OrmPackage.ABSTRACT_XML_COLUMN__TABLE :
+ return TABLE_EDEFAULT == null ? getTable() != null : !TABLE_EDEFAULT.equals(getTable());
+ case OrmPackage.ABSTRACT_XML_COLUMN__SPECIFIED_TABLE :
+ return SPECIFIED_TABLE_EDEFAULT == null ? specifiedTable != null : !SPECIFIED_TABLE_EDEFAULT.equals(specifiedTable);
+ case OrmPackage.ABSTRACT_XML_COLUMN__DEFAULT_TABLE :
+ return DEFAULT_TABLE_EDEFAULT == null ? defaultTable != null : !DEFAULT_TABLE_EDEFAULT.equals(defaultTable);
+ case OrmPackage.ABSTRACT_XML_COLUMN__UNIQUE_FOR_XML :
+ return getUniqueForXml() != UNIQUE_FOR_XML_EDEFAULT;
+ case OrmPackage.ABSTRACT_XML_COLUMN__NULLABLE_FOR_XML :
+ return getNullableForXml() != NULLABLE_FOR_XML_EDEFAULT;
+ case OrmPackage.ABSTRACT_XML_COLUMN__INSERTABLE_FOR_XML :
+ return getInsertableForXml() != INSERTABLE_FOR_XML_EDEFAULT;
+ case OrmPackage.ABSTRACT_XML_COLUMN__UPDATABLE_FOR_XML :
+ return getUpdatableForXml() != UPDATABLE_FOR_XML_EDEFAULT;
+ case OrmPackage.ABSTRACT_XML_COLUMN__SPECIFIED_TABLE_FOR_XML :
+ return SPECIFIED_TABLE_FOR_XML_EDEFAULT == null ? getSpecifiedTableForXml() != null : !SPECIFIED_TABLE_FOR_XML_EDEFAULT.equals(getSpecifiedTableForXml());
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IAbstractColumn.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.ABSTRACT_XML_COLUMN__UNIQUE :
+ return JpaCoreMappingsPackage.IABSTRACT_COLUMN__UNIQUE;
+ case OrmPackage.ABSTRACT_XML_COLUMN__NULLABLE :
+ return JpaCoreMappingsPackage.IABSTRACT_COLUMN__NULLABLE;
+ case OrmPackage.ABSTRACT_XML_COLUMN__INSERTABLE :
+ return JpaCoreMappingsPackage.IABSTRACT_COLUMN__INSERTABLE;
+ case OrmPackage.ABSTRACT_XML_COLUMN__UPDATABLE :
+ return JpaCoreMappingsPackage.IABSTRACT_COLUMN__UPDATABLE;
+ case OrmPackage.ABSTRACT_XML_COLUMN__TABLE :
+ return JpaCoreMappingsPackage.IABSTRACT_COLUMN__TABLE;
+ case OrmPackage.ABSTRACT_XML_COLUMN__SPECIFIED_TABLE :
+ return JpaCoreMappingsPackage.IABSTRACT_COLUMN__SPECIFIED_TABLE;
+ case OrmPackage.ABSTRACT_XML_COLUMN__DEFAULT_TABLE :
+ return JpaCoreMappingsPackage.IABSTRACT_COLUMN__DEFAULT_TABLE;
+ 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 == IAbstractColumn.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IABSTRACT_COLUMN__UNIQUE :
+ return OrmPackage.ABSTRACT_XML_COLUMN__UNIQUE;
+ case JpaCoreMappingsPackage.IABSTRACT_COLUMN__NULLABLE :
+ return OrmPackage.ABSTRACT_XML_COLUMN__NULLABLE;
+ case JpaCoreMappingsPackage.IABSTRACT_COLUMN__INSERTABLE :
+ return OrmPackage.ABSTRACT_XML_COLUMN__INSERTABLE;
+ case JpaCoreMappingsPackage.IABSTRACT_COLUMN__UPDATABLE :
+ return OrmPackage.ABSTRACT_XML_COLUMN__UPDATABLE;
+ case JpaCoreMappingsPackage.IABSTRACT_COLUMN__TABLE :
+ return OrmPackage.ABSTRACT_XML_COLUMN__TABLE;
+ case JpaCoreMappingsPackage.IABSTRACT_COLUMN__SPECIFIED_TABLE :
+ return OrmPackage.ABSTRACT_XML_COLUMN__SPECIFIED_TABLE;
+ case JpaCoreMappingsPackage.IABSTRACT_COLUMN__DEFAULT_TABLE :
+ return OrmPackage.ABSTRACT_XML_COLUMN__DEFAULT_TABLE;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (unique: ");
+ result.append(unique);
+ result.append(", nullable: ");
+ result.append(nullable);
+ result.append(", insertable: ");
+ result.append(insertable);
+ result.append(", updatable: ");
+ result.append(updatable);
+ result.append(", specifiedTable: ");
+ result.append(specifiedTable);
+ result.append(", defaultTable: ");
+ result.append(defaultTable);
+ result.append(')');
+ return result.toString();
+ }
+
+ public Table dbTable() {
+ return getOwner().dbTable(getTable());
+ }
+
+ public Column dbColumn() {
+ Table table = this.dbTable();
+ return (table == null) ? null : table.columnNamed(getName());
+ }
+
+ public boolean isConnected() {
+ ConnectionProfile connectionProfile = getJpaProject().connectionProfile();
+ return connectionProfile != null && connectionProfile.isConnected();
+ }
+
+ public boolean isResolved() {
+ return dbColumn() != null;
+ }
+
+ public ITextRange getTableTextRange() {
+ if (node == null) {
+ return owner.getTextRange();
+ }
+ IDOMNode tableNode = (IDOMNode) DOMUtilities.getChildAttributeNode(node, OrmXmlMapper.ENTITY__TABLE);
+ return (tableNode == null) ? getTextRange() : getTextRange(tableNode);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/AbstractXmlNamedColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/AbstractXmlNamedColumn.java
new file mode 100644
index 0000000000..d12c7259d8
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/AbstractXmlNamedColumn.java
@@ -0,0 +1,451 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.XmlEObject;
+import org.eclipse.jpt.core.internal.content.orm.resource.OrmXmlMapper;
+import org.eclipse.jpt.core.internal.emfutility.DOMUtilities;
+import org.eclipse.jpt.core.internal.mappings.INamedColumn;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.core.internal.platform.BaseJpaPlatform;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Abstract Xml Named Column</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlNamedColumn#getSpecifiedNameForXml <em>Specified Name For Xml</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlNamedColumn#getColumnDefinitionForXml <em>Column Definition For Xml</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getAbstractXmlNamedColumn()
+ * @model kind="class" abstract="true"
+ * @generated
+ */
+public abstract class AbstractXmlNamedColumn extends XmlEObject
+ implements INamedColumn
+{
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getSpecifiedName() <em>Specified Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedName()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedName() <em>Specified Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedName()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedName = SPECIFIED_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultName() <em>Default Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultName()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultName() <em>Default Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultName()
+ * @generated
+ * @ordered
+ */
+ protected String defaultName = DEFAULT_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getColumnDefinition() <em>Column Definition</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getColumnDefinition()
+ * @generated
+ * @ordered
+ */
+ protected static final String COLUMN_DEFINITION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getColumnDefinition() <em>Column Definition</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getColumnDefinition()
+ * @generated
+ * @ordered
+ */
+ protected String columnDefinition = COLUMN_DEFINITION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getSpecifiedNameForXml() <em>Specified Name For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedNameForXml()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_NAME_FOR_XML_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getColumnDefinitionForXml() <em>Column Definition For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getColumnDefinitionForXml()
+ * @generated
+ * @ordered
+ */
+ protected static final String COLUMN_DEFINITION_FOR_XML_EDEFAULT = null;
+
+ protected final INamedColumn.Owner owner;
+
+ protected AbstractXmlNamedColumn() {
+ throw new UnsupportedOperationException("Use AbstractXmlNamedColumn(INamedColumn.Owner) instead.");
+ }
+
+ protected AbstractXmlNamedColumn(INamedColumn.Owner owner) {
+ super();
+ this.owner = owner;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.ABSTRACT_XML_NAMED_COLUMN;
+ }
+
+ public String getName() {
+ return (this.getSpecifiedName() == null) ? getDefaultName() : this.getSpecifiedName();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Name</em>' attribute.
+ * @see #setSpecifiedName(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getINamedColumn_SpecifiedName()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedName() {
+ return specifiedName;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlNamedColumn#getSpecifiedName <em>Specified Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Name</em>' attribute.
+ * @see #getSpecifiedName()
+ * @generated
+ */
+ public void setSpecifiedNameGen(String newSpecifiedName) {
+ String oldSpecifiedName = specifiedName;
+ specifiedName = newSpecifiedName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.ABSTRACT_XML_NAMED_COLUMN__SPECIFIED_NAME, oldSpecifiedName, specifiedName));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getINamedColumn_DefaultName()
+ * @model changeable="false"
+ * @generated
+ */
+ public String getDefaultName() {
+ return defaultName;
+ }
+
+ protected void setDefaultName(String newDefaultName) {
+ String oldDefaultName = this.defaultName;
+ this.defaultName = newDefaultName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.ABSTRACT_XML_COLUMN__DEFAULT_NAME, oldDefaultName, this.defaultName));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Column Definition</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Column Definition</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Column Definition</em>' attribute.
+ * @see #setColumnDefinition(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getINamedColumn_ColumnDefinition()
+ * @model
+ * @generated
+ */
+ public String getColumnDefinition() {
+ return columnDefinition;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlNamedColumn#getColumnDefinition <em>Column Definition</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Column Definition</em>' attribute.
+ * @see #getColumnDefinition()
+ * @generated
+ */
+ public void setColumnDefinitionGen(String newColumnDefinition) {
+ String oldColumnDefinition = columnDefinition;
+ columnDefinition = newColumnDefinition;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.ABSTRACT_XML_NAMED_COLUMN__COLUMN_DEFINITION, oldColumnDefinition, columnDefinition));
+ }
+
+ public String getSpecifiedNameForXml() {
+ return getSpecifiedName();
+ }
+
+ public void setSpecifiedNameForXml(String newSpecifiedNameForXml) {
+ setSpecifiedNameGen(newSpecifiedNameForXml);
+ if (eNotificationRequired())
+ //make sure oldValue different from newValue because we don't store the value from the xml, see super.eNotify()
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.ABSTRACT_XML_NAMED_COLUMN__SPECIFIED_NAME_FOR_XML, newSpecifiedNameForXml + " ", newSpecifiedNameForXml));
+ }
+
+ public String getColumnDefinitionForXml() {
+ return getColumnDefinition();
+ }
+
+ public void setColumnDefinitionForXml(String newColumnDefinitionForXml) {
+ setColumnDefinitionGen(newColumnDefinitionForXml);
+ if (eNotificationRequired())
+ //pass in oldValue of null because we don't store the value from the xml, see super.eNotify()
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.ABSTRACT_XML_COLUMN__COLUMN_DEFINITION_FOR_XML, newColumnDefinitionForXml + " ", newColumnDefinitionForXml));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case OrmPackage.ABSTRACT_XML_NAMED_COLUMN__NAME :
+ return getName();
+ case OrmPackage.ABSTRACT_XML_NAMED_COLUMN__SPECIFIED_NAME :
+ return getSpecifiedName();
+ case OrmPackage.ABSTRACT_XML_NAMED_COLUMN__DEFAULT_NAME :
+ return getDefaultName();
+ case OrmPackage.ABSTRACT_XML_NAMED_COLUMN__COLUMN_DEFINITION :
+ return getColumnDefinition();
+ case OrmPackage.ABSTRACT_XML_NAMED_COLUMN__SPECIFIED_NAME_FOR_XML :
+ return getSpecifiedNameForXml();
+ case OrmPackage.ABSTRACT_XML_NAMED_COLUMN__COLUMN_DEFINITION_FOR_XML :
+ return getColumnDefinitionForXml();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case OrmPackage.ABSTRACT_XML_NAMED_COLUMN__SPECIFIED_NAME :
+ setSpecifiedName((String) newValue);
+ return;
+ case OrmPackage.ABSTRACT_XML_NAMED_COLUMN__COLUMN_DEFINITION :
+ setColumnDefinition((String) newValue);
+ return;
+ case OrmPackage.ABSTRACT_XML_NAMED_COLUMN__SPECIFIED_NAME_FOR_XML :
+ setSpecifiedNameForXml((String) newValue);
+ return;
+ case OrmPackage.ABSTRACT_XML_NAMED_COLUMN__COLUMN_DEFINITION_FOR_XML :
+ setColumnDefinitionForXml((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case OrmPackage.ABSTRACT_XML_NAMED_COLUMN__SPECIFIED_NAME :
+ setSpecifiedName(SPECIFIED_NAME_EDEFAULT);
+ return;
+ case OrmPackage.ABSTRACT_XML_NAMED_COLUMN__COLUMN_DEFINITION :
+ setColumnDefinition(COLUMN_DEFINITION_EDEFAULT);
+ return;
+ case OrmPackage.ABSTRACT_XML_NAMED_COLUMN__SPECIFIED_NAME_FOR_XML :
+ setSpecifiedNameForXml(SPECIFIED_NAME_FOR_XML_EDEFAULT);
+ return;
+ case OrmPackage.ABSTRACT_XML_NAMED_COLUMN__COLUMN_DEFINITION_FOR_XML :
+ setColumnDefinitionForXml(COLUMN_DEFINITION_FOR_XML_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.ABSTRACT_XML_NAMED_COLUMN__NAME :
+ return NAME_EDEFAULT == null ? getName() != null : !NAME_EDEFAULT.equals(getName());
+ case OrmPackage.ABSTRACT_XML_NAMED_COLUMN__SPECIFIED_NAME :
+ return SPECIFIED_NAME_EDEFAULT == null ? specifiedName != null : !SPECIFIED_NAME_EDEFAULT.equals(specifiedName);
+ case OrmPackage.ABSTRACT_XML_NAMED_COLUMN__DEFAULT_NAME :
+ return DEFAULT_NAME_EDEFAULT == null ? defaultName != null : !DEFAULT_NAME_EDEFAULT.equals(defaultName);
+ case OrmPackage.ABSTRACT_XML_NAMED_COLUMN__COLUMN_DEFINITION :
+ return COLUMN_DEFINITION_EDEFAULT == null ? columnDefinition != null : !COLUMN_DEFINITION_EDEFAULT.equals(columnDefinition);
+ case OrmPackage.ABSTRACT_XML_NAMED_COLUMN__SPECIFIED_NAME_FOR_XML :
+ return SPECIFIED_NAME_FOR_XML_EDEFAULT == null ? getSpecifiedNameForXml() != null : !SPECIFIED_NAME_FOR_XML_EDEFAULT.equals(getSpecifiedNameForXml());
+ case OrmPackage.ABSTRACT_XML_NAMED_COLUMN__COLUMN_DEFINITION_FOR_XML :
+ return COLUMN_DEFINITION_FOR_XML_EDEFAULT == null ? getColumnDefinitionForXml() != null : !COLUMN_DEFINITION_FOR_XML_EDEFAULT.equals(getColumnDefinitionForXml());
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == INamedColumn.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.ABSTRACT_XML_NAMED_COLUMN__NAME :
+ return JpaCoreMappingsPackage.INAMED_COLUMN__NAME;
+ case OrmPackage.ABSTRACT_XML_NAMED_COLUMN__SPECIFIED_NAME :
+ return JpaCoreMappingsPackage.INAMED_COLUMN__SPECIFIED_NAME;
+ case OrmPackage.ABSTRACT_XML_NAMED_COLUMN__DEFAULT_NAME :
+ return JpaCoreMappingsPackage.INAMED_COLUMN__DEFAULT_NAME;
+ case OrmPackage.ABSTRACT_XML_NAMED_COLUMN__COLUMN_DEFINITION :
+ return JpaCoreMappingsPackage.INAMED_COLUMN__COLUMN_DEFINITION;
+ 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 == INamedColumn.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.INAMED_COLUMN__NAME :
+ return OrmPackage.ABSTRACT_XML_NAMED_COLUMN__NAME;
+ case JpaCoreMappingsPackage.INAMED_COLUMN__SPECIFIED_NAME :
+ return OrmPackage.ABSTRACT_XML_NAMED_COLUMN__SPECIFIED_NAME;
+ case JpaCoreMappingsPackage.INAMED_COLUMN__DEFAULT_NAME :
+ return OrmPackage.ABSTRACT_XML_NAMED_COLUMN__DEFAULT_NAME;
+ case JpaCoreMappingsPackage.INAMED_COLUMN__COLUMN_DEFINITION :
+ return OrmPackage.ABSTRACT_XML_NAMED_COLUMN__COLUMN_DEFINITION;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (specifiedName: ");
+ result.append(specifiedName);
+ result.append(", defaultName: ");
+ result.append(defaultName);
+ result.append(", columnDefinition: ");
+ result.append(columnDefinition);
+ result.append(')');
+ return result.toString();
+ }
+
+ public INamedColumn.Owner getOwner() {
+ return owner;
+ }
+
+ public ITextRange getNameTextRange() {
+ if (node == null) {
+ return owner.getTextRange();
+ }
+ IDOMNode nameNode = (IDOMNode) DOMUtilities.getChildAttributeNode(node, OrmXmlMapper.NAME);
+ return (nameNode == null) ? getTextRange() : getTextRange(nameNode);
+ }
+
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ setDefaultName((String) defaultsContext.getDefault(BaseJpaPlatform.DEFAULT_COLUMN_NAME_KEY));
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/AbstractXmlQuery.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/AbstractXmlQuery.java
new file mode 100644
index 0000000000..3a9952ee60
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/AbstractXmlQuery.java
@@ -0,0 +1,353 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+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.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.jpt.core.internal.XmlEObject;
+import org.eclipse.jpt.core.internal.mappings.IQuery;
+import org.eclipse.jpt.core.internal.mappings.IQueryHint;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Abstract Xml Query</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getAbstractXmlQuery()
+ * @model kind="class" abstract="true"
+ * @generated
+ */
+public abstract class AbstractXmlQuery extends XmlEObject implements IQuery
+{
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getQuery() <em>Query</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getQuery()
+ * @generated
+ * @ordered
+ */
+ protected static final String QUERY_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getQuery() <em>Query</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getQuery()
+ * @generated
+ * @ordered
+ */
+ protected String query = QUERY_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getHints() <em>Hints</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getHints()
+ * @generated
+ * @ordered
+ */
+ protected EList<IQueryHint> hints;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AbstractXmlQuery() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.ABSTRACT_XML_QUERY;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIQuery_Name()
+ * @model
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlQuery#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.ABSTRACT_XML_QUERY__NAME, oldName, name));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Query</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Query</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Query</em>' attribute.
+ * @see #setQuery(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIQuery_Query()
+ * @model
+ * @generated
+ */
+ public String getQuery() {
+ return query;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlQuery#getQuery <em>Query</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Query</em>' attribute.
+ * @see #getQuery()
+ * @generated
+ */
+ public void setQuery(String newQuery) {
+ String oldQuery = query;
+ query = newQuery;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.ABSTRACT_XML_QUERY__QUERY, oldQuery, query));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Hints</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IQueryHint}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Hints</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>Hints</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIQuery_Hints()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IQueryHint" containment="true"
+ * @generated
+ */
+ public EList<IQueryHint> getHints() {
+ if (hints == null) {
+ hints = new EObjectContainmentEList<IQueryHint>(IQueryHint.class, this, OrmPackage.ABSTRACT_XML_QUERY__HINTS);
+ }
+ return hints;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case OrmPackage.ABSTRACT_XML_QUERY__HINTS :
+ return ((InternalEList<?>) getHints()).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 OrmPackage.ABSTRACT_XML_QUERY__NAME :
+ return getName();
+ case OrmPackage.ABSTRACT_XML_QUERY__QUERY :
+ return getQuery();
+ case OrmPackage.ABSTRACT_XML_QUERY__HINTS :
+ return getHints();
+ }
+ 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 OrmPackage.ABSTRACT_XML_QUERY__NAME :
+ setName((String) newValue);
+ return;
+ case OrmPackage.ABSTRACT_XML_QUERY__QUERY :
+ setQuery((String) newValue);
+ return;
+ case OrmPackage.ABSTRACT_XML_QUERY__HINTS :
+ getHints().clear();
+ getHints().addAll((Collection<? extends IQueryHint>) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case OrmPackage.ABSTRACT_XML_QUERY__NAME :
+ setName(NAME_EDEFAULT);
+ return;
+ case OrmPackage.ABSTRACT_XML_QUERY__QUERY :
+ setQuery(QUERY_EDEFAULT);
+ return;
+ case OrmPackage.ABSTRACT_XML_QUERY__HINTS :
+ getHints().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.ABSTRACT_XML_QUERY__NAME :
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case OrmPackage.ABSTRACT_XML_QUERY__QUERY :
+ return QUERY_EDEFAULT == null ? query != null : !QUERY_EDEFAULT.equals(query);
+ case OrmPackage.ABSTRACT_XML_QUERY__HINTS :
+ return hints != null && !hints.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IQuery.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.ABSTRACT_XML_QUERY__NAME :
+ return JpaCoreMappingsPackage.IQUERY__NAME;
+ case OrmPackage.ABSTRACT_XML_QUERY__QUERY :
+ return JpaCoreMappingsPackage.IQUERY__QUERY;
+ case OrmPackage.ABSTRACT_XML_QUERY__HINTS :
+ return JpaCoreMappingsPackage.IQUERY__HINTS;
+ 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 == IQuery.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IQUERY__NAME :
+ return OrmPackage.ABSTRACT_XML_QUERY__NAME;
+ case JpaCoreMappingsPackage.IQUERY__QUERY :
+ return OrmPackage.ABSTRACT_XML_QUERY__QUERY;
+ case JpaCoreMappingsPackage.IQUERY__HINTS :
+ return OrmPackage.ABSTRACT_XML_QUERY__HINTS;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(", query: ");
+ result.append(query);
+ result.append(')');
+ return result.toString();
+ }
+
+ public XmlQueryHint createQueryHint(int index) {
+ return OrmFactory.eINSTANCE.createXmlQueryHint();
+ }
+} // AbstractXmlQuery
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/AbstractXmlTable.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/AbstractXmlTable.java
new file mode 100644
index 0000000000..f9e60bf29f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/AbstractXmlTable.java
@@ -0,0 +1,913 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import java.util.Set;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.XmlEObject;
+import org.eclipse.jpt.core.internal.content.orm.resource.OrmXmlMapper;
+import org.eclipse.jpt.core.internal.emfutility.DOMUtilities;
+import org.eclipse.jpt.core.internal.mappings.ITable;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.core.internal.platform.BaseJpaPlatform;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+import org.eclipse.jpt.db.internal.ConnectionProfile;
+import org.eclipse.jpt.db.internal.Schema;
+import org.eclipse.jpt.db.internal.Table;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Abstract Xml Table</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlTable#getSpecifiedNameForXml <em>Specified Name For Xml</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlTable#getSpecifiedCatalogForXml <em>Specified Catalog For Xml</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlTable#getSpecifiedSchemaForXml <em>Specified Schema For Xml</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getAbstractXmlTable()
+ * @model kind="class" abstract="true"
+ * @generated
+ */
+public abstract class AbstractXmlTable extends XmlEObject implements ITable
+{
+ private Owner owner;
+
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getSpecifiedName() <em>Specified Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedName()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedName() <em>Specified Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedName()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedName = SPECIFIED_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultName() <em>Default Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultName()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultName() <em>Default Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultName()
+ * @generated
+ * @ordered
+ */
+ protected String defaultName = DEFAULT_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getCatalog() <em>Catalog</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCatalog()
+ * @generated
+ * @ordered
+ */
+ protected static final String CATALOG_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getSpecifiedCatalog() <em>Specified Catalog</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedCatalog()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_CATALOG_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedCatalog() <em>Specified Catalog</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedCatalog()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedCatalog = SPECIFIED_CATALOG_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultCatalog() <em>Default Catalog</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultCatalog()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_CATALOG_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultCatalog() <em>Default Catalog</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultCatalog()
+ * @generated
+ * @ordered
+ */
+ protected String defaultCatalog = DEFAULT_CATALOG_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getSchema() <em>Schema</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSchema()
+ * @generated
+ * @ordered
+ */
+ protected static final String SCHEMA_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getSpecifiedSchema() <em>Specified Schema</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedSchema()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_SCHEMA_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedSchema() <em>Specified Schema</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedSchema()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedSchema = SPECIFIED_SCHEMA_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultSchema() <em>Default Schema</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultSchema()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_SCHEMA_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultSchema() <em>Default Schema</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultSchema()
+ * @generated
+ * @ordered
+ */
+ protected String defaultSchema = DEFAULT_SCHEMA_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getSpecifiedNameForXml() <em>Specified Name For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedNameForXml()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_NAME_FOR_XML_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getSpecifiedCatalogForXml() <em>Specified Catalog For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedCatalogForXml()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_CATALOG_FOR_XML_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getSpecifiedSchemaForXml() <em>Specified Schema For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedSchemaForXml()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_SCHEMA_FOR_XML_EDEFAULT = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AbstractXmlTable() {
+ super();
+ }
+
+ protected AbstractXmlTable(Owner owner) {
+ super();
+ this.owner = owner;
+ }
+
+ @Override
+ protected void addInsignificantXmlFeatureIdsTo(Set<Integer> insignificantXmlFeatureIds) {
+ super.addInsignificantXmlFeatureIdsTo(insignificantXmlFeatureIds);
+ insignificantXmlFeatureIds.add(OrmPackage.ABSTRACT_XML_TABLE__NAME);
+ insignificantXmlFeatureIds.add(OrmPackage.ABSTRACT_XML_TABLE__DEFAULT_NAME);
+ insignificantXmlFeatureIds.add(OrmPackage.ABSTRACT_XML_TABLE__SCHEMA);
+ insignificantXmlFeatureIds.add(OrmPackage.ABSTRACT_XML_TABLE__DEFAULT_SCHEMA);
+ insignificantXmlFeatureIds.add(OrmPackage.ABSTRACT_XML_TABLE__CATALOG);
+ insignificantXmlFeatureIds.add(OrmPackage.ABSTRACT_XML_TABLE__DEFAULT_CATALOG);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.ABSTRACT_XML_TABLE;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getITable_Name()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated NOT
+ */
+ public String getName() {
+ return (this.getSpecifiedName() == null) ? getDefaultName() : this.getSpecifiedName();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Name</em>' attribute.
+ * @see #setSpecifiedName(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getITable_SpecifiedName()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedName() {
+ return specifiedName;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlTable#getSpecifiedName <em>Specified Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Name</em>' attribute.
+ * @see #getSpecifiedName()
+ * @generated
+ */
+ public void setSpecifiedNameGen(String newSpecifiedName) {
+ String oldSpecifiedName = specifiedName;
+ specifiedName = newSpecifiedName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_NAME, oldSpecifiedName, specifiedName));
+ }
+
+ public void setSpecifiedName(String newSpecifiedName) {
+ setSpecifiedNameGen(newSpecifiedName);
+ if (newSpecifiedName != SPECIFIED_NAME_EDEFAULT) {
+ makeTableForXmlNonNull();
+ }
+ setSpecifiedNameForXml(newSpecifiedName);
+ if (isAllFeaturesUnset()) {
+ makeTableForXmlNull();
+ }
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getITable_DefaultName()
+ * @model changeable="false"
+ * @generated
+ */
+ public String getDefaultName() {
+ return defaultName;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Catalog</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Catalog</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getITable_Catalog()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated NOT
+ */
+ public String getCatalog() {
+ return (this.getSpecifiedCatalog() == null) ? getDefaultCatalog() : this.getSpecifiedCatalog();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Catalog</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Catalog</em>' attribute.
+ * @see #setSpecifiedCatalog(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getITable_SpecifiedCatalog()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedCatalog() {
+ return specifiedCatalog;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlTable#getSpecifiedCatalog <em>Specified Catalog</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Catalog</em>' attribute.
+ * @see #getSpecifiedCatalog()
+ * @generated
+ */
+ public void setSpecifiedCatalogGen(String newSpecifiedCatalog) {
+ String oldSpecifiedCatalog = specifiedCatalog;
+ specifiedCatalog = newSpecifiedCatalog;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_CATALOG, oldSpecifiedCatalog, specifiedCatalog));
+ }
+
+ public void setSpecifiedCatalog(String newSpecifiedCatalog) {
+ setSpecifiedCatalogGen(newSpecifiedCatalog);
+ if (newSpecifiedCatalog != SPECIFIED_CATALOG_EDEFAULT) {
+ makeTableForXmlNonNull();
+ }
+ setSpecifiedCatalogForXml(newSpecifiedCatalog);
+ if (isAllFeaturesUnset()) {
+ makeTableForXmlNull();
+ }
+ }
+
+ protected abstract void makeTableForXmlNull();
+
+ protected abstract void makeTableForXmlNonNull();
+
+ /**
+ * Returns the value of the '<em><b>Default Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Catalog</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Catalog</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getITable_DefaultCatalog()
+ * @model changeable="false"
+ * @generated
+ */
+ public String getDefaultCatalog() {
+ return defaultCatalog;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Schema</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Schema</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getITable_Schema()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated NOT
+ */
+ public String getSchema() {
+ return (this.getSpecifiedSchema() == null) ? getDefaultSchema() : this.getSpecifiedSchema();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Schema</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Schema</em>' attribute.
+ * @see #setSpecifiedSchema(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getITable_SpecifiedSchema()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedSchema() {
+ return specifiedSchema;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlTable#getSpecifiedSchema <em>Specified Schema</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Schema</em>' attribute.
+ * @see #getSpecifiedSchema()
+ * @generated
+ */
+ public void setSpecifiedSchemaGen(String newSpecifiedSchema) {
+ String oldSpecifiedSchema = specifiedSchema;
+ specifiedSchema = newSpecifiedSchema;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_SCHEMA, oldSpecifiedSchema, specifiedSchema));
+ }
+
+ public void setSpecifiedSchema(String newSpecifiedSchema) {
+ setSpecifiedSchemaGen(newSpecifiedSchema);
+ if (newSpecifiedSchema != SPECIFIED_SCHEMA_EDEFAULT) {
+ makeTableForXmlNonNull();
+ }
+ setSpecifiedSchemaForXml(newSpecifiedSchema);
+ if (isAllFeaturesUnset()) {
+ makeTableForXmlNull();
+ }
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Schema</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Schema</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getITable_DefaultSchema()
+ * @model changeable="false"
+ * @generated
+ */
+ public String getDefaultSchema() {
+ return defaultSchema;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Name For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Name For Xml</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Name For Xml</em>' attribute.
+ * @see #setSpecifiedNameForXml(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getAbstractXmlTable_SpecifiedNameForXml()
+ * @model volatile="true"
+ * @generated NOT
+ */
+ public String getSpecifiedNameForXml() {
+ return getSpecifiedName();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlTable#getSpecifiedNameForXml <em>Specified Name For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Name For Xml</em>' attribute.
+ * @see #getSpecifiedNameForXml()
+ * @generated NOT
+ */
+ public void setSpecifiedNameForXml(String newSpecifiedNameForXml) {
+ setSpecifiedNameGen(newSpecifiedNameForXml);
+ if (eNotificationRequired())
+ //pass in oldValue of null because we don't store the value from the xml, see super.eNotify()
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_NAME_FOR_XML, newSpecifiedNameForXml + " ", newSpecifiedNameForXml));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Catalog For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Catalog For Xml</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Catalog For Xml</em>' attribute.
+ * @see #setSpecifiedCatalogForXml(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getAbstractXmlTable_SpecifiedCatalogForXml()
+ * @model volatile="true"
+ * @generated NOT
+ */
+ public String getSpecifiedCatalogForXml() {
+ return getSpecifiedCatalog();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlTable#getSpecifiedCatalogForXml <em>Specified Catalog For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Catalog For Xml</em>' attribute.
+ * @see #getSpecifiedCatalogForXml()
+ * @generated NOT
+ */
+ public void setSpecifiedCatalogForXml(String newSpecifiedCatalogForXml) {
+ setSpecifiedCatalogGen(newSpecifiedCatalogForXml);
+ if (eNotificationRequired())
+ //pass in oldValue of null because we don't store the value from the xml, see super.eNotify()
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_CATALOG_FOR_XML, newSpecifiedCatalogForXml + " ", newSpecifiedCatalogForXml));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Schema For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Schema For Xml</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Schema For Xml</em>' attribute.
+ * @see #setSpecifiedSchemaForXml(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getAbstractXmlTable_SpecifiedSchemaForXml()
+ * @model volatile="true"
+ * @generated NOT
+ */
+ public String getSpecifiedSchemaForXml() {
+ return getSpecifiedSchema();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlTable#getSpecifiedSchemaForXml <em>Specified Schema For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Schema For Xml</em>' attribute.
+ * @see #getSpecifiedSchemaForXml()
+ * @generated NOT
+ */
+ public void setSpecifiedSchemaForXml(String newSpecifiedSchemaForXml) {
+ setSpecifiedSchemaGen(newSpecifiedSchemaForXml);
+ if (eNotificationRequired())
+ //pass in oldValue of null because we don't store the value from the xml, see super.eNotify()
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_SCHEMA_FOR_XML, newSpecifiedSchemaForXml + " ", newSpecifiedSchemaForXml));
+ }
+
+ //TODO should we allow setting through the ecore, that would make this method
+ //public and part of the ITable api. only the model needs to be setting the default,
+ //but the ui needs to be listening for changes to the default.
+ protected void setDefaultName(String newDefaultName) {
+ String oldDefaultName = this.defaultName;
+ this.defaultName = newDefaultName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_TABLE__DEFAULT_NAME, oldDefaultName, this.defaultName));
+ }
+
+ protected void setDefaultSchema(String newDefaultSchema) {
+ String oldDefaultSchema = this.defaultSchema;
+ this.defaultSchema = newDefaultSchema;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_TABLE__DEFAULT_SCHEMA, oldDefaultSchema, this.defaultSchema));
+ }
+
+ protected void setDefaultCatalog(String newDefaultCatalog) {
+ String oldDefaultCatalog = this.defaultCatalog;
+ this.defaultCatalog = newDefaultCatalog;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_TABLE__DEFAULT_CATALOG, oldDefaultCatalog, this.defaultCatalog));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case OrmPackage.ABSTRACT_XML_TABLE__NAME :
+ return getName();
+ case OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_NAME :
+ return getSpecifiedName();
+ case OrmPackage.ABSTRACT_XML_TABLE__DEFAULT_NAME :
+ return getDefaultName();
+ case OrmPackage.ABSTRACT_XML_TABLE__CATALOG :
+ return getCatalog();
+ case OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_CATALOG :
+ return getSpecifiedCatalog();
+ case OrmPackage.ABSTRACT_XML_TABLE__DEFAULT_CATALOG :
+ return getDefaultCatalog();
+ case OrmPackage.ABSTRACT_XML_TABLE__SCHEMA :
+ return getSchema();
+ case OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_SCHEMA :
+ return getSpecifiedSchema();
+ case OrmPackage.ABSTRACT_XML_TABLE__DEFAULT_SCHEMA :
+ return getDefaultSchema();
+ case OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_NAME_FOR_XML :
+ return getSpecifiedNameForXml();
+ case OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_CATALOG_FOR_XML :
+ return getSpecifiedCatalogForXml();
+ case OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_SCHEMA_FOR_XML :
+ return getSpecifiedSchemaForXml();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_NAME :
+ setSpecifiedName((String) newValue);
+ return;
+ case OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_CATALOG :
+ setSpecifiedCatalog((String) newValue);
+ return;
+ case OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_SCHEMA :
+ setSpecifiedSchema((String) newValue);
+ return;
+ case OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_NAME_FOR_XML :
+ setSpecifiedNameForXml((String) newValue);
+ return;
+ case OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_CATALOG_FOR_XML :
+ setSpecifiedCatalogForXml((String) newValue);
+ return;
+ case OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_SCHEMA_FOR_XML :
+ setSpecifiedSchemaForXml((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_NAME :
+ setSpecifiedName(SPECIFIED_NAME_EDEFAULT);
+ return;
+ case OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_CATALOG :
+ setSpecifiedCatalog(SPECIFIED_CATALOG_EDEFAULT);
+ return;
+ case OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_SCHEMA :
+ setSpecifiedSchema(SPECIFIED_SCHEMA_EDEFAULT);
+ return;
+ case OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_NAME_FOR_XML :
+ setSpecifiedNameForXml(SPECIFIED_NAME_FOR_XML_EDEFAULT);
+ return;
+ case OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_CATALOG_FOR_XML :
+ setSpecifiedCatalogForXml(SPECIFIED_CATALOG_FOR_XML_EDEFAULT);
+ return;
+ case OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_SCHEMA_FOR_XML :
+ setSpecifiedSchemaForXml(SPECIFIED_SCHEMA_FOR_XML_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.ABSTRACT_XML_TABLE__NAME :
+ return NAME_EDEFAULT == null ? getName() != null : !NAME_EDEFAULT.equals(getName());
+ case OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_NAME :
+ return SPECIFIED_NAME_EDEFAULT == null ? specifiedName != null : !SPECIFIED_NAME_EDEFAULT.equals(specifiedName);
+ case OrmPackage.ABSTRACT_XML_TABLE__DEFAULT_NAME :
+ return DEFAULT_NAME_EDEFAULT == null ? defaultName != null : !DEFAULT_NAME_EDEFAULT.equals(defaultName);
+ case OrmPackage.ABSTRACT_XML_TABLE__CATALOG :
+ return CATALOG_EDEFAULT == null ? getCatalog() != null : !CATALOG_EDEFAULT.equals(getCatalog());
+ case OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_CATALOG :
+ return SPECIFIED_CATALOG_EDEFAULT == null ? specifiedCatalog != null : !SPECIFIED_CATALOG_EDEFAULT.equals(specifiedCatalog);
+ case OrmPackage.ABSTRACT_XML_TABLE__DEFAULT_CATALOG :
+ return DEFAULT_CATALOG_EDEFAULT == null ? defaultCatalog != null : !DEFAULT_CATALOG_EDEFAULT.equals(defaultCatalog);
+ case OrmPackage.ABSTRACT_XML_TABLE__SCHEMA :
+ return SCHEMA_EDEFAULT == null ? getSchema() != null : !SCHEMA_EDEFAULT.equals(getSchema());
+ case OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_SCHEMA :
+ return SPECIFIED_SCHEMA_EDEFAULT == null ? specifiedSchema != null : !SPECIFIED_SCHEMA_EDEFAULT.equals(specifiedSchema);
+ case OrmPackage.ABSTRACT_XML_TABLE__DEFAULT_SCHEMA :
+ return DEFAULT_SCHEMA_EDEFAULT == null ? defaultSchema != null : !DEFAULT_SCHEMA_EDEFAULT.equals(defaultSchema);
+ case OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_NAME_FOR_XML :
+ return SPECIFIED_NAME_FOR_XML_EDEFAULT == null ? getSpecifiedNameForXml() != null : !SPECIFIED_NAME_FOR_XML_EDEFAULT.equals(getSpecifiedNameForXml());
+ case OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_CATALOG_FOR_XML :
+ return SPECIFIED_CATALOG_FOR_XML_EDEFAULT == null ? getSpecifiedCatalogForXml() != null : !SPECIFIED_CATALOG_FOR_XML_EDEFAULT.equals(getSpecifiedCatalogForXml());
+ case OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_SCHEMA_FOR_XML :
+ return SPECIFIED_SCHEMA_FOR_XML_EDEFAULT == null ? getSpecifiedSchemaForXml() != null : !SPECIFIED_SCHEMA_FOR_XML_EDEFAULT.equals(getSpecifiedSchemaForXml());
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == ITable.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.ABSTRACT_XML_TABLE__NAME :
+ return JpaCoreMappingsPackage.ITABLE__NAME;
+ case OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_NAME :
+ return JpaCoreMappingsPackage.ITABLE__SPECIFIED_NAME;
+ case OrmPackage.ABSTRACT_XML_TABLE__DEFAULT_NAME :
+ return JpaCoreMappingsPackage.ITABLE__DEFAULT_NAME;
+ case OrmPackage.ABSTRACT_XML_TABLE__CATALOG :
+ return JpaCoreMappingsPackage.ITABLE__CATALOG;
+ case OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_CATALOG :
+ return JpaCoreMappingsPackage.ITABLE__SPECIFIED_CATALOG;
+ case OrmPackage.ABSTRACT_XML_TABLE__DEFAULT_CATALOG :
+ return JpaCoreMappingsPackage.ITABLE__DEFAULT_CATALOG;
+ case OrmPackage.ABSTRACT_XML_TABLE__SCHEMA :
+ return JpaCoreMappingsPackage.ITABLE__SCHEMA;
+ case OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_SCHEMA :
+ return JpaCoreMappingsPackage.ITABLE__SPECIFIED_SCHEMA;
+ case OrmPackage.ABSTRACT_XML_TABLE__DEFAULT_SCHEMA :
+ return JpaCoreMappingsPackage.ITABLE__DEFAULT_SCHEMA;
+ 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 == ITable.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.ITABLE__NAME :
+ return OrmPackage.ABSTRACT_XML_TABLE__NAME;
+ case JpaCoreMappingsPackage.ITABLE__SPECIFIED_NAME :
+ return OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_NAME;
+ case JpaCoreMappingsPackage.ITABLE__DEFAULT_NAME :
+ return OrmPackage.ABSTRACT_XML_TABLE__DEFAULT_NAME;
+ case JpaCoreMappingsPackage.ITABLE__CATALOG :
+ return OrmPackage.ABSTRACT_XML_TABLE__CATALOG;
+ case JpaCoreMappingsPackage.ITABLE__SPECIFIED_CATALOG :
+ return OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_CATALOG;
+ case JpaCoreMappingsPackage.ITABLE__DEFAULT_CATALOG :
+ return OrmPackage.ABSTRACT_XML_TABLE__DEFAULT_CATALOG;
+ case JpaCoreMappingsPackage.ITABLE__SCHEMA :
+ return OrmPackage.ABSTRACT_XML_TABLE__SCHEMA;
+ case JpaCoreMappingsPackage.ITABLE__SPECIFIED_SCHEMA :
+ return OrmPackage.ABSTRACT_XML_TABLE__SPECIFIED_SCHEMA;
+ case JpaCoreMappingsPackage.ITABLE__DEFAULT_SCHEMA :
+ return OrmPackage.ABSTRACT_XML_TABLE__DEFAULT_SCHEMA;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (specifiedName: ");
+ result.append(specifiedName);
+ result.append(", defaultName: ");
+ result.append(defaultName);
+ result.append(", specifiedCatalog: ");
+ result.append(specifiedCatalog);
+ result.append(", defaultCatalog: ");
+ result.append(defaultCatalog);
+ result.append(", specifiedSchema: ");
+ result.append(specifiedSchema);
+ result.append(", defaultSchema: ");
+ result.append(defaultSchema);
+ result.append(')');
+ return result.toString();
+ }
+
+ /**
+ * Call this when the table tag is removed from the xml,
+ * need to make sure all the model attributes are set to the default
+ */
+ protected void unsetAllAttributes() {
+ eUnset(OrmPackage.XML_TABLE__SPECIFIED_NAME);
+ eUnset(OrmPackage.XML_TABLE__SPECIFIED_SCHEMA);
+ eUnset(OrmPackage.XML_TABLE__SPECIFIED_CATALOG);
+ }
+
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ setDefaultCatalog((String) defaultsContext.getDefault(BaseJpaPlatform.DEFAULT_TABLE_CATALOG_KEY));
+ setDefaultSchema((String) defaultsContext.getDefault(BaseJpaPlatform.DEFAULT_TABLE_SCHEMA_KEY));
+ }
+
+ public ITextRange getNameTextRange() {
+ if (node == null) {
+ return owner.getTextRange();
+ }
+ IDOMNode nameNode = (IDOMNode) DOMUtilities.getChildAttributeNode(node, OrmXmlMapper.NAME);
+ return (nameNode == null) ? getTextRange() : getTextRange(nameNode);
+ }
+
+ public ITextRange getSchemaTextRange() {
+ if (node == null) {
+ return owner.getTextRange();
+ }
+ IDOMNode schemaNode = (IDOMNode) DOMUtilities.getChildAttributeNode(node, OrmXmlMapper.SCHEMA);
+ return (schemaNode == null) ? getTextRange() : getTextRange(schemaNode);
+ }
+
+ @Override
+ public ITextRange getTextRange() {
+ return (node == null) ? owner.getTextRange() : super.getTextRange();
+ }
+
+ public Owner getOwner() {
+ return owner;
+ }
+
+ public Table dbTable() {
+ Schema schema = this.dbSchema();
+ return (schema == null) ? null : schema.tableNamed(getName());
+ }
+
+ public Schema dbSchema() {
+ return getJpaProject().connectionProfile().getDatabase().schemaNamed(getSchema());
+ }
+
+ public boolean isConnected() {
+ ConnectionProfile connectionProfile = getJpaProject().connectionProfile();
+ return connectionProfile != null && connectionProfile.isConnected();
+ }
+
+ public boolean hasResolvedSchema() {
+ return dbSchema() != null;
+ }
+
+ public boolean isResolved() {
+ return dbTable() != null;
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/EntityMappings.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/EntityMappings.java
new file mode 100644
index 0000000000..95e5d580df
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/EntityMappings.java
@@ -0,0 +1,76 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Entity Mappings</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.EntityMappings#getPersistenceUnitMetadata <em>Persistence Unit Metadata</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.EntityMappings#getPackage <em>Package</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappings()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface EntityMappings extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Persistence Unit Metadata</b></em>' reference.
+ * The default value is <code>""</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Persistence Unit Metadata</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Persistence Unit Metadata</em>' reference.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappings_PersistenceUnitMetadata()
+ * @model resolveProxies="false" changeable="false" volatile="true"
+ * @generated
+ */
+ PersistenceUnitMetadata getPersistenceUnitMetadata();
+
+ /**
+ * Returns the value of the '<em><b>Package</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Package</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Package</em>' attribute.
+ * @see #setPackage(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappings_Package()
+ * @model volatile="true"
+ * @generated
+ */
+ String getPackage();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappings#getPackage <em>Package</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Package</em>' attribute.
+ * @see #getPackage()
+ * @generated
+ */
+ void setPackage(String value);
+
+ void changeMapping(XmlTypeMapping oldMapping, String newMappingKey);
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/EntityMappingsForXml.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/EntityMappingsForXml.java
new file mode 100644
index 0000000000..882231c165
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/EntityMappingsForXml.java
@@ -0,0 +1,84 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Entity Mappings For Xml</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsForXml#getPersistenceUnitMetadataForXml <em>Persistence Unit Metadata For Xml</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsForXml#getPackageForXml <em>Package For Xml</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappingsForXml()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface EntityMappingsForXml extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Persistence Unit Metadata For Xml</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Persistence Unit Metadata For Xml</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Persistence Unit Metadata For Xml</em>' reference.
+ * @see #setPersistenceUnitMetadataForXml(PersistenceUnitMetadataForXml)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappingsForXml_PersistenceUnitMetadataForXml()
+ * @model resolveProxies="false" volatile="true"
+ * @generated
+ */
+ PersistenceUnitMetadataForXml getPersistenceUnitMetadataForXml();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsForXml#getPersistenceUnitMetadataForXml <em>Persistence Unit Metadata For Xml</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Persistence Unit Metadata For Xml</em>' reference.
+ * @see #getPersistenceUnitMetadataForXml()
+ * @generated
+ */
+ void setPersistenceUnitMetadataForXml(PersistenceUnitMetadataForXml value);
+
+ /**
+ * Returns the value of the '<em><b>Package For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Package For Xml</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Package For Xml</em>' attribute.
+ * @see #setPackageForXml(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappingsForXml_PackageForXml()
+ * @model volatile="true"
+ * @generated
+ */
+ String getPackageForXml();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsForXml#getPackageForXml <em>Package For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Package For Xml</em>' attribute.
+ * @see #getPackageForXml()
+ * @generated
+ */
+ void setPackageForXml(String value);
+} // EntityMappingsForXml
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/EntityMappingsInternal.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/EntityMappingsInternal.java
new file mode 100644
index 0000000000..7f66087536
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/EntityMappingsInternal.java
@@ -0,0 +1,1690 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.Set;
+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.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EObjectEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.jdt.core.ElementChangedEvent;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jpt.core.internal.AccessType;
+import org.eclipse.jpt.core.internal.IJpaContentNode;
+import org.eclipse.jpt.core.internal.IJpaFile;
+import org.eclipse.jpt.core.internal.IJpaProject;
+import org.eclipse.jpt.core.internal.XmlEObject;
+import org.eclipse.jpt.core.internal.platform.BaseJpaPlatform;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+import org.eclipse.jpt.utility.internal.CollectionTools;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Entity Mappings Internal</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getRoot <em>Root</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getVersion <em>Version</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getDescription <em>Description</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getPersistenceUnitMetadataInternal <em>Persistence Unit Metadata Internal</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getPackageInternal <em>Package Internal</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getDefaultSchema <em>Default Schema</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getSpecifiedSchema <em>Specified Schema</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getSchema <em>Schema</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getDefaultCatalog <em>Default Catalog</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getSpecifiedCatalog <em>Specified Catalog</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getCatalog <em>Catalog</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getDefaultAccess <em>Default Access</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getSpecifiedAccess <em>Specified Access</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getAccess <em>Access</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getTypeMappings <em>Type Mappings</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getPersistentTypes <em>Persistent Types</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getSequenceGenerators <em>Sequence Generators</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getTableGenerators <em>Table Generators</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getNamedQueries <em>Named Queries</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getNamedNativeQueries <em>Named Native Queries</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappingsInternal()
+ * @model kind="class"
+ * @generated
+ */
+public class EntityMappingsInternal extends XmlEObject
+ implements IJpaContentNode, EntityMappingsForXml, EntityMappings
+{
+ /**
+ * The default value of the '{@link #getPackageForXml() <em>Package For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPackageForXml()
+ * @generated
+ * @ordered
+ */
+ protected static final String PACKAGE_FOR_XML_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getPackage() <em>Package</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPackage()
+ * @generated
+ * @ordered
+ */
+ protected static final String PACKAGE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getRoot() <em>Root</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRoot()
+ * @generated
+ * @ordered
+ */
+ protected XmlRootContentNode root;
+
+ /**
+ * The default value of the '{@link #getVersion() <em>Version</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getVersion()
+ * @generated
+ * @ordered
+ */
+ protected static final String VERSION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getVersion() <em>Version</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getVersion()
+ * @generated
+ * @ordered
+ */
+ protected String version = VERSION_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 cached value of the '{@link #getPersistenceUnitMetadataInternal() <em>Persistence Unit Metadata Internal</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPersistenceUnitMetadataInternal()
+ * @generated
+ * @ordered
+ */
+ protected PersistenceUnitMetadataInternal persistenceUnitMetadataInternal;
+
+ /**
+ * The default value of the '{@link #getPackageInternal() <em>Package Internal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPackageInternal()
+ * @generated
+ * @ordered
+ */
+ protected static final String PACKAGE_INTERNAL_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getPackageInternal() <em>Package Internal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPackageInternal()
+ * @generated
+ * @ordered
+ */
+ protected String packageInternal = PACKAGE_INTERNAL_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultSchema() <em>Default Schema</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultSchema()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_SCHEMA_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultSchema() <em>Default Schema</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultSchema()
+ * @generated
+ * @ordered
+ */
+ protected String defaultSchema = DEFAULT_SCHEMA_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getSpecifiedSchema() <em>Specified Schema</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedSchema()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_SCHEMA_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedSchema() <em>Specified Schema</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedSchema()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedSchema = SPECIFIED_SCHEMA_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getSchema() <em>Schema</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSchema()
+ * @generated
+ * @ordered
+ */
+ protected static final String SCHEMA_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getDefaultCatalog() <em>Default Catalog</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultCatalog()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_CATALOG_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultCatalog() <em>Default Catalog</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultCatalog()
+ * @generated
+ * @ordered
+ */
+ protected String defaultCatalog = DEFAULT_CATALOG_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getSpecifiedCatalog() <em>Specified Catalog</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedCatalog()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_CATALOG_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedCatalog() <em>Specified Catalog</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedCatalog()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedCatalog = SPECIFIED_CATALOG_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getCatalog() <em>Catalog</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCatalog()
+ * @generated
+ * @ordered
+ */
+ protected static final String CATALOG_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getDefaultAccess() <em>Default Access</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultAccess()
+ * @generated
+ * @ordered
+ */
+ protected static final AccessType DEFAULT_ACCESS_EDEFAULT = AccessType.DEFAULT;
+
+ /**
+ * The cached value of the '{@link #getDefaultAccess() <em>Default Access</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultAccess()
+ * @generated
+ * @ordered
+ */
+ protected AccessType defaultAccess = DEFAULT_ACCESS_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getSpecifiedAccess() <em>Specified Access</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedAccess()
+ * @generated
+ * @ordered
+ */
+ protected static final AccessType SPECIFIED_ACCESS_EDEFAULT = AccessType.DEFAULT;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedAccess() <em>Specified Access</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedAccess()
+ * @generated
+ * @ordered
+ */
+ protected AccessType specifiedAccess = SPECIFIED_ACCESS_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getAccess() <em>Access</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAccess()
+ * @generated
+ * @ordered
+ */
+ protected static final AccessType ACCESS_EDEFAULT = AccessType.DEFAULT;
+
+ /**
+ * The cached value of the '{@link #getTypeMappings() <em>Type Mappings</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTypeMappings()
+ * @generated
+ * @ordered
+ */
+ protected EList<XmlTypeMapping> typeMappings;
+
+ /**
+ * The cached value of the '{@link #getPersistentTypes() <em>Persistent Types</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPersistentTypes()
+ * @generated
+ * @ordered
+ */
+ protected EList<XmlPersistentType> persistentTypes;
+
+ /**
+ * The cached value of the '{@link #getSequenceGenerators() <em>Sequence Generators</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSequenceGenerators()
+ * @generated
+ * @ordered
+ */
+ protected EList<XmlSequenceGenerator> sequenceGenerators;
+
+ /**
+ * The cached value of the '{@link #getTableGenerators() <em>Table Generators</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTableGenerators()
+ * @generated
+ * @ordered
+ */
+ protected EList<XmlTableGenerator> tableGenerators;
+
+ /**
+ * The cached value of the '{@link #getNamedQueries() <em>Named Queries</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNamedQueries()
+ * @generated
+ * @ordered
+ */
+ protected EList<XmlNamedQuery> namedQueries;
+
+ /**
+ * The cached value of the '{@link #getNamedNativeQueries() <em>Named Native Queries</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNamedNativeQueries()
+ * @generated
+ * @ordered
+ */
+ protected EList<XmlNamedNativeQuery> namedNativeQueries;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected EntityMappingsInternal() {
+ super();
+ //we don't want a setter for this object since it should never be null, but
+ //it must be initialized and is necessary for emf to call the eInverseAdd method
+ this.persistenceUnitMetadataInternal = OrmFactory.eINSTANCE.createPersistenceUnitMetadataInternal();
+ ((InternalEObject) this.persistenceUnitMetadataInternal).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OrmPackage.ENTITY_MAPPINGS_INTERNAL__PERSISTENCE_UNIT_METADATA_INTERNAL, null, null);
+ }
+
+ @Override
+ protected void addInsignificantFeatureIdsTo(Set<Integer> insignificantFeatureIds) {
+ super.addInsignificantFeatureIdsTo(insignificantFeatureIds);
+ insignificantFeatureIds.add(OrmPackage.ENTITY_MAPPINGS_INTERNAL__PERSISTENT_TYPES);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.ENTITY_MAPPINGS_INTERNAL;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Access</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.content.orm.AccessType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Access</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Access</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.AccessType
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappingsInternal_Access()
+ * @model transient="true" changeable="false" volatile="true"
+ * @generated NOT
+ */
+ public AccessType getAccess() {
+ return (this.getSpecifiedAccess() == null) ? this.getDefaultAccess() : this.getSpecifiedAccess();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Persistence Unit Metadata For Xml</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * API just for the xml translators. Null in the model for a containment
+ * object corresponds to no persistence-unit-metadata xml tag in the xml file.
+ * We check for whether any features are set in the model and return null for
+ * persistenceUnitMetadataForXml if there aren't any. Otherwise we return
+ * the persistenceUnitMetadataInternal that has already been created.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Persistence Unit Metadata For Xml</em>' reference.
+ * @see #setPersistenceUnitMetadataForXml(PersistenceUnitMetadataForXml)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappingsForXml_PersistenceUnitMetadataForXml()
+ * @model resolveProxies="false" volatile="true"
+ * @generated NOT
+ */
+ public PersistenceUnitMetadataForXml getPersistenceUnitMetadataForXml() {
+ if (getPersistenceUnitMetadataInternal().isAllFeaturesUnset()) {
+ return null;
+ }
+ return getPersistenceUnitMetadataInternal();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getPersistenceUnitMetadataForXml <em>Persistence Unit Metadata For Xml</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Persistence Unit Metadata For Xml</em>' reference.
+ * @see #getPersistenceUnitMetadataForXml()
+ * @generated NOT
+ */
+ public void setPersistenceUnitMetadataForXmlGen(PersistenceUnitMetadataForXml newPersistenceUnitMetadataForXml) {
+ PersistenceUnitMetadataForXml oldValue = newPersistenceUnitMetadataForXml == null ? (PersistenceUnitMetadataForXml) getPersistenceUnitMetadata() : null;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.ENTITY_MAPPINGS_INTERNAL__PERSISTENCE_UNIT_METADATA_FOR_XML, oldValue, newPersistenceUnitMetadataForXml));
+ }
+
+ public void setPersistenceUnitMetadataForXml(PersistenceUnitMetadataForXml newPersistenceUnitMetadataForXml) {
+ setPersistenceUnitMetadataForXmlGen(newPersistenceUnitMetadataForXml);
+ if (newPersistenceUnitMetadataForXml == null) {
+ getPersistenceUnitMetadataInternal().unsetAllAttributes();
+ }
+ }
+
+ /**
+ * Returns the value of the '<em><b>Package For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Package For Xml</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Package For Xml</em>' attribute.
+ * @see #setPackageForXml(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappingsForXml_PackageForXml()
+ * @model volatile="true"
+ * @generated NOT
+ */
+ public String getPackageForXml() {
+ return getPackageInternal();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getPackageForXml <em>Package For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Package For Xml</em>' attribute.
+ * @see #getPackageForXml()
+ * @generated NOT
+ */
+ public void setPackageForXml(String newPackageForXml) {
+ String oldValue = getPackageForXml();
+ setPackageInternal(newPackageForXml);
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.ENTITY_MAPPINGS_INTERNAL__PACKAGE_FOR_XML, null, newPackageForXml));
+ }
+
+ public void makePersistenceUnitMetadataForXmlNull() {
+ setPersistenceUnitMetadataForXmlGen(null);
+ }
+
+ public void makePersistenceUnitMetadataForXmlNonNull() {
+ setPersistenceUnitMetadataForXmlGen(getPersistenceUnitMetadataForXml());
+ }
+
+ /**
+ * Returns the value of the '<em><b>Persistence Unit Metadata</b></em>' containment reference.
+ * The default value is <code>""</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Persistence Unit Metadata</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Persistence Unit Metadata</em>' containment reference.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappings_PersistenceUnitMetadata()
+ * @model containment="true" required="true" changeable="false" volatile="true"
+ * @generated NOT
+ */
+ public PersistenceUnitMetadata getPersistenceUnitMetadata() {
+ return getPersistenceUnitMetadataInternal();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Root</b></em>' reference.
+ * The default value is <code>""</code>.
+ * It is bidirectional and its opposite is '{@link org.eclipse.jpt.core.internal.content.orm.XmlRootContentNode#getEntityMappings <em>Entity Mappings</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Root</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Root</em>' reference.
+ * @see #setRoot(XmlRootContentNode)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappingsInternal_Root()
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlRootContentNode#getEntityMappings
+ * @model opposite="entityMappings" resolveProxies="false" required="true" ordered="false"
+ * @generated
+ */
+ public XmlRootContentNode getRoot() {
+ return root;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetRoot(XmlRootContentNode newRoot, NotificationChain msgs) {
+ XmlRootContentNode oldRoot = root;
+ root = newRoot;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OrmPackage.ENTITY_MAPPINGS_INTERNAL__ROOT, oldRoot, newRoot);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getRoot <em>Root</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Root</em>' reference.
+ * @see #getRoot()
+ * @generated
+ */
+ public void setRoot(XmlRootContentNode newRoot) {
+ if (newRoot != root) {
+ NotificationChain msgs = null;
+ if (root != null)
+ msgs = ((InternalEObject) root).eInverseRemove(this, OrmPackage.XML_ROOT_CONTENT_NODE__ENTITY_MAPPINGS, XmlRootContentNode.class, msgs);
+ if (newRoot != null)
+ msgs = ((InternalEObject) newRoot).eInverseAdd(this, OrmPackage.XML_ROOT_CONTENT_NODE__ENTITY_MAPPINGS, XmlRootContentNode.class, msgs);
+ msgs = basicSetRoot(newRoot, msgs);
+ if (msgs != null)
+ msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.ENTITY_MAPPINGS_INTERNAL__ROOT, newRoot, newRoot));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Version</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Version</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Version</em>' attribute.
+ * @see #setVersion(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappingsInternal_Version()
+ * @model
+ * @generated
+ */
+ public String getVersion() {
+ return version;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getVersion <em>Version</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Version</em>' attribute.
+ * @see #getVersion()
+ * @generated
+ */
+ public void setVersion(String newVersion) {
+ String oldVersion = version;
+ version = newVersion;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.ENTITY_MAPPINGS_INTERNAL__VERSION, oldVersion, version));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Description</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Description</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Description</em>' attribute.
+ * @see #setDescription(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappingsInternal_Description()
+ * @model
+ * @generated
+ */
+ public String getDescription() {
+ return description;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#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
+ */
+ public void setDescription(String newDescription) {
+ String oldDescription = description;
+ description = newDescription;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.ENTITY_MAPPINGS_INTERNAL__DESCRIPTION, oldDescription, description));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Persistence Unit Metadata Internal</b></em>' containment reference.
+ * The default value is <code>""</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Persistence Unit Metadata Internal</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Persistence Unit Metadata Internal</em>' containment reference.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappingsInternal_PersistenceUnitMetadataInternal()
+ * @model containment="true" required="true" changeable="false"
+ * @generated
+ */
+ public PersistenceUnitMetadataInternal getPersistenceUnitMetadataInternal() {
+ return persistenceUnitMetadataInternal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetPersistenceUnitMetadataInternal(PersistenceUnitMetadataInternal newPersistenceUnitMetadataInternal, NotificationChain msgs) {
+ PersistenceUnitMetadataInternal oldPersistenceUnitMetadataInternal = persistenceUnitMetadataInternal;
+ persistenceUnitMetadataInternal = newPersistenceUnitMetadataInternal;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OrmPackage.ENTITY_MAPPINGS_INTERNAL__PERSISTENCE_UNIT_METADATA_INTERNAL, oldPersistenceUnitMetadataInternal, newPersistenceUnitMetadataInternal);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Package Internal</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Package Internal</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Package Internal</em>' attribute.
+ * @see #setPackageInternal(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappingsInternal_PackageInternal()
+ * @model
+ * @generated
+ */
+ public String getPackageInternal() {
+ return packageInternal;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getPackageInternal <em>Package Internal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Package Internal</em>' attribute.
+ * @see #getPackageInternal()
+ * @generated NOT
+ */
+ public void setPackageInternal(String newPackageInternal) {
+ String oldPackageInternal = packageInternal;
+ packageInternal = newPackageInternal;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.ENTITY_MAPPINGS_INTERNAL__PACKAGE_INTERNAL, oldPackageInternal, packageInternal));
+ //notification so the UI is updated when the xml changes, can't call the UI api
+ //because it has other side effects
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.ENTITY_MAPPINGS_INTERNAL__PACKAGE, oldPackageInternal, packageInternal));
+ }
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Schema</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Schema</em>' attribute.
+ * @see #setDefaultSchema(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappingsInternal_DefaultSchema()
+ * @model
+ * @generated
+ */
+ public String getDefaultSchema() {
+ return defaultSchema;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getDefaultSchema <em>Default Schema</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Default Schema</em>' attribute.
+ * @see #getDefaultSchema()
+ * @generated
+ */
+ public void setDefaultSchema(String newDefaultSchema) {
+ String oldDefaultSchema = defaultSchema;
+ defaultSchema = newDefaultSchema;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.ENTITY_MAPPINGS_INTERNAL__DEFAULT_SCHEMA, oldDefaultSchema, defaultSchema));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Schema</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Schema</em>' attribute.
+ * @see #setSpecifiedSchema(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappingsInternal_SpecifiedSchema()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedSchema() {
+ return specifiedSchema;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getSpecifiedSchema <em>Specified Schema</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Schema</em>' attribute.
+ * @see #getSpecifiedSchema()
+ * @generated
+ */
+ public void setSpecifiedSchema(String newSpecifiedSchema) {
+ String oldSpecifiedSchema = specifiedSchema;
+ specifiedSchema = newSpecifiedSchema;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.ENTITY_MAPPINGS_INTERNAL__SPECIFIED_SCHEMA, oldSpecifiedSchema, specifiedSchema));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Package</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Package</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Package</em>' attribute.
+ * @see #setPackage(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappings_Package()
+ * @model volatile="true"
+ * @generated NOT
+ */
+ public String getPackage() {
+ return getPackageInternal();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getPackage <em>Package</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Package</em>' attribute.
+ * @see #getPackage()
+ * @generated NOT
+ */
+ public void setPackage(String newPackage) {
+ if (newPackage == "") {
+ newPackage = null;
+ }
+ setPackageInternal(newPackage);
+ setPackageForXml(newPackage);
+ }
+
+ /**
+ * Returns the value of the '<em><b>Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Schema</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Schema</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappingsInternal_Schema()
+ * @model transient="true" changeable="false" volatile="true"
+ * @generated NOT
+ */
+ public String getSchema() {
+ return (this.getSpecifiedSchema() == null) ? this.getDefaultSchema() : this.getSpecifiedSchema();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Catalog</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Catalog</em>' attribute.
+ * @see #setDefaultCatalog(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappingsInternal_DefaultCatalog()
+ * @model
+ * @generated
+ */
+ public String getDefaultCatalog() {
+ return defaultCatalog;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getDefaultCatalog <em>Default Catalog</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Default Catalog</em>' attribute.
+ * @see #getDefaultCatalog()
+ * @generated
+ */
+ public void setDefaultCatalog(String newDefaultCatalog) {
+ String oldDefaultCatalog = defaultCatalog;
+ defaultCatalog = newDefaultCatalog;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.ENTITY_MAPPINGS_INTERNAL__DEFAULT_CATALOG, oldDefaultCatalog, defaultCatalog));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Catalog</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Catalog</em>' attribute.
+ * @see #setSpecifiedCatalog(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappingsInternal_SpecifiedCatalog()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedCatalog() {
+ return specifiedCatalog;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getSpecifiedCatalog <em>Specified Catalog</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Catalog</em>' attribute.
+ * @see #getSpecifiedCatalog()
+ * @generated
+ */
+ public void setSpecifiedCatalog(String newSpecifiedCatalog) {
+ String oldSpecifiedCatalog = specifiedCatalog;
+ specifiedCatalog = newSpecifiedCatalog;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.ENTITY_MAPPINGS_INTERNAL__SPECIFIED_CATALOG, oldSpecifiedCatalog, specifiedCatalog));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Catalog</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Catalog</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappingsInternal_Catalog()
+ * @model transient="true" changeable="false" volatile="true"
+ * @generated NOT
+ */
+ public String getCatalog() {
+ return (this.getSpecifiedCatalog() == null) ? this.getDefaultCatalog() : this.getSpecifiedCatalog();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Access</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.AccessType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Access</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Access</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.AccessType
+ * @see #setDefaultAccess(AccessType)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappingsInternal_DefaultAccess()
+ * @model
+ * @generated
+ */
+ public AccessType getDefaultAccess() {
+ return defaultAccess;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getDefaultAccess <em>Default Access</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Default Access</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.AccessType
+ * @see #getDefaultAccess()
+ * @generated
+ */
+ public void setDefaultAccess(AccessType newDefaultAccess) {
+ AccessType oldDefaultAccess = defaultAccess;
+ defaultAccess = newDefaultAccess == null ? DEFAULT_ACCESS_EDEFAULT : newDefaultAccess;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.ENTITY_MAPPINGS_INTERNAL__DEFAULT_ACCESS, oldDefaultAccess, defaultAccess));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Access</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.AccessType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Access</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Access</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.AccessType
+ * @see #setSpecifiedAccess(AccessType)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappingsInternal_SpecifiedAccess()
+ * @model
+ * @generated
+ */
+ public AccessType getSpecifiedAccess() {
+ return specifiedAccess;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getSpecifiedAccess <em>Specified Access</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Access</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.AccessType
+ * @see #getSpecifiedAccess()
+ * @generated
+ */
+ public void setSpecifiedAccess(AccessType newSpecifiedAccess) {
+ AccessType oldSpecifiedAccess = specifiedAccess;
+ specifiedAccess = newSpecifiedAccess == null ? SPECIFIED_ACCESS_EDEFAULT : newSpecifiedAccess;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.ENTITY_MAPPINGS_INTERNAL__SPECIFIED_ACCESS, oldSpecifiedAccess, specifiedAccess));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Type Mappings</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Type Mappings</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>Type Mappings</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappingsInternal_TypeMappings()
+ * @model type="org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping" containment="true"
+ * @generated
+ */
+ public EList<XmlTypeMapping> getTypeMappingsGen() {
+ if (typeMappings == null) {
+ typeMappings = new EObjectContainmentEList<XmlTypeMapping>(XmlTypeMapping.class, this, OrmPackage.ENTITY_MAPPINGS_INTERNAL__TYPE_MAPPINGS);
+ }
+ return typeMappings;
+ }
+
+ public EList<XmlTypeMapping> getTypeMappings() {
+ if (typeMappings == null) {
+ typeMappings = new TypeMappingsList<XmlTypeMapping>();
+ }
+ return getTypeMappingsGen();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Persistent Types</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Persistent Types</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>Persistent Types</em>' reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappingsInternal_PersistentTypes()
+ * @model type="org.eclipse.jpt.core.internal.content.orm.XmlPersistentType" resolveProxies="false"
+ * @generated
+ */
+ public EList<XmlPersistentType> getPersistentTypes() {
+ if (persistentTypes == null) {
+ persistentTypes = new EObjectEList<XmlPersistentType>(XmlPersistentType.class, this, OrmPackage.ENTITY_MAPPINGS_INTERNAL__PERSISTENT_TYPES);
+ }
+ return persistentTypes;
+ }
+
+ public boolean containsPersistentType(IType type) {
+ if (type == null) {
+ return false;
+ }
+ for (XmlPersistentType each : getPersistentTypes()) {
+ if (type.equals(each.findJdtType())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Table Generators</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.content.orm.XmlTableGenerator}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Table Generators</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>Table Generators</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappingsInternal_TableGenerators()
+ * @model type="org.eclipse.jpt.core.internal.content.orm.XmlTableGenerator" containment="true"
+ * @generated
+ */
+ public EList<XmlTableGenerator> getTableGenerators() {
+ if (tableGenerators == null) {
+ tableGenerators = new EObjectContainmentEList<XmlTableGenerator>(XmlTableGenerator.class, this, OrmPackage.ENTITY_MAPPINGS_INTERNAL__TABLE_GENERATORS);
+ }
+ return tableGenerators;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Named Queries</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.content.orm.XmlNamedQuery}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Named Queries</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>Named Queries</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappingsInternal_NamedQueries()
+ * @model type="org.eclipse.jpt.core.internal.content.orm.XmlNamedQuery" containment="true"
+ * @generated
+ */
+ public EList<XmlNamedQuery> getNamedQueries() {
+ if (namedQueries == null) {
+ namedQueries = new EObjectContainmentEList<XmlNamedQuery>(XmlNamedQuery.class, this, OrmPackage.ENTITY_MAPPINGS_INTERNAL__NAMED_QUERIES);
+ }
+ return namedQueries;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Named Native Queries</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.content.orm.XmlNamedNativeQuery}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Named Native Queries</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>Named Native Queries</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappingsInternal_NamedNativeQueries()
+ * @model type="org.eclipse.jpt.core.internal.content.orm.XmlNamedNativeQuery" containment="true"
+ * @generated
+ */
+ public EList<XmlNamedNativeQuery> getNamedNativeQueries() {
+ if (namedNativeQueries == null) {
+ namedNativeQueries = new EObjectContainmentEList<XmlNamedNativeQuery>(XmlNamedNativeQuery.class, this, OrmPackage.ENTITY_MAPPINGS_INTERNAL__NAMED_NATIVE_QUERIES);
+ }
+ return namedNativeQueries;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Sequence Generators</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.content.orm.XmlSequenceGenerator}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Sequence Generators</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>Sequence Generators</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappingsInternal_SequenceGenerators()
+ * @model type="org.eclipse.jpt.core.internal.content.orm.XmlSequenceGenerator" containment="true"
+ * @generated
+ */
+ public EList<XmlSequenceGenerator> getSequenceGenerators() {
+ if (sequenceGenerators == null) {
+ sequenceGenerators = new EObjectContainmentEList<XmlSequenceGenerator>(XmlSequenceGenerator.class, this, OrmPackage.ENTITY_MAPPINGS_INTERNAL__SEQUENCE_GENERATORS);
+ }
+ return sequenceGenerators;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__ROOT :
+ if (root != null)
+ msgs = ((InternalEObject) root).eInverseRemove(this, OrmPackage.XML_ROOT_CONTENT_NODE__ENTITY_MAPPINGS, XmlRootContentNode.class, msgs);
+ return basicSetRoot((XmlRootContentNode) 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 OrmPackage.ENTITY_MAPPINGS_INTERNAL__ROOT :
+ return basicSetRoot(null, msgs);
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__PERSISTENCE_UNIT_METADATA_INTERNAL :
+ return basicSetPersistenceUnitMetadataInternal(null, msgs);
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__TYPE_MAPPINGS :
+ return ((InternalEList<?>) getTypeMappings()).basicRemove(otherEnd, msgs);
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__SEQUENCE_GENERATORS :
+ return ((InternalEList<?>) getSequenceGenerators()).basicRemove(otherEnd, msgs);
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__TABLE_GENERATORS :
+ return ((InternalEList<?>) getTableGenerators()).basicRemove(otherEnd, msgs);
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__NAMED_QUERIES :
+ return ((InternalEList<?>) getNamedQueries()).basicRemove(otherEnd, msgs);
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__NAMED_NATIVE_QUERIES :
+ return ((InternalEList<?>) getNamedNativeQueries()).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 OrmPackage.ENTITY_MAPPINGS_INTERNAL__PERSISTENCE_UNIT_METADATA_FOR_XML :
+ return getPersistenceUnitMetadataForXml();
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__PACKAGE_FOR_XML :
+ return getPackageForXml();
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__PERSISTENCE_UNIT_METADATA :
+ return getPersistenceUnitMetadata();
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__PACKAGE :
+ return getPackage();
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__ROOT :
+ return getRoot();
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__VERSION :
+ return getVersion();
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__DESCRIPTION :
+ return getDescription();
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__PERSISTENCE_UNIT_METADATA_INTERNAL :
+ return getPersistenceUnitMetadataInternal();
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__PACKAGE_INTERNAL :
+ return getPackageInternal();
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__DEFAULT_SCHEMA :
+ return getDefaultSchema();
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__SPECIFIED_SCHEMA :
+ return getSpecifiedSchema();
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__SCHEMA :
+ return getSchema();
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__DEFAULT_CATALOG :
+ return getDefaultCatalog();
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__SPECIFIED_CATALOG :
+ return getSpecifiedCatalog();
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__CATALOG :
+ return getCatalog();
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__DEFAULT_ACCESS :
+ return getDefaultAccess();
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__SPECIFIED_ACCESS :
+ return getSpecifiedAccess();
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__ACCESS :
+ return getAccess();
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__TYPE_MAPPINGS :
+ return getTypeMappings();
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__PERSISTENT_TYPES :
+ return getPersistentTypes();
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__SEQUENCE_GENERATORS :
+ return getSequenceGenerators();
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__TABLE_GENERATORS :
+ return getTableGenerators();
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__NAMED_QUERIES :
+ return getNamedQueries();
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__NAMED_NATIVE_QUERIES :
+ return getNamedNativeQueries();
+ }
+ 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 OrmPackage.ENTITY_MAPPINGS_INTERNAL__PERSISTENCE_UNIT_METADATA_FOR_XML :
+ setPersistenceUnitMetadataForXml((PersistenceUnitMetadataForXml) newValue);
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__PACKAGE_FOR_XML :
+ setPackageForXml((String) newValue);
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__PACKAGE :
+ setPackage((String) newValue);
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__ROOT :
+ setRoot((XmlRootContentNode) newValue);
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__VERSION :
+ setVersion((String) newValue);
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__DESCRIPTION :
+ setDescription((String) newValue);
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__PACKAGE_INTERNAL :
+ setPackageInternal((String) newValue);
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__DEFAULT_SCHEMA :
+ setDefaultSchema((String) newValue);
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__SPECIFIED_SCHEMA :
+ setSpecifiedSchema((String) newValue);
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__DEFAULT_CATALOG :
+ setDefaultCatalog((String) newValue);
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__SPECIFIED_CATALOG :
+ setSpecifiedCatalog((String) newValue);
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__DEFAULT_ACCESS :
+ setDefaultAccess((AccessType) newValue);
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__SPECIFIED_ACCESS :
+ setSpecifiedAccess((AccessType) newValue);
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__TYPE_MAPPINGS :
+ getTypeMappings().clear();
+ getTypeMappings().addAll((Collection<? extends XmlTypeMapping>) newValue);
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__PERSISTENT_TYPES :
+ getPersistentTypes().clear();
+ getPersistentTypes().addAll((Collection<? extends XmlPersistentType>) newValue);
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__SEQUENCE_GENERATORS :
+ getSequenceGenerators().clear();
+ getSequenceGenerators().addAll((Collection<? extends XmlSequenceGenerator>) newValue);
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__TABLE_GENERATORS :
+ getTableGenerators().clear();
+ getTableGenerators().addAll((Collection<? extends XmlTableGenerator>) newValue);
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__NAMED_QUERIES :
+ getNamedQueries().clear();
+ getNamedQueries().addAll((Collection<? extends XmlNamedQuery>) newValue);
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__NAMED_NATIVE_QUERIES :
+ getNamedNativeQueries().clear();
+ getNamedNativeQueries().addAll((Collection<? extends XmlNamedNativeQuery>) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__PERSISTENCE_UNIT_METADATA_FOR_XML :
+ setPersistenceUnitMetadataForXml((PersistenceUnitMetadataForXml) null);
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__PACKAGE_FOR_XML :
+ setPackageForXml(PACKAGE_FOR_XML_EDEFAULT);
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__PACKAGE :
+ setPackage(PACKAGE_EDEFAULT);
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__ROOT :
+ setRoot((XmlRootContentNode) null);
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__VERSION :
+ setVersion(VERSION_EDEFAULT);
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__DESCRIPTION :
+ setDescription(DESCRIPTION_EDEFAULT);
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__PACKAGE_INTERNAL :
+ setPackageInternal(PACKAGE_INTERNAL_EDEFAULT);
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__DEFAULT_SCHEMA :
+ setDefaultSchema(DEFAULT_SCHEMA_EDEFAULT);
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__SPECIFIED_SCHEMA :
+ setSpecifiedSchema(SPECIFIED_SCHEMA_EDEFAULT);
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__DEFAULT_CATALOG :
+ setDefaultCatalog(DEFAULT_CATALOG_EDEFAULT);
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__SPECIFIED_CATALOG :
+ setSpecifiedCatalog(SPECIFIED_CATALOG_EDEFAULT);
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__DEFAULT_ACCESS :
+ setDefaultAccess(DEFAULT_ACCESS_EDEFAULT);
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__SPECIFIED_ACCESS :
+ setSpecifiedAccess(SPECIFIED_ACCESS_EDEFAULT);
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__TYPE_MAPPINGS :
+ getTypeMappings().clear();
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__PERSISTENT_TYPES :
+ getPersistentTypes().clear();
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__SEQUENCE_GENERATORS :
+ getSequenceGenerators().clear();
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__TABLE_GENERATORS :
+ getTableGenerators().clear();
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__NAMED_QUERIES :
+ getNamedQueries().clear();
+ return;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__NAMED_NATIVE_QUERIES :
+ getNamedNativeQueries().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__PERSISTENCE_UNIT_METADATA_FOR_XML :
+ return getPersistenceUnitMetadataForXml() != null;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__PACKAGE_FOR_XML :
+ return PACKAGE_FOR_XML_EDEFAULT == null ? getPackageForXml() != null : !PACKAGE_FOR_XML_EDEFAULT.equals(getPackageForXml());
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__PERSISTENCE_UNIT_METADATA :
+ return getPersistenceUnitMetadata() != null;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__PACKAGE :
+ return PACKAGE_EDEFAULT == null ? getPackage() != null : !PACKAGE_EDEFAULT.equals(getPackage());
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__ROOT :
+ return root != null;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__VERSION :
+ return VERSION_EDEFAULT == null ? version != null : !VERSION_EDEFAULT.equals(version);
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__DESCRIPTION :
+ return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__PERSISTENCE_UNIT_METADATA_INTERNAL :
+ return persistenceUnitMetadataInternal != null;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__PACKAGE_INTERNAL :
+ return PACKAGE_INTERNAL_EDEFAULT == null ? packageInternal != null : !PACKAGE_INTERNAL_EDEFAULT.equals(packageInternal);
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__DEFAULT_SCHEMA :
+ return DEFAULT_SCHEMA_EDEFAULT == null ? defaultSchema != null : !DEFAULT_SCHEMA_EDEFAULT.equals(defaultSchema);
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__SPECIFIED_SCHEMA :
+ return SPECIFIED_SCHEMA_EDEFAULT == null ? specifiedSchema != null : !SPECIFIED_SCHEMA_EDEFAULT.equals(specifiedSchema);
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__SCHEMA :
+ return SCHEMA_EDEFAULT == null ? getSchema() != null : !SCHEMA_EDEFAULT.equals(getSchema());
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__DEFAULT_CATALOG :
+ return DEFAULT_CATALOG_EDEFAULT == null ? defaultCatalog != null : !DEFAULT_CATALOG_EDEFAULT.equals(defaultCatalog);
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__SPECIFIED_CATALOG :
+ return SPECIFIED_CATALOG_EDEFAULT == null ? specifiedCatalog != null : !SPECIFIED_CATALOG_EDEFAULT.equals(specifiedCatalog);
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__CATALOG :
+ return CATALOG_EDEFAULT == null ? getCatalog() != null : !CATALOG_EDEFAULT.equals(getCatalog());
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__DEFAULT_ACCESS :
+ return defaultAccess != DEFAULT_ACCESS_EDEFAULT;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__SPECIFIED_ACCESS :
+ return specifiedAccess != SPECIFIED_ACCESS_EDEFAULT;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__ACCESS :
+ return getAccess() != ACCESS_EDEFAULT;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__TYPE_MAPPINGS :
+ return typeMappings != null && !typeMappings.isEmpty();
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__PERSISTENT_TYPES :
+ return persistentTypes != null && !persistentTypes.isEmpty();
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__SEQUENCE_GENERATORS :
+ return sequenceGenerators != null && !sequenceGenerators.isEmpty();
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__TABLE_GENERATORS :
+ return tableGenerators != null && !tableGenerators.isEmpty();
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__NAMED_QUERIES :
+ return namedQueries != null && !namedQueries.isEmpty();
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__NAMED_NATIVE_QUERIES :
+ return namedNativeQueries != null && !namedNativeQueries.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IJpaContentNode.class) {
+ switch (derivedFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == EntityMappingsForXml.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__PERSISTENCE_UNIT_METADATA_FOR_XML :
+ return OrmPackage.ENTITY_MAPPINGS_FOR_XML__PERSISTENCE_UNIT_METADATA_FOR_XML;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__PACKAGE_FOR_XML :
+ return OrmPackage.ENTITY_MAPPINGS_FOR_XML__PACKAGE_FOR_XML;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == EntityMappings.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__PERSISTENCE_UNIT_METADATA :
+ return OrmPackage.ENTITY_MAPPINGS__PERSISTENCE_UNIT_METADATA;
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL__PACKAGE :
+ return OrmPackage.ENTITY_MAPPINGS__PACKAGE;
+ 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 == IJpaContentNode.class) {
+ switch (baseFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == EntityMappingsForXml.class) {
+ switch (baseFeatureID) {
+ case OrmPackage.ENTITY_MAPPINGS_FOR_XML__PERSISTENCE_UNIT_METADATA_FOR_XML :
+ return OrmPackage.ENTITY_MAPPINGS_INTERNAL__PERSISTENCE_UNIT_METADATA_FOR_XML;
+ case OrmPackage.ENTITY_MAPPINGS_FOR_XML__PACKAGE_FOR_XML :
+ return OrmPackage.ENTITY_MAPPINGS_INTERNAL__PACKAGE_FOR_XML;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == EntityMappings.class) {
+ switch (baseFeatureID) {
+ case OrmPackage.ENTITY_MAPPINGS__PERSISTENCE_UNIT_METADATA :
+ return OrmPackage.ENTITY_MAPPINGS_INTERNAL__PERSISTENCE_UNIT_METADATA;
+ case OrmPackage.ENTITY_MAPPINGS__PACKAGE :
+ return OrmPackage.ENTITY_MAPPINGS_INTERNAL__PACKAGE;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (version: ");
+ result.append(version);
+ result.append(", description: ");
+ result.append(description);
+ result.append(", packageInternal: ");
+ result.append(packageInternal);
+ result.append(", defaultSchema: ");
+ result.append(defaultSchema);
+ result.append(", specifiedSchema: ");
+ result.append(specifiedSchema);
+ result.append(", defaultCatalog: ");
+ result.append(defaultCatalog);
+ result.append(", specifiedCatalog: ");
+ result.append(specifiedCatalog);
+ result.append(", defaultAccess: ");
+ result.append(defaultAccess);
+ result.append(", specifiedAccess: ");
+ result.append(specifiedAccess);
+ result.append(')');
+ return result.toString();
+ }
+
+ public void addMapping(String className, String mappingKey) {
+ XmlPersistentType persistentType = OrmFactory.eINSTANCE.createXmlPersistentType();
+ XmlTypeMapping typeMapping = buildXmlTypeMapping(persistentType.typeMappingProviders(), mappingKey);
+ if (className.startsWith(getPackage() + ".")) {
+ // adds short name if package name is specified
+ className = className.substring(getPackage().length() + 1);
+ }
+ typeMapping.getPersistentType().setClass(className);
+ insertTypeMapping(typeMapping);
+ }
+
+ public void changeMapping(XmlTypeMapping oldMapping, String newMappingKey) {
+ XmlTypeMapping newTypeMapping = buildXmlTypeMapping(oldMapping.getPersistentType().typeMappingProviders(), newMappingKey);
+ getTypeMappings().remove(oldMapping);
+ newTypeMapping.initializeFrom(oldMapping);
+ insertTypeMapping(newTypeMapping);
+ }
+
+ private XmlTypeMapping buildXmlTypeMapping(Collection<IXmlTypeMappingProvider> providers, String key) {
+ for (IXmlTypeMappingProvider provider : providers) {
+ if (provider.key().equals(key)) {
+ return provider.buildTypeMapping();
+ }
+ }
+ //TODO throw an exception? what about the NullJavaTypeMapping?
+ return null;
+ }
+
+ private void insertTypeMapping(XmlTypeMapping newMapping) {
+ int newIndex = CollectionTools.insertionIndexOf(getTypeMappings(), newMapping, buildMappingComparator());
+ getTypeMappings().add(newIndex, newMapping);
+ }
+
+ private Comparator<XmlTypeMapping> buildMappingComparator() {
+ return new Comparator<XmlTypeMapping>() {
+ public int compare(XmlTypeMapping o1, XmlTypeMapping o2) {
+ int o1Sequence = o1.xmlSequence();
+ int o2Sequence = o2.xmlSequence();
+ if (o1Sequence < o2Sequence) {
+ return -1;
+ }
+ if (o1Sequence == o2Sequence) {
+ return 0;
+ }
+ return 1;
+ }
+ };
+ }
+
+ /**
+ * Override this because EntityMappingInternal does not have an eContainer()
+ * This is because entityMappings is the "root" feature of the doc for xml Translators
+ * and thus cannot be "contained"
+ */
+ @Override
+ public IJpaProject getJpaProject() {
+ IJpaFile file = getJpaFile();
+ return (file == null) ? null : file.getJpaProject();
+ }
+
+ /* @see IJpaContentNode#getId() */
+ public Object getId() {
+ return IXmlContentNodes.ENTITY_MAPPINGS_ID;
+ }
+
+ public IJpaContentNode getContentNode(int offset) {
+ for (Iterator i = getTypeMappings().iterator(); i.hasNext();) {
+ XmlTypeMapping mapping = (XmlTypeMapping) i.next();
+ if (mapping.getNode().contains(offset)) {
+ return mapping.getContentNode(offset);
+ }
+ }
+ return this;
+ }
+
+ public void handleJavaElementChangedEvent(ElementChangedEvent event) {
+ for (Iterator i = getTypeMappings().iterator(); i.hasNext();) {
+ XmlTypeMapping mapping = (XmlTypeMapping) i.next();
+ //mapping.javaElementChanged(event);
+ }
+ }
+
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ setDefaultCatalog((String) defaultsContext.getDefault(BaseJpaPlatform.DEFAULT_TABLE_CATALOG_KEY));
+ setDefaultSchema((String) defaultsContext.getDefault(BaseJpaPlatform.DEFAULT_TABLE_SCHEMA_KEY));
+ setDefaultAccess((AccessType) defaultsContext.getDefault(BaseJpaPlatform.DEFAULT_ACCESS_KEY));
+ }
+ private class TypeMappingsList<E>
+ extends EObjectContainmentEList<XmlTypeMapping>
+ {
+ private TypeMappingsList() {
+ super(XmlTypeMapping.class, EntityMappingsInternal.this, OrmPackage.ENTITY_MAPPINGS_INTERNAL__TYPE_MAPPINGS);
+ }
+
+ @Override
+ protected void didAdd(int index, XmlTypeMapping newObject) {
+ getPersistentTypes().add(index, newObject.getPersistentType());
+ }
+
+ @Override
+ protected void didChange() {
+ // TODO Auto-generated method stub
+ super.didChange();
+ }
+
+ @Override
+ protected void didClear(int size, Object[] oldObjects) {
+ getPersistentTypes().clear();
+ }
+
+ @Override
+ protected void didMove(int index, XmlTypeMapping movedObject, int oldIndex) {
+ getPersistentTypes().move(index, movedObject.getPersistentType());
+ }
+
+ @Override
+ protected void didRemove(int index, XmlTypeMapping oldObject) {
+ getPersistentTypes().remove(oldObject.getPersistentType());
+ }
+
+ @Override
+ protected void didSet(int index, XmlTypeMapping newObject, XmlTypeMapping oldObject) {
+ getPersistentTypes().set(index, newObject.getPersistentType());
+ }
+ }
+} // EntityMappingsInternal \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/IXmlAttributeMappingProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/IXmlAttributeMappingProvider.java
new file mode 100644
index 0000000000..93aa6622ff
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/IXmlAttributeMappingProvider.java
@@ -0,0 +1,17 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+public interface IXmlAttributeMappingProvider
+{
+ String key();
+
+ XmlAttributeMapping buildAttributeMapping();
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/IXmlColumnMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/IXmlColumnMapping.java
new file mode 100644
index 0000000000..d50bc4c6e2
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/IXmlColumnMapping.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.jpt.core.internal.mappings.IColumnMapping;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IXml Column Mapping</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.IXmlColumnMapping#getColumnForXml <em>Column For Xml</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIXmlColumnMapping()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IXmlColumnMapping extends IColumnMapping
+{
+ /**
+ * Returns the value of the '<em><b>Column For Xml</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Column For Xml</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Column For Xml</em>' reference.
+ * @see #setColumnForXml(XmlColumn)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIXmlColumnMapping_ColumnForXml()
+ * @model resolveProxies="false" volatile="true"
+ * @generated
+ */
+ XmlColumn getColumnForXml();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.IXmlColumnMapping#getColumnForXml <em>Column For Xml</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Column For Xml</em>' reference.
+ * @see #getColumnForXml()
+ * @generated
+ */
+ void setColumnForXml(XmlColumn value);
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ void makeColumnForXmlNonNull();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ void makeColumnForXmlNull();
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/IXmlContentNodes.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/IXmlContentNodes.java
new file mode 100644
index 0000000000..ce577eff56
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/IXmlContentNodes.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.jpt.core.internal.JpaCorePlugin;
+
+public interface IXmlContentNodes
+{
+ public static final String XML_ROOT_ID =
+ JpaCorePlugin.PLUGIN_ID + ".xml.Root";
+
+ public static final String ENTITY_MAPPINGS_ID =
+ JpaCorePlugin.PLUGIN_ID + ".xml.entityMappings";
+
+ public static final String PERSISTENT_TYPE_ID =
+ JpaCorePlugin.PLUGIN_ID + ".xml.persistentType";
+
+ public static final String PERSISTENT_ATTRIBUTE_ID =
+ JpaCorePlugin.PLUGIN_ID + ".xml.persistentAttribute";
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/IXmlTypeMappingProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/IXmlTypeMappingProvider.java
new file mode 100644
index 0000000000..89c0d73834
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/IXmlTypeMappingProvider.java
@@ -0,0 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+
+public interface IXmlTypeMappingProvider
+{
+ String key();
+
+ XmlTypeMapping buildTypeMapping();
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/OrmFactory.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/OrmFactory.java
new file mode 100644
index 0000000000..107f85235c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/OrmFactory.java
@@ -0,0 +1,655 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+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.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.IAssociationOverride;
+import org.eclipse.jpt.core.internal.mappings.IAttributeOverride;
+import org.eclipse.jpt.core.internal.mappings.IColumn;
+import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.IJoinTable;
+import org.eclipse.jpt.core.internal.mappings.ITable;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage
+ * @generated
+ */
+public class OrmFactory extends EFactoryImpl
+{
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final OrmFactory eINSTANCE = init();
+
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static OrmFactory init() {
+ try {
+ OrmFactory theOrmFactory = (OrmFactory) EPackage.Registry.INSTANCE.getEFactory("jpt.orm.xmi");
+ if (theOrmFactory != null) {
+ return theOrmFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new OrmFactory();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public OrmFactory() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case OrmPackage.XML_ROOT_CONTENT_NODE :
+ return createXmlRootContentNode();
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL :
+ return createEntityMappingsInternal();
+ case OrmPackage.XML_PERSISTENT_TYPE :
+ return createXmlPersistentType();
+ case OrmPackage.XML_MAPPED_SUPERCLASS :
+ return createXmlMappedSuperclass();
+ case OrmPackage.XML_ENTITY_INTERNAL :
+ return createXmlEntityInternal();
+ case OrmPackage.XML_EMBEDDABLE :
+ return createXmlEmbeddable();
+ case OrmPackage.XML_NULL_ATTRIBUTE_MAPPING :
+ return createXmlNullAttributeMapping();
+ case OrmPackage.XML_BASIC :
+ return createXmlBasic();
+ case OrmPackage.XML_ID :
+ return createXmlId();
+ case OrmPackage.XML_TRANSIENT :
+ return createXmlTransient();
+ case OrmPackage.XML_EMBEDDED :
+ return createXmlEmbedded();
+ case OrmPackage.XML_EMBEDDED_ID :
+ return createXmlEmbeddedId();
+ case OrmPackage.XML_VERSION :
+ return createXmlVersion();
+ case OrmPackage.XML_ONE_TO_MANY :
+ return createXmlOneToMany();
+ case OrmPackage.XML_MANY_TO_MANY :
+ return createXmlManyToMany();
+ case OrmPackage.XML_PERSISTENT_ATTRIBUTE :
+ return createXmlPersistentAttribute();
+ case OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL :
+ return createPersistenceUnitMetadataInternal();
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL :
+ return createPersistenceUnitDefaultsInternal();
+ case OrmPackage.XML_TABLE :
+ return createXmlTable();
+ case OrmPackage.XML_COLUMN :
+ return createXmlColumn();
+ case OrmPackage.XML_JOIN_COLUMN :
+ return createXmlJoinColumn();
+ case OrmPackage.XML_MANY_TO_ONE :
+ return createXmlManyToOne();
+ case OrmPackage.XML_ONE_TO_ONE :
+ return createXmlOneToOne();
+ case OrmPackage.XML_JOIN_TABLE :
+ return createXmlJoinTable();
+ case OrmPackage.XML_ATTRIBUTE_OVERRIDE :
+ return createXmlAttributeOverride();
+ case OrmPackage.XML_ASSOCIATION_OVERRIDE :
+ return createXmlAssociationOverride();
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN :
+ return createXmlDiscriminatorColumn();
+ case OrmPackage.XML_SECONDARY_TABLE :
+ return createXmlSecondaryTable();
+ case OrmPackage.XML_PRIMARY_KEY_JOIN_COLUMN :
+ return createXmlPrimaryKeyJoinColumn();
+ case OrmPackage.XML_GENERATED_VALUE :
+ return createXmlGeneratedValue();
+ case OrmPackage.XML_SEQUENCE_GENERATOR :
+ return createXmlSequenceGenerator();
+ case OrmPackage.XML_TABLE_GENERATOR :
+ return createXmlTableGenerator();
+ case OrmPackage.XML_ORDER_BY :
+ return createXmlOrderBy();
+ case OrmPackage.XML_NAMED_QUERY :
+ return createXmlNamedQuery();
+ case OrmPackage.XML_NAMED_NATIVE_QUERY :
+ return createXmlNamedNativeQuery();
+ case OrmPackage.XML_QUERY_HINT :
+ return createXmlQueryHint();
+ default :
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XmlRootContentNode createXmlRootContentNode() {
+ XmlRootContentNode xmlRootContentNode = new XmlRootContentNode();
+ return xmlRootContentNode;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EntityMappingsInternal createEntityMappingsInternal() {
+ EntityMappingsInternal entityMappingsInternal = new EntityMappingsInternal();
+ return entityMappingsInternal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XmlPersistentType createXmlPersistentType() {
+ XmlPersistentType xmlPersistentType = new XmlPersistentType();
+ return xmlPersistentType;
+ }
+
+ public XmlPersistentType createXmlPersistentType(String mappingKey) {
+ XmlPersistentType xmlPersistentType = new XmlPersistentType(mappingKey);
+ return xmlPersistentType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XmlMappedSuperclass createXmlMappedSuperclassGen() {
+ XmlMappedSuperclass xmlMappedSuperclass = new XmlMappedSuperclass();
+ return xmlMappedSuperclass;
+ }
+
+ public XmlMappedSuperclass createXmlMappedSuperclass() {
+ XmlMappedSuperclass mappedSuperclass = createXmlMappedSuperclassGen();
+ XmlPersistentType persistentType = createXmlPersistentType(IMappingKeys.MAPPED_SUPERCLASS_TYPE_MAPPING_KEY);
+ mappedSuperclass.setPersistentType(persistentType);
+ return mappedSuperclass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XmlEntityInternal createXmlEntityInternalGen() {
+ XmlEntityInternal xmlEntityInternal = new XmlEntityInternal();
+ return xmlEntityInternal;
+ }
+
+ public XmlEntityInternal createXmlEntityInternal() {
+ XmlEntityInternal entity = createXmlEntityInternalGen();
+ XmlPersistentType persistentType = createXmlPersistentType(IMappingKeys.ENTITY_TYPE_MAPPING_KEY);
+ entity.setPersistentType(persistentType);
+ return entity;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XmlEmbeddable createXmlEmbeddableGen() {
+ XmlEmbeddable xmlEmbeddable = new XmlEmbeddable();
+ return xmlEmbeddable;
+ }
+
+ public XmlEmbeddable createXmlEmbeddable() {
+ XmlEmbeddable embeddable = createXmlEmbeddableGen();
+ XmlPersistentType persistentType = createXmlPersistentType(IMappingKeys.EMBEDDABLE_TYPE_MAPPING_KEY);
+ embeddable.setPersistentType(persistentType);
+ return embeddable;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XmlNullAttributeMapping createXmlNullAttributeMappingGen() {
+ XmlNullAttributeMapping xmlNullAttributeMapping = new XmlNullAttributeMapping();
+ return xmlNullAttributeMapping;
+ }
+
+ public XmlNullAttributeMapping createXmlNullAttributeMapping() {
+ XmlNullAttributeMapping xmlNullAttributeMapping = createXmlNullAttributeMappingGen();
+ XmlPersistentAttribute persistentAttribute = createXmlPersistentAttribute(null);
+ xmlNullAttributeMapping.setPersistentAttribute(persistentAttribute);
+ return xmlNullAttributeMapping;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XmlPersistentAttribute createXmlPersistentAttribute() {
+ XmlPersistentAttribute xmlPersistentAttribute = new XmlPersistentAttribute();
+ return xmlPersistentAttribute;
+ }
+
+ public XmlPersistentAttribute createXmlPersistentAttribute(String mappingKey) {
+ XmlPersistentAttribute xmlPersistentAttribute = new XmlPersistentAttribute(mappingKey);
+ return xmlPersistentAttribute;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XmlBasic createXmlBasicGen() {
+ XmlBasic xmlBasic = new XmlBasic();
+ return xmlBasic;
+ }
+
+ public XmlBasic createXmlBasic() {
+ XmlBasic basic = createXmlBasicGen();
+ XmlPersistentAttribute persistentAttribute = createXmlPersistentAttribute(IMappingKeys.BASIC_ATTRIBUTE_MAPPING_KEY);
+ basic.setPersistentAttribute(persistentAttribute);
+ return basic;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XmlId createXmlIdGen() {
+ XmlId xmlId = new XmlId();
+ return xmlId;
+ }
+
+ public XmlId createXmlId() {
+ XmlId id = createXmlIdGen();
+ XmlPersistentAttribute persistentAttribute = createXmlPersistentAttribute(IMappingKeys.ID_ATTRIBUTE_MAPPING_KEY);
+ id.setPersistentAttribute(persistentAttribute);
+ return id;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XmlTransient createXmlTransientGen() {
+ XmlTransient xmlTransient = new XmlTransient();
+ return xmlTransient;
+ }
+
+ public XmlTransient createXmlTransient() {
+ XmlTransient xmlTransient = createXmlTransientGen();
+ XmlPersistentAttribute persistentAttribute = createXmlPersistentAttribute(IMappingKeys.TRANSIENT_ATTRIBUTE_MAPPING_KEY);
+ xmlTransient.setPersistentAttribute(persistentAttribute);
+ return xmlTransient;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XmlEmbedded createXmlEmbeddedGen() {
+ XmlEmbedded xmlEmbedded = new XmlEmbedded();
+ return xmlEmbedded;
+ }
+
+ public XmlEmbedded createXmlEmbedded() {
+ XmlEmbedded xmlEmbedded = createXmlEmbeddedGen();
+ XmlPersistentAttribute persistentAttribute = createXmlPersistentAttribute(IMappingKeys.EMBEDDED_ATTRIBUTE_MAPPING_KEY);
+ xmlEmbedded.setPersistentAttribute(persistentAttribute);
+ return xmlEmbedded;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XmlEmbeddedId createXmlEmbeddedIdGen() {
+ XmlEmbeddedId xmlEmbeddedId = new XmlEmbeddedId();
+ return xmlEmbeddedId;
+ }
+
+ public XmlEmbeddedId createXmlEmbeddedId() {
+ XmlEmbeddedId xmlEmbeddedId = createXmlEmbeddedIdGen();
+ XmlPersistentAttribute persistentAttribute = createXmlPersistentAttribute(IMappingKeys.EMBEDDED_ID_ATTRIBUTE_MAPPING_KEY);
+ xmlEmbeddedId.setPersistentAttribute(persistentAttribute);
+ return xmlEmbeddedId;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XmlVersion createXmlVersionGen() {
+ XmlVersion xmlVersion = new XmlVersion();
+ return xmlVersion;
+ }
+
+ public XmlVersion createXmlVersion() {
+ XmlVersion xmlVersion = createXmlVersionGen();
+ XmlPersistentAttribute persistentAttribute = createXmlPersistentAttribute(IMappingKeys.VERSION_ATTRIBUTE_MAPPING_KEY);
+ xmlVersion.setPersistentAttribute(persistentAttribute);
+ return xmlVersion;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XmlOneToMany createXmlOneToManyGen() {
+ XmlOneToMany xmlOneToMany = new XmlOneToMany();
+ return xmlOneToMany;
+ }
+
+ public XmlOneToMany createXmlOneToMany() {
+ XmlOneToMany oneToMany = createXmlOneToManyGen();
+ XmlPersistentAttribute persistentAttribute = createXmlPersistentAttribute(IMappingKeys.ONE_TO_MANY_ATTRIBUTE_MAPPING_KEY);
+ oneToMany.setPersistentAttribute(persistentAttribute);
+ return oneToMany;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XmlManyToMany createXmlManyToManyGen() {
+ XmlManyToMany xmlManyToMany = new XmlManyToMany();
+ return xmlManyToMany;
+ }
+
+ public XmlManyToMany createXmlManyToMany() {
+ XmlManyToMany manyToMany = createXmlManyToManyGen();
+ XmlPersistentAttribute persistentAttribute = createXmlPersistentAttribute(IMappingKeys.MANY_TO_MANY_ATTRIBUTE_MAPPING_KEY);
+ manyToMany.setPersistentAttribute(persistentAttribute);
+ return manyToMany;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PersistenceUnitMetadataInternal createPersistenceUnitMetadataInternal() {
+ PersistenceUnitMetadataInternal persistenceUnitMetadataInternal = new PersistenceUnitMetadataInternal();
+ return persistenceUnitMetadataInternal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PersistenceUnitDefaultsInternal createPersistenceUnitDefaultsInternal() {
+ PersistenceUnitDefaultsInternal persistenceUnitDefaultsInternal = new PersistenceUnitDefaultsInternal();
+ return persistenceUnitDefaultsInternal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XmlTable createXmlTable() {
+ XmlTable xmlTable = new XmlTable();
+ return xmlTable;
+ }
+
+ public XmlTable createXmlTable(ITable.Owner owner) {
+ return new XmlTable(owner);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XmlColumn createXmlColumn() {
+ XmlColumn xmlColumn = new XmlColumn();
+ return xmlColumn;
+ }
+
+ public XmlColumn createXmlColumn(IColumn.Owner owner) {
+ return new XmlColumn(owner);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public XmlJoinColumn createXmlJoinColumn() {
+ throw new UnsupportedOperationException("Use createXmlJoinColumn(IColumn.Owner) instead");
+ }
+
+ public XmlJoinColumn createXmlJoinColumn(IJoinColumn.Owner owner) {
+ return new XmlJoinColumn(owner);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XmlManyToOne createXmlManyToOneGen() {
+ XmlManyToOne xmlManyToOne = new XmlManyToOne();
+ return xmlManyToOne;
+ }
+
+ public XmlManyToOne createXmlManyToOne() {
+ XmlManyToOne xmlManyToOne = createXmlManyToOneGen();
+ XmlPersistentAttribute persistentAttribute = createXmlPersistentAttribute(IMappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY);
+ xmlManyToOne.setPersistentAttribute(persistentAttribute);
+ return xmlManyToOne;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XmlOneToOne createXmlOneToOneGen() {
+ XmlOneToOne xmlOneToOne = new XmlOneToOne();
+ return xmlOneToOne;
+ }
+
+ public XmlOneToOne createXmlOneToOne() {
+ XmlOneToOne xmlOneToOne = createXmlOneToOneGen();
+ XmlPersistentAttribute persistentAttribute = createXmlPersistentAttribute(IMappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY);
+ xmlOneToOne.setPersistentAttribute(persistentAttribute);
+ return xmlOneToOne;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XmlJoinTable createXmlJoinTable() {
+ XmlJoinTable xmlJoinTable = new XmlJoinTable();
+ return xmlJoinTable;
+ }
+
+ public XmlJoinTable createXmlJoinTable(IJoinTable.Owner owner) {
+ return new XmlJoinTable(owner);
+ }
+
+ public XmlAttributeOverride createXmlAttributeOverride() {
+ throw new UnsupportedOperationException("Use createXmlAttributeOverride(IAttributeOverride.Owner) instead");
+ }
+
+ public XmlAttributeOverride createXmlAttributeOverride(IAttributeOverride.Owner owner) {
+ XmlAttributeOverride xmlAttributeOverride = new XmlAttributeOverride(owner);
+ return xmlAttributeOverride;
+ }
+
+ public XmlAssociationOverride createXmlAssociationOverride() {
+ throw new UnsupportedOperationException("Use createXmlAssociationOverride(IAssociationOverride.Owner) instead");
+ }
+
+ public XmlAssociationOverride createXmlAssociationOverride(IAssociationOverride.Owner owner) {
+ XmlAssociationOverride xmlAssociationOverride = new XmlAssociationOverride(owner);
+ return xmlAssociationOverride;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XmlDiscriminatorColumn createXmlDiscriminatorColumn() {
+ XmlDiscriminatorColumn xmlDiscriminatorColumn = new XmlDiscriminatorColumn();
+ return xmlDiscriminatorColumn;
+ }
+
+ public XmlSecondaryTable createXmlSecondaryTable() {
+ throw new UnsupportedOperationException();
+ }
+
+ public XmlPrimaryKeyJoinColumn createXmlPrimaryKeyJoinColumn() {
+ throw new UnsupportedOperationException("Use createXmlPrimaryKeyJoinColumn(INamedColumn.Owner) instead");
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XmlGeneratedValue createXmlGeneratedValue() {
+ XmlGeneratedValue xmlGeneratedValue = new XmlGeneratedValue();
+ return xmlGeneratedValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XmlSequenceGenerator createXmlSequenceGenerator() {
+ XmlSequenceGenerator xmlSequenceGenerator = new XmlSequenceGenerator();
+ return xmlSequenceGenerator;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XmlTableGenerator createXmlTableGenerator() {
+ XmlTableGenerator xmlTableGenerator = new XmlTableGenerator();
+ return xmlTableGenerator;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XmlOrderBy createXmlOrderBy() {
+ XmlOrderBy xmlOrderBy = new XmlOrderBy();
+ return xmlOrderBy;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XmlNamedQuery createXmlNamedQuery() {
+ XmlNamedQuery xmlNamedQuery = new XmlNamedQuery();
+ return xmlNamedQuery;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XmlNamedNativeQuery createXmlNamedNativeQuery() {
+ XmlNamedNativeQuery xmlNamedNativeQuery = new XmlNamedNativeQuery();
+ return xmlNamedNativeQuery;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XmlQueryHint createXmlQueryHint() {
+ XmlQueryHint xmlQueryHint = new XmlQueryHint();
+ return xmlQueryHint;
+ }
+
+ public XmlPrimaryKeyJoinColumn createXmlPrimaryKeyJoinColumn(IAbstractJoinColumn.Owner owner) {
+ XmlPrimaryKeyJoinColumn xmlPrimaryKeyJoinColumn = new XmlPrimaryKeyJoinColumn(owner);
+ return xmlPrimaryKeyJoinColumn;
+ }
+
+ public XmlSecondaryTable createXmlSecondaryTable(ITable.Owner owner) {
+ XmlSecondaryTable xmlSecondaryTable = new XmlSecondaryTable(owner);
+ return xmlSecondaryTable;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public OrmPackage getOrmPackage() {
+ return (OrmPackage) getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static OrmPackage getPackage() {
+ return OrmPackage.eINSTANCE;
+ }
+} //JpaCoreXmlFactory \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/OrmInit.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/OrmInit.java
new file mode 100644
index 0000000000..b93a2b8831
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/OrmInit.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2007 Oracle. All rights reserved. This program and
+ * the accompanying materials are made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.emf.ecore.EFactory;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.jpt.core.internal.content.orm.resource.OrmXmlResourceFactory;
+import org.eclipse.wst.common.componentcore.internal.impl.WTPEntityResolver;
+import org.eclipse.wst.common.internal.emf.utilities.DOMUtilities;
+import org.eclipse.wst.common.internal.emf.utilities.ExtendedEcoreUtil;
+
+public class OrmInit
+{
+ private static boolean initialized = false;
+
+ public static void init() {
+ init(true);
+ }
+
+ public static void init(boolean shouldPreregisterPackages) {
+ if (! initialized) {
+ initialized = true;
+ DOMUtilities.setDefaultEntityResolver(WTPEntityResolver.INSTANCE);
+ initResourceFactories();
+ }
+ if (shouldPreregisterPackages) {
+ preregisterPackages();
+ }
+ }
+
+ private static void initResourceFactories() {
+ OrmXmlResourceFactory.register();
+ }
+
+ private static void preregisterPackages() {
+ ExtendedEcoreUtil.preRegisterPackage(
+ "orm.xmi", //$NON-NLS-1$
+ new EPackage.Descriptor() {
+ public EPackage getEPackage() {
+ return OrmPackage.eINSTANCE;
+ }
+
+ public EFactory getEFactory() {
+ return OrmFactory.eINSTANCE;
+ }
+ }
+ );
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/OrmPackage.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/OrmPackage.java
new file mode 100644
index 0000000000..acf4859eaa
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/OrmPackage.java
@@ -0,0 +1,9394 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+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.jem.java.JavaRefPackage;
+import org.eclipse.jpt.core.internal.JpaCorePackage;
+import org.eclipse.jpt.core.internal.content.java.JpaJavaPackage;
+import org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage;
+import org.eclipse.jpt.core.internal.content.persistence.PersistencePackage;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmFactory
+ * @model kind="package"
+ * @generated
+ */
+public class OrmPackage extends EPackageImpl
+{
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNAME = "orm";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNS_URI = "jpt.orm.xmi";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNS_PREFIX = "org.eclipse.jpt.core.content.orm";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final OrmPackage eINSTANCE = org.eclipse.jpt.core.internal.content.orm.OrmPackage.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlRootContentNode <em>Xml Root Content Node</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlRootContentNode
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlRootContentNode()
+ * @generated
+ */
+ public static final int XML_ROOT_CONTENT_NODE = 0;
+
+ /**
+ * The feature id for the '<em><b>Jpa File</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ROOT_CONTENT_NODE__JPA_FILE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Entity Mappings</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ROOT_CONTENT_NODE__ENTITY_MAPPINGS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Xml Root Content Node</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ROOT_CONTENT_NODE_FEATURE_COUNT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal <em>Entity Mappings Internal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappingsInternal()
+ * @generated
+ */
+ public static final int ENTITY_MAPPINGS_INTERNAL = 1;
+
+ /**
+ * The feature id for the '<em><b>Persistence Unit Metadata For Xml</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ENTITY_MAPPINGS_INTERNAL__PERSISTENCE_UNIT_METADATA_FOR_XML = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Package For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ENTITY_MAPPINGS_INTERNAL__PACKAGE_FOR_XML = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Persistence Unit Metadata</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ENTITY_MAPPINGS_INTERNAL__PERSISTENCE_UNIT_METADATA = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Package</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ENTITY_MAPPINGS_INTERNAL__PACKAGE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Root</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ENTITY_MAPPINGS_INTERNAL__ROOT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Version</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ENTITY_MAPPINGS_INTERNAL__VERSION = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Description</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ENTITY_MAPPINGS_INTERNAL__DESCRIPTION = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 6;
+
+ /**
+ * The feature id for the '<em><b>Persistence Unit Metadata Internal</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ENTITY_MAPPINGS_INTERNAL__PERSISTENCE_UNIT_METADATA_INTERNAL = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 7;
+
+ /**
+ * The feature id for the '<em><b>Package Internal</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ENTITY_MAPPINGS_INTERNAL__PACKAGE_INTERNAL = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 8;
+
+ /**
+ * The feature id for the '<em><b>Default Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ENTITY_MAPPINGS_INTERNAL__DEFAULT_SCHEMA = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 9;
+
+ /**
+ * The feature id for the '<em><b>Specified Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ENTITY_MAPPINGS_INTERNAL__SPECIFIED_SCHEMA = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 10;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ENTITY_MAPPINGS_INTERNAL__SCHEMA = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 11;
+
+ /**
+ * The feature id for the '<em><b>Default Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ENTITY_MAPPINGS_INTERNAL__DEFAULT_CATALOG = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 12;
+
+ /**
+ * The feature id for the '<em><b>Specified Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ENTITY_MAPPINGS_INTERNAL__SPECIFIED_CATALOG = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 13;
+
+ /**
+ * The feature id for the '<em><b>Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ENTITY_MAPPINGS_INTERNAL__CATALOG = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 14;
+
+ /**
+ * The feature id for the '<em><b>Default Access</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ENTITY_MAPPINGS_INTERNAL__DEFAULT_ACCESS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 15;
+
+ /**
+ * The feature id for the '<em><b>Specified Access</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ENTITY_MAPPINGS_INTERNAL__SPECIFIED_ACCESS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 16;
+
+ /**
+ * The feature id for the '<em><b>Access</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ENTITY_MAPPINGS_INTERNAL__ACCESS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 17;
+
+ /**
+ * The feature id for the '<em><b>Type Mappings</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ENTITY_MAPPINGS_INTERNAL__TYPE_MAPPINGS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 18;
+
+ /**
+ * The feature id for the '<em><b>Persistent Types</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ENTITY_MAPPINGS_INTERNAL__PERSISTENT_TYPES = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 19;
+
+ /**
+ * The feature id for the '<em><b>Sequence Generators</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ENTITY_MAPPINGS_INTERNAL__SEQUENCE_GENERATORS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 20;
+
+ /**
+ * The feature id for the '<em><b>Table Generators</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ENTITY_MAPPINGS_INTERNAL__TABLE_GENERATORS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 21;
+
+ /**
+ * The feature id for the '<em><b>Named Queries</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ENTITY_MAPPINGS_INTERNAL__NAMED_QUERIES = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 22;
+
+ /**
+ * The feature id for the '<em><b>Named Native Queries</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ENTITY_MAPPINGS_INTERNAL__NAMED_NATIVE_QUERIES = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 23;
+
+ /**
+ * The number of structural features of the '<em>Entity Mappings Internal</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ENTITY_MAPPINGS_INTERNAL_FEATURE_COUNT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 24;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappings <em>Entity Mappings</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.EntityMappings
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappings()
+ * @generated
+ */
+ public static final int ENTITY_MAPPINGS = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsForXml <em>Entity Mappings For Xml</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.EntityMappingsForXml
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappingsForXml()
+ * @generated
+ */
+ public static final int ENTITY_MAPPINGS_FOR_XML = 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping <em>Xml Type Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlTypeMapping()
+ * @generated
+ */
+ public static final int XML_TYPE_MAPPING = 4;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentType <em>Xml Persistent Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlPersistentType
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlPersistentType()
+ * @generated
+ */
+ public static final int XML_PERSISTENT_TYPE = 5;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlEntity <em>Xml Entity</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlEntity
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlEntity()
+ * @generated
+ */
+ public static final int XML_ENTITY = 9;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlEmbeddable <em>Xml Embeddable</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlEmbeddable
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlEmbeddable()
+ * @generated
+ */
+ public static final int XML_EMBEDDABLE = 10;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlMappedSuperclass <em>Xml Mapped Superclass</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlMappedSuperclass
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlMappedSuperclass()
+ * @generated
+ */
+ public static final int XML_MAPPED_SUPERCLASS = 6;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlAttributeMapping <em>Xml Attribute Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlAttributeMapping
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlAttributeMapping()
+ * @generated
+ */
+ public static final int XML_ATTRIBUTE_MAPPING = 11;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentAttribute <em>Xml Persistent Attribute</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlPersistentAttribute
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlPersistentAttribute()
+ * @generated
+ */
+ public static final int XML_PERSISTENT_ATTRIBUTE = 24;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlBasic <em>Xml Basic</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlBasic
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlBasic()
+ * @generated
+ */
+ public static final int XML_BASIC = 13;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlId <em>Xml Id</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlId
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlId()
+ * @generated
+ */
+ public static final int XML_ID = 14;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataInternal <em>Persistence Unit Metadata Internal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataInternal
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitMetadataInternal()
+ * @generated
+ */
+ public static final int PERSISTENCE_UNIT_METADATA_INTERNAL = 25;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadata <em>Persistence Unit Metadata</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadata
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitMetadata()
+ * @generated
+ */
+ public static final int PERSISTENCE_UNIT_METADATA = 26;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataForXml <em>Persistence Unit Metadata For Xml</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataForXml
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitMetadataForXml()
+ * @generated
+ */
+ public static final int PERSISTENCE_UNIT_METADATA_FOR_XML = 27;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal <em>Persistence Unit Defaults Internal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitDefaultsInternal()
+ * @generated
+ */
+ public static final int PERSISTENCE_UNIT_DEFAULTS_INTERNAL = 28;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaults <em>Persistence Unit Defaults</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaults
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitDefaults()
+ * @generated
+ */
+ public static final int PERSISTENCE_UNIT_DEFAULTS = 29;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsForXml <em>Persistence Unit Defaults For Xml</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsForXml
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitDefaultsForXml()
+ * @generated
+ */
+ public static final int PERSISTENCE_UNIT_DEFAULTS_FOR_XML = 30;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMapping <em>Xml Multi Relationship Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMapping
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlMultiRelationshipMapping()
+ * @generated
+ */
+ public static final int XML_MULTI_RELATIONSHIP_MAPPING = 21;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlOneToMany <em>Xml One To Many</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlOneToMany
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlOneToMany()
+ * @generated
+ */
+ public static final int XML_ONE_TO_MANY = 22;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlManyToMany <em>Xml Many To Many</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlManyToMany
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlManyToMany()
+ * @generated
+ */
+ public static final int XML_MANY_TO_MANY = 23;
+
+ /**
+ * The feature id for the '<em><b>Persistence Unit Metadata</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ENTITY_MAPPINGS__PERSISTENCE_UNIT_METADATA = 0;
+
+ /**
+ * The feature id for the '<em><b>Package</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ENTITY_MAPPINGS__PACKAGE = 1;
+
+ /**
+ * The number of structural features of the '<em>Entity Mappings</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ENTITY_MAPPINGS_FEATURE_COUNT = 2;
+
+ /**
+ * The feature id for the '<em><b>Persistence Unit Metadata For Xml</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ENTITY_MAPPINGS_FOR_XML__PERSISTENCE_UNIT_METADATA_FOR_XML = 0;
+
+ /**
+ * The feature id for the '<em><b>Package For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ENTITY_MAPPINGS_FOR_XML__PACKAGE_FOR_XML = 1;
+
+ /**
+ * The number of structural features of the '<em>Entity Mappings For Xml</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ENTITY_MAPPINGS_FOR_XML_FEATURE_COUNT = 2;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TYPE_MAPPING__NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Table Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TYPE_MAPPING__TABLE_NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Default Access</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TYPE_MAPPING__DEFAULT_ACCESS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Specified Access</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TYPE_MAPPING__SPECIFIED_ACCESS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Access</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TYPE_MAPPING__ACCESS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Metadata Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TYPE_MAPPING__METADATA_COMPLETE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Persistent Type</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TYPE_MAPPING__PERSISTENT_TYPE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 6;
+
+ /**
+ * The number of structural features of the '<em>Xml Type Mapping</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TYPE_MAPPING_FEATURE_COUNT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 7;
+
+ /**
+ * The feature id for the '<em><b>Mapping Key</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_PERSISTENT_TYPE__MAPPING_KEY = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Class</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_PERSISTENT_TYPE__CLASS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Attribute Mappings</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_PERSISTENT_TYPE__ATTRIBUTE_MAPPINGS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Specified Attribute Mappings</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_PERSISTENT_TYPE__SPECIFIED_ATTRIBUTE_MAPPINGS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Virtual Attribute Mappings</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_PERSISTENT_TYPE__VIRTUAL_ATTRIBUTE_MAPPINGS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Persistent Attributes</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_PERSISTENT_TYPE__PERSISTENT_ATTRIBUTES = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Specified Persistent Attributes</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_PERSISTENT_TYPE__SPECIFIED_PERSISTENT_ATTRIBUTES = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 6;
+
+ /**
+ * The feature id for the '<em><b>Virtual Persistent Attributes</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_PERSISTENT_TYPE__VIRTUAL_PERSISTENT_ATTRIBUTES = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 7;
+
+ /**
+ * The number of structural features of the '<em>Xml Persistent Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_PERSISTENT_TYPE_FEATURE_COUNT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 8;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MAPPED_SUPERCLASS__NAME = XML_TYPE_MAPPING__NAME;
+
+ /**
+ * The feature id for the '<em><b>Table Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MAPPED_SUPERCLASS__TABLE_NAME = XML_TYPE_MAPPING__TABLE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Default Access</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MAPPED_SUPERCLASS__DEFAULT_ACCESS = XML_TYPE_MAPPING__DEFAULT_ACCESS;
+
+ /**
+ * The feature id for the '<em><b>Specified Access</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MAPPED_SUPERCLASS__SPECIFIED_ACCESS = XML_TYPE_MAPPING__SPECIFIED_ACCESS;
+
+ /**
+ * The feature id for the '<em><b>Access</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MAPPED_SUPERCLASS__ACCESS = XML_TYPE_MAPPING__ACCESS;
+
+ /**
+ * The feature id for the '<em><b>Metadata Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MAPPED_SUPERCLASS__METADATA_COMPLETE = XML_TYPE_MAPPING__METADATA_COMPLETE;
+
+ /**
+ * The feature id for the '<em><b>Persistent Type</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MAPPED_SUPERCLASS__PERSISTENT_TYPE = XML_TYPE_MAPPING__PERSISTENT_TYPE;
+
+ /**
+ * The number of structural features of the '<em>Xml Mapped Superclass</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MAPPED_SUPERCLASS_FEATURE_COUNT = XML_TYPE_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlEntityInternal <em>Xml Entity Internal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlEntityInternal
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlEntityInternal()
+ * @generated
+ */
+ public static final int XML_ENTITY_INTERNAL = 7;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_INTERNAL__NAME = XML_TYPE_MAPPING__NAME;
+
+ /**
+ * The feature id for the '<em><b>Table Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_INTERNAL__TABLE_NAME = XML_TYPE_MAPPING__TABLE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Default Access</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_INTERNAL__DEFAULT_ACCESS = XML_TYPE_MAPPING__DEFAULT_ACCESS;
+
+ /**
+ * The feature id for the '<em><b>Specified Access</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_INTERNAL__SPECIFIED_ACCESS = XML_TYPE_MAPPING__SPECIFIED_ACCESS;
+
+ /**
+ * The feature id for the '<em><b>Access</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_INTERNAL__ACCESS = XML_TYPE_MAPPING__ACCESS;
+
+ /**
+ * The feature id for the '<em><b>Metadata Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_INTERNAL__METADATA_COMPLETE = XML_TYPE_MAPPING__METADATA_COMPLETE;
+
+ /**
+ * The feature id for the '<em><b>Persistent Type</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_INTERNAL__PERSISTENT_TYPE = XML_TYPE_MAPPING__PERSISTENT_TYPE;
+
+ /**
+ * The feature id for the '<em><b>Table For Xml</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_INTERNAL__TABLE_FOR_XML = XML_TYPE_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Discriminator Column For Xml</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_INTERNAL__DISCRIMINATOR_COLUMN_FOR_XML = XML_TYPE_MAPPING_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_INTERNAL__SPECIFIED_NAME = XML_TYPE_MAPPING_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_INTERNAL__DEFAULT_NAME = XML_TYPE_MAPPING_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Table</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_INTERNAL__TABLE = XML_TYPE_MAPPING_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Primary Key Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_INTERNAL__PRIMARY_KEY_JOIN_COLUMNS = XML_TYPE_MAPPING_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Specified Primary Key Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_INTERNAL__SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS = XML_TYPE_MAPPING_FEATURE_COUNT + 6;
+
+ /**
+ * The feature id for the '<em><b>Default Primary Key Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_INTERNAL__DEFAULT_PRIMARY_KEY_JOIN_COLUMNS = XML_TYPE_MAPPING_FEATURE_COUNT + 7;
+
+ /**
+ * The feature id for the '<em><b>Inheritance Strategy</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_INTERNAL__INHERITANCE_STRATEGY = XML_TYPE_MAPPING_FEATURE_COUNT + 8;
+
+ /**
+ * The feature id for the '<em><b>Default Discriminator Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_INTERNAL__DEFAULT_DISCRIMINATOR_VALUE = XML_TYPE_MAPPING_FEATURE_COUNT + 9;
+
+ /**
+ * The feature id for the '<em><b>Specified Discriminator Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_INTERNAL__SPECIFIED_DISCRIMINATOR_VALUE = XML_TYPE_MAPPING_FEATURE_COUNT + 10;
+
+ /**
+ * The feature id for the '<em><b>Discriminator Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_INTERNAL__DISCRIMINATOR_VALUE = XML_TYPE_MAPPING_FEATURE_COUNT + 11;
+
+ /**
+ * The feature id for the '<em><b>Discriminator Column</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_INTERNAL__DISCRIMINATOR_COLUMN = XML_TYPE_MAPPING_FEATURE_COUNT + 12;
+
+ /**
+ * The feature id for the '<em><b>Sequence Generator</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_INTERNAL__SEQUENCE_GENERATOR = XML_TYPE_MAPPING_FEATURE_COUNT + 13;
+
+ /**
+ * The feature id for the '<em><b>Table Generator</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_INTERNAL__TABLE_GENERATOR = XML_TYPE_MAPPING_FEATURE_COUNT + 14;
+
+ /**
+ * The feature id for the '<em><b>Attribute Overrides</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_INTERNAL__ATTRIBUTE_OVERRIDES = XML_TYPE_MAPPING_FEATURE_COUNT + 15;
+
+ /**
+ * The feature id for the '<em><b>Specified Attribute Overrides</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_INTERNAL__SPECIFIED_ATTRIBUTE_OVERRIDES = XML_TYPE_MAPPING_FEATURE_COUNT + 16;
+
+ /**
+ * The feature id for the '<em><b>Default Attribute Overrides</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_INTERNAL__DEFAULT_ATTRIBUTE_OVERRIDES = XML_TYPE_MAPPING_FEATURE_COUNT + 17;
+
+ /**
+ * The feature id for the '<em><b>Association Overrides</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_INTERNAL__ASSOCIATION_OVERRIDES = XML_TYPE_MAPPING_FEATURE_COUNT + 18;
+
+ /**
+ * The feature id for the '<em><b>Specified Association Overrides</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_INTERNAL__SPECIFIED_ASSOCIATION_OVERRIDES = XML_TYPE_MAPPING_FEATURE_COUNT + 19;
+
+ /**
+ * The feature id for the '<em><b>Default Association Overrides</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_INTERNAL__DEFAULT_ASSOCIATION_OVERRIDES = XML_TYPE_MAPPING_FEATURE_COUNT + 20;
+
+ /**
+ * The feature id for the '<em><b>Named Queries</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_INTERNAL__NAMED_QUERIES = XML_TYPE_MAPPING_FEATURE_COUNT + 21;
+
+ /**
+ * The feature id for the '<em><b>Named Native Queries</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_INTERNAL__NAMED_NATIVE_QUERIES = XML_TYPE_MAPPING_FEATURE_COUNT + 22;
+
+ /**
+ * The feature id for the '<em><b>Secondary Tables</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_INTERNAL__SECONDARY_TABLES = XML_TYPE_MAPPING_FEATURE_COUNT + 23;
+
+ /**
+ * The feature id for the '<em><b>Specified Secondary Tables</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_INTERNAL__SPECIFIED_SECONDARY_TABLES = XML_TYPE_MAPPING_FEATURE_COUNT + 24;
+
+ /**
+ * The feature id for the '<em><b>Default Secondary Tables</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_INTERNAL__DEFAULT_SECONDARY_TABLES = XML_TYPE_MAPPING_FEATURE_COUNT + 25;
+
+ /**
+ * The number of structural features of the '<em>Xml Entity Internal</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_INTERNAL_FEATURE_COUNT = XML_TYPE_MAPPING_FEATURE_COUNT + 26;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlEntityForXml <em>Xml Entity For Xml</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlEntityForXml
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlEntityForXml()
+ * @generated
+ */
+ public static final int XML_ENTITY_FOR_XML = 8;
+
+ /**
+ * The feature id for the '<em><b>Table For Xml</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_FOR_XML__TABLE_FOR_XML = 0;
+
+ /**
+ * The feature id for the '<em><b>Discriminator Column For Xml</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_FOR_XML__DISCRIMINATOR_COLUMN_FOR_XML = 1;
+
+ /**
+ * The number of structural features of the '<em>Xml Entity For Xml</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_FOR_XML_FEATURE_COUNT = 2;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY__NAME = JpaCoreMappingsPackage.IENTITY__NAME;
+
+ /**
+ * The feature id for the '<em><b>Table Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY__TABLE_NAME = JpaCoreMappingsPackage.IENTITY__TABLE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY__SPECIFIED_NAME = JpaCoreMappingsPackage.IENTITY__SPECIFIED_NAME;
+
+ /**
+ * The feature id for the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY__DEFAULT_NAME = JpaCoreMappingsPackage.IENTITY__DEFAULT_NAME;
+
+ /**
+ * The feature id for the '<em><b>Table</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY__TABLE = JpaCoreMappingsPackage.IENTITY__TABLE;
+
+ /**
+ * The feature id for the '<em><b>Primary Key Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY__PRIMARY_KEY_JOIN_COLUMNS = JpaCoreMappingsPackage.IENTITY__PRIMARY_KEY_JOIN_COLUMNS;
+
+ /**
+ * The feature id for the '<em><b>Specified Primary Key Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY__SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS = JpaCoreMappingsPackage.IENTITY__SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS;
+
+ /**
+ * The feature id for the '<em><b>Default Primary Key Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY__DEFAULT_PRIMARY_KEY_JOIN_COLUMNS = JpaCoreMappingsPackage.IENTITY__DEFAULT_PRIMARY_KEY_JOIN_COLUMNS;
+
+ /**
+ * The feature id for the '<em><b>Inheritance Strategy</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY__INHERITANCE_STRATEGY = JpaCoreMappingsPackage.IENTITY__INHERITANCE_STRATEGY;
+
+ /**
+ * The feature id for the '<em><b>Default Discriminator Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY__DEFAULT_DISCRIMINATOR_VALUE = JpaCoreMappingsPackage.IENTITY__DEFAULT_DISCRIMINATOR_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Specified Discriminator Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY__SPECIFIED_DISCRIMINATOR_VALUE = JpaCoreMappingsPackage.IENTITY__SPECIFIED_DISCRIMINATOR_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Discriminator Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY__DISCRIMINATOR_VALUE = JpaCoreMappingsPackage.IENTITY__DISCRIMINATOR_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Discriminator Column</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY__DISCRIMINATOR_COLUMN = JpaCoreMappingsPackage.IENTITY__DISCRIMINATOR_COLUMN;
+
+ /**
+ * The feature id for the '<em><b>Sequence Generator</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY__SEQUENCE_GENERATOR = JpaCoreMappingsPackage.IENTITY__SEQUENCE_GENERATOR;
+
+ /**
+ * The feature id for the '<em><b>Table Generator</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY__TABLE_GENERATOR = JpaCoreMappingsPackage.IENTITY__TABLE_GENERATOR;
+
+ /**
+ * The feature id for the '<em><b>Attribute Overrides</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY__ATTRIBUTE_OVERRIDES = JpaCoreMappingsPackage.IENTITY__ATTRIBUTE_OVERRIDES;
+
+ /**
+ * The feature id for the '<em><b>Specified Attribute Overrides</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY__SPECIFIED_ATTRIBUTE_OVERRIDES = JpaCoreMappingsPackage.IENTITY__SPECIFIED_ATTRIBUTE_OVERRIDES;
+
+ /**
+ * The feature id for the '<em><b>Default Attribute Overrides</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY__DEFAULT_ATTRIBUTE_OVERRIDES = JpaCoreMappingsPackage.IENTITY__DEFAULT_ATTRIBUTE_OVERRIDES;
+
+ /**
+ * The feature id for the '<em><b>Association Overrides</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY__ASSOCIATION_OVERRIDES = JpaCoreMappingsPackage.IENTITY__ASSOCIATION_OVERRIDES;
+
+ /**
+ * The feature id for the '<em><b>Specified Association Overrides</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY__SPECIFIED_ASSOCIATION_OVERRIDES = JpaCoreMappingsPackage.IENTITY__SPECIFIED_ASSOCIATION_OVERRIDES;
+
+ /**
+ * The feature id for the '<em><b>Default Association Overrides</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY__DEFAULT_ASSOCIATION_OVERRIDES = JpaCoreMappingsPackage.IENTITY__DEFAULT_ASSOCIATION_OVERRIDES;
+
+ /**
+ * The feature id for the '<em><b>Named Queries</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY__NAMED_QUERIES = JpaCoreMappingsPackage.IENTITY__NAMED_QUERIES;
+
+ /**
+ * The feature id for the '<em><b>Named Native Queries</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY__NAMED_NATIVE_QUERIES = JpaCoreMappingsPackage.IENTITY__NAMED_NATIVE_QUERIES;
+
+ /**
+ * The feature id for the '<em><b>Secondary Tables</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY__SECONDARY_TABLES = JpaCoreMappingsPackage.IENTITY_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Specified Secondary Tables</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY__SPECIFIED_SECONDARY_TABLES = JpaCoreMappingsPackage.IENTITY_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Default Secondary Tables</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY__DEFAULT_SECONDARY_TABLES = JpaCoreMappingsPackage.IENTITY_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Xml Entity</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ENTITY_FEATURE_COUNT = JpaCoreMappingsPackage.IENTITY_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_EMBEDDABLE__NAME = XML_TYPE_MAPPING__NAME;
+
+ /**
+ * The feature id for the '<em><b>Table Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_EMBEDDABLE__TABLE_NAME = XML_TYPE_MAPPING__TABLE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Default Access</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_EMBEDDABLE__DEFAULT_ACCESS = XML_TYPE_MAPPING__DEFAULT_ACCESS;
+
+ /**
+ * The feature id for the '<em><b>Specified Access</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_EMBEDDABLE__SPECIFIED_ACCESS = XML_TYPE_MAPPING__SPECIFIED_ACCESS;
+
+ /**
+ * The feature id for the '<em><b>Access</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_EMBEDDABLE__ACCESS = XML_TYPE_MAPPING__ACCESS;
+
+ /**
+ * The feature id for the '<em><b>Metadata Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_EMBEDDABLE__METADATA_COMPLETE = XML_TYPE_MAPPING__METADATA_COMPLETE;
+
+ /**
+ * The feature id for the '<em><b>Persistent Type</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_EMBEDDABLE__PERSISTENT_TYPE = XML_TYPE_MAPPING__PERSISTENT_TYPE;
+
+ /**
+ * The number of structural features of the '<em>Xml Embeddable</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_EMBEDDABLE_FEATURE_COUNT = XML_TYPE_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Persistent Attribute</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ATTRIBUTE_MAPPING__PERSISTENT_ATTRIBUTE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Xml Attribute Mapping</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ATTRIBUTE_MAPPING_FEATURE_COUNT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlNullAttributeMapping <em>Xml Null Attribute Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlNullAttributeMapping
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlNullAttributeMapping()
+ * @generated
+ */
+ public static final int XML_NULL_ATTRIBUTE_MAPPING = 12;
+
+ /**
+ * The feature id for the '<em><b>Persistent Attribute</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_NULL_ATTRIBUTE_MAPPING__PERSISTENT_ATTRIBUTE = XML_ATTRIBUTE_MAPPING__PERSISTENT_ATTRIBUTE;
+
+ /**
+ * The number of structural features of the '<em>Xml Null Attribute Mapping</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_NULL_ATTRIBUTE_MAPPING_FEATURE_COUNT = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Persistent Attribute</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_BASIC__PERSISTENT_ATTRIBUTE = XML_ATTRIBUTE_MAPPING__PERSISTENT_ATTRIBUTE;
+
+ /**
+ * The feature id for the '<em><b>Fetch</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_BASIC__FETCH = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Optional</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_BASIC__OPTIONAL = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Column</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_BASIC__COLUMN = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Lob</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_BASIC__LOB = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Temporal</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_BASIC__TEMPORAL = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Enumerated</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_BASIC__ENUMERATED = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Column For Xml</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_BASIC__COLUMN_FOR_XML = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 6;
+
+ /**
+ * The number of structural features of the '<em>Xml Basic</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_BASIC_FEATURE_COUNT = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 7;
+
+ /**
+ * The feature id for the '<em><b>Persistent Attribute</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ID__PERSISTENT_ATTRIBUTE = XML_ATTRIBUTE_MAPPING__PERSISTENT_ATTRIBUTE;
+
+ /**
+ * The feature id for the '<em><b>Column</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ID__COLUMN = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Generated Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ID__GENERATED_VALUE = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Temporal</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ID__TEMPORAL = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Table Generator</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ID__TABLE_GENERATOR = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Sequence Generator</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ID__SEQUENCE_GENERATOR = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Column For Xml</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ID__COLUMN_FOR_XML = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 5;
+
+ /**
+ * The number of structural features of the '<em>Xml Id</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ID_FEATURE_COUNT = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 6;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlTransient <em>Xml Transient</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlTransient
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlTransient()
+ * @generated
+ */
+ public static final int XML_TRANSIENT = 15;
+
+ /**
+ * The feature id for the '<em><b>Persistent Attribute</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TRANSIENT__PERSISTENT_ATTRIBUTE = XML_ATTRIBUTE_MAPPING__PERSISTENT_ATTRIBUTE;
+
+ /**
+ * The number of structural features of the '<em>Xml Transient</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TRANSIENT_FEATURE_COUNT = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlEmbedded <em>Xml Embedded</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlEmbedded
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlEmbedded()
+ * @generated
+ */
+ public static final int XML_EMBEDDED = 16;
+
+ /**
+ * The feature id for the '<em><b>Persistent Attribute</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_EMBEDDED__PERSISTENT_ATTRIBUTE = XML_ATTRIBUTE_MAPPING__PERSISTENT_ATTRIBUTE;
+
+ /**
+ * The feature id for the '<em><b>Attribute Overrides</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_EMBEDDED__ATTRIBUTE_OVERRIDES = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Specified Attribute Overrides</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_EMBEDDED__SPECIFIED_ATTRIBUTE_OVERRIDES = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Default Attribute Overrides</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_EMBEDDED__DEFAULT_ATTRIBUTE_OVERRIDES = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Xml Embedded</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_EMBEDDED_FEATURE_COUNT = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlEmbeddedId <em>Xml Embedded Id</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlEmbeddedId
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlEmbeddedId()
+ * @generated
+ */
+ public static final int XML_EMBEDDED_ID = 17;
+
+ /**
+ * The feature id for the '<em><b>Persistent Attribute</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_EMBEDDED_ID__PERSISTENT_ATTRIBUTE = XML_ATTRIBUTE_MAPPING__PERSISTENT_ATTRIBUTE;
+
+ /**
+ * The number of structural features of the '<em>Xml Embedded Id</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_EMBEDDED_ID_FEATURE_COUNT = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlVersion <em>Xml Version</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlVersion
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlVersion()
+ * @generated
+ */
+ public static final int XML_VERSION = 18;
+
+ /**
+ * The feature id for the '<em><b>Persistent Attribute</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_VERSION__PERSISTENT_ATTRIBUTE = XML_ATTRIBUTE_MAPPING__PERSISTENT_ATTRIBUTE;
+
+ /**
+ * The feature id for the '<em><b>Column</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_VERSION__COLUMN = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Temporal</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_VERSION__TEMPORAL = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Column For Xml</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_VERSION__COLUMN_FOR_XML = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Xml Version</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_VERSION_FEATURE_COUNT = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlRelationshipMapping <em>Xml Relationship Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlRelationshipMapping
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlRelationshipMapping()
+ * @generated
+ */
+ public static final int XML_RELATIONSHIP_MAPPING = 40;
+
+ /**
+ * The feature id for the '<em><b>Persistent Attribute</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_RELATIONSHIP_MAPPING__PERSISTENT_ATTRIBUTE = XML_ATTRIBUTE_MAPPING__PERSISTENT_ATTRIBUTE;
+
+ /**
+ * The feature id for the '<em><b>Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_RELATIONSHIP_MAPPING__TARGET_ENTITY = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Specified Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Default Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Resolved Target Entity</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>Xml Relationship Mapping</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_RELATIONSHIP_MAPPING_FEATURE_COUNT = XML_ATTRIBUTE_MAPPING_FEATURE_COUNT + 4;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMappingInternal <em>Xml Multi Relationship Mapping Internal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMappingInternal
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlMultiRelationshipMappingInternal()
+ * @generated
+ */
+ public static final int XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL = 19;
+
+ /**
+ * The feature id for the '<em><b>Persistent Attribute</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__PERSISTENT_ATTRIBUTE = XML_RELATIONSHIP_MAPPING__PERSISTENT_ATTRIBUTE;
+
+ /**
+ * The feature id for the '<em><b>Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__TARGET_ENTITY = XML_RELATIONSHIP_MAPPING__TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Specified Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__SPECIFIED_TARGET_ENTITY = XML_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Default Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__DEFAULT_TARGET_ENTITY = XML_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Resolved Target Entity</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__RESOLVED_TARGET_ENTITY = XML_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Mapped By</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__MAPPED_BY = XML_RELATIONSHIP_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Fetch</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__FETCH = XML_RELATIONSHIP_MAPPING_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Join Table</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__JOIN_TABLE = XML_RELATIONSHIP_MAPPING_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Order By</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__ORDER_BY = XML_RELATIONSHIP_MAPPING_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Join Table For Xml</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__JOIN_TABLE_FOR_XML = XML_RELATIONSHIP_MAPPING_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Order By For Xml</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__ORDER_BY_FOR_XML = XML_RELATIONSHIP_MAPPING_FEATURE_COUNT + 5;
+
+ /**
+ * The number of structural features of the '<em>Xml Multi Relationship Mapping Internal</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL_FEATURE_COUNT = XML_RELATIONSHIP_MAPPING_FEATURE_COUNT + 6;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMappingForXml <em>Xml Multi Relationship Mapping For Xml</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMappingForXml
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlMultiRelationshipMappingForXml()
+ * @generated
+ */
+ public static final int XML_MULTI_RELATIONSHIP_MAPPING_FOR_XML = 20;
+
+ /**
+ * The feature id for the '<em><b>Join Table For Xml</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MULTI_RELATIONSHIP_MAPPING_FOR_XML__JOIN_TABLE_FOR_XML = 0;
+
+ /**
+ * The feature id for the '<em><b>Order By For Xml</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MULTI_RELATIONSHIP_MAPPING_FOR_XML__ORDER_BY_FOR_XML = 1;
+
+ /**
+ * The number of structural features of the '<em>Xml Multi Relationship Mapping For Xml</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MULTI_RELATIONSHIP_MAPPING_FOR_XML_FEATURE_COUNT = 2;
+
+ /**
+ * The feature id for the '<em><b>Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MULTI_RELATIONSHIP_MAPPING__TARGET_ENTITY = JpaCoreMappingsPackage.IMULTI_RELATIONSHIP_MAPPING__TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Specified Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MULTI_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY = JpaCoreMappingsPackage.IMULTI_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Default Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MULTI_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY = JpaCoreMappingsPackage.IMULTI_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Resolved Target Entity</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MULTI_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY = JpaCoreMappingsPackage.IMULTI_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Mapped By</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MULTI_RELATIONSHIP_MAPPING__MAPPED_BY = JpaCoreMappingsPackage.IMULTI_RELATIONSHIP_MAPPING__MAPPED_BY;
+
+ /**
+ * The feature id for the '<em><b>Fetch</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MULTI_RELATIONSHIP_MAPPING__FETCH = JpaCoreMappingsPackage.IMULTI_RELATIONSHIP_MAPPING__FETCH;
+
+ /**
+ * The feature id for the '<em><b>Join Table</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MULTI_RELATIONSHIP_MAPPING__JOIN_TABLE = JpaCoreMappingsPackage.IMULTI_RELATIONSHIP_MAPPING__JOIN_TABLE;
+
+ /**
+ * The feature id for the '<em><b>Order By</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MULTI_RELATIONSHIP_MAPPING__ORDER_BY = JpaCoreMappingsPackage.IMULTI_RELATIONSHIP_MAPPING__ORDER_BY;
+
+ /**
+ * The number of structural features of the '<em>Xml Multi Relationship Mapping</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MULTI_RELATIONSHIP_MAPPING_FEATURE_COUNT = JpaCoreMappingsPackage.IMULTI_RELATIONSHIP_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Persistent Attribute</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ONE_TO_MANY__PERSISTENT_ATTRIBUTE = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__PERSISTENT_ATTRIBUTE;
+
+ /**
+ * The feature id for the '<em><b>Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ONE_TO_MANY__TARGET_ENTITY = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Specified Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ONE_TO_MANY__SPECIFIED_TARGET_ENTITY = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__SPECIFIED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Default Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ONE_TO_MANY__DEFAULT_TARGET_ENTITY = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__DEFAULT_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Resolved Target Entity</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ONE_TO_MANY__RESOLVED_TARGET_ENTITY = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__RESOLVED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Mapped By</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ONE_TO_MANY__MAPPED_BY = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__MAPPED_BY;
+
+ /**
+ * The feature id for the '<em><b>Fetch</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ONE_TO_MANY__FETCH = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__FETCH;
+
+ /**
+ * The feature id for the '<em><b>Join Table</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ONE_TO_MANY__JOIN_TABLE = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__JOIN_TABLE;
+
+ /**
+ * The feature id for the '<em><b>Order By</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ONE_TO_MANY__ORDER_BY = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__ORDER_BY;
+
+ /**
+ * The feature id for the '<em><b>Join Table For Xml</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ONE_TO_MANY__JOIN_TABLE_FOR_XML = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__JOIN_TABLE_FOR_XML;
+
+ /**
+ * The feature id for the '<em><b>Order By For Xml</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ONE_TO_MANY__ORDER_BY_FOR_XML = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__ORDER_BY_FOR_XML;
+
+ /**
+ * The number of structural features of the '<em>Xml One To Many</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ONE_TO_MANY_FEATURE_COUNT = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Persistent Attribute</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MANY_TO_MANY__PERSISTENT_ATTRIBUTE = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__PERSISTENT_ATTRIBUTE;
+
+ /**
+ * The feature id for the '<em><b>Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MANY_TO_MANY__TARGET_ENTITY = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Specified Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MANY_TO_MANY__SPECIFIED_TARGET_ENTITY = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__SPECIFIED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Default Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MANY_TO_MANY__DEFAULT_TARGET_ENTITY = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__DEFAULT_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Resolved Target Entity</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MANY_TO_MANY__RESOLVED_TARGET_ENTITY = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__RESOLVED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Mapped By</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MANY_TO_MANY__MAPPED_BY = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__MAPPED_BY;
+
+ /**
+ * The feature id for the '<em><b>Fetch</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MANY_TO_MANY__FETCH = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__FETCH;
+
+ /**
+ * The feature id for the '<em><b>Join Table</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MANY_TO_MANY__JOIN_TABLE = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__JOIN_TABLE;
+
+ /**
+ * The feature id for the '<em><b>Order By</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MANY_TO_MANY__ORDER_BY = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__ORDER_BY;
+
+ /**
+ * The feature id for the '<em><b>Join Table For Xml</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MANY_TO_MANY__JOIN_TABLE_FOR_XML = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__JOIN_TABLE_FOR_XML;
+
+ /**
+ * The feature id for the '<em><b>Order By For Xml</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MANY_TO_MANY__ORDER_BY_FOR_XML = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__ORDER_BY_FOR_XML;
+
+ /**
+ * The number of structural features of the '<em>Xml Many To Many</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MANY_TO_MANY_FEATURE_COUNT = XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Mapping Key</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_PERSISTENT_ATTRIBUTE__MAPPING_KEY = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_PERSISTENT_ATTRIBUTE__NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Xml Persistent Attribute</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_PERSISTENT_ATTRIBUTE_FEATURE_COUNT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Xml Mapping Metadata Complete For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_METADATA_INTERNAL__XML_MAPPING_METADATA_COMPLETE_FOR_XML = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Persistence Unit Defaults For Xml</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_METADATA_INTERNAL__PERSISTENCE_UNIT_DEFAULTS_FOR_XML = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Xml Mapping Metadata Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_METADATA_INTERNAL__XML_MAPPING_METADATA_COMPLETE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Persistence Unit Defaults</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_METADATA_INTERNAL__PERSISTENCE_UNIT_DEFAULTS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Xml Mapping Metadata Complete Internal</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_METADATA_INTERNAL__XML_MAPPING_METADATA_COMPLETE_INTERNAL = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Persistence Unit Defaults Internal</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_METADATA_INTERNAL__PERSISTENCE_UNIT_DEFAULTS_INTERNAL = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 5;
+
+ /**
+ * The number of structural features of the '<em>Persistence Unit Metadata Internal</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_METADATA_INTERNAL_FEATURE_COUNT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 6;
+
+ /**
+ * The feature id for the '<em><b>Xml Mapping Metadata Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_METADATA__XML_MAPPING_METADATA_COMPLETE = JpaCorePackage.IXML_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Persistence Unit Defaults</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_METADATA__PERSISTENCE_UNIT_DEFAULTS = JpaCorePackage.IXML_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Persistence Unit Metadata</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_METADATA_FEATURE_COUNT = JpaCorePackage.IXML_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Xml Mapping Metadata Complete For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_METADATA_FOR_XML__XML_MAPPING_METADATA_COMPLETE_FOR_XML = JpaCorePackage.IXML_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Persistence Unit Defaults For Xml</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_METADATA_FOR_XML__PERSISTENCE_UNIT_DEFAULTS_FOR_XML = JpaCorePackage.IXML_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Persistence Unit Metadata For Xml</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_METADATA_FOR_XML_FEATURE_COUNT = JpaCorePackage.IXML_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_DEFAULTS_INTERNAL__SCHEMA = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CATALOG = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Access</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_DEFAULTS_INTERNAL__ACCESS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Cascade Persist</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CASCADE_PERSIST = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Schema For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_DEFAULTS_INTERNAL__SCHEMA_FOR_XML = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Catalog For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CATALOG_FOR_XML = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Access For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_DEFAULTS_INTERNAL__ACCESS_FOR_XML = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 6;
+
+ /**
+ * The feature id for the '<em><b>Cascade Persist For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CASCADE_PERSIST_FOR_XML = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 7;
+
+ /**
+ * The feature id for the '<em><b>Schema Internal</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_DEFAULTS_INTERNAL__SCHEMA_INTERNAL = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 8;
+
+ /**
+ * The feature id for the '<em><b>Catalog Internal</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CATALOG_INTERNAL = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 9;
+
+ /**
+ * The feature id for the '<em><b>Access Internal</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_DEFAULTS_INTERNAL__ACCESS_INTERNAL = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 10;
+
+ /**
+ * The feature id for the '<em><b>Cascade Persist Internal</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CASCADE_PERSIST_INTERNAL = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 11;
+
+ /**
+ * The number of structural features of the '<em>Persistence Unit Defaults Internal</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_DEFAULTS_INTERNAL_FEATURE_COUNT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 12;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_DEFAULTS__SCHEMA = JpaCorePackage.IXML_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_DEFAULTS__CATALOG = JpaCorePackage.IXML_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Access</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_DEFAULTS__ACCESS = JpaCorePackage.IXML_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Cascade Persist</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_DEFAULTS__CASCADE_PERSIST = JpaCorePackage.IXML_EOBJECT_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>Persistence Unit Defaults</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_DEFAULTS_FEATURE_COUNT = JpaCorePackage.IXML_EOBJECT_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Schema For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_DEFAULTS_FOR_XML__SCHEMA_FOR_XML = JpaCorePackage.IXML_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Catalog For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_DEFAULTS_FOR_XML__CATALOG_FOR_XML = JpaCorePackage.IXML_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Access For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_DEFAULTS_FOR_XML__ACCESS_FOR_XML = JpaCorePackage.IXML_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Cascade Persist For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_DEFAULTS_FOR_XML__CASCADE_PERSIST_FOR_XML = JpaCorePackage.IXML_EOBJECT_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>Persistence Unit Defaults For Xml</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_DEFAULTS_FOR_XML_FEATURE_COUNT = JpaCorePackage.IXML_EOBJECT_FEATURE_COUNT + 4;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlTable <em>Abstract Xml Table</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.AbstractXmlTable
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getAbstractXmlTable()
+ * @generated
+ */
+ public static final int ABSTRACT_XML_TABLE = 42;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_TABLE__NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_TABLE__SPECIFIED_NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_TABLE__DEFAULT_NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_TABLE__CATALOG = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Specified Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_TABLE__SPECIFIED_CATALOG = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Default Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_TABLE__DEFAULT_CATALOG = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_TABLE__SCHEMA = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 6;
+
+ /**
+ * The feature id for the '<em><b>Specified Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_TABLE__SPECIFIED_SCHEMA = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 7;
+
+ /**
+ * The feature id for the '<em><b>Default Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_TABLE__DEFAULT_SCHEMA = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 8;
+
+ /**
+ * The feature id for the '<em><b>Specified Name For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_TABLE__SPECIFIED_NAME_FOR_XML = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 9;
+
+ /**
+ * The feature id for the '<em><b>Specified Catalog For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_TABLE__SPECIFIED_CATALOG_FOR_XML = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 10;
+
+ /**
+ * The feature id for the '<em><b>Specified Schema For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_TABLE__SPECIFIED_SCHEMA_FOR_XML = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 11;
+
+ /**
+ * The number of structural features of the '<em>Abstract Xml Table</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_TABLE_FEATURE_COUNT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 12;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlTable <em>Xml Table</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlTable
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlTable()
+ * @generated
+ */
+ public static final int XML_TABLE = 31;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE__NAME = ABSTRACT_XML_TABLE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE__SPECIFIED_NAME = ABSTRACT_XML_TABLE__SPECIFIED_NAME;
+
+ /**
+ * The feature id for the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE__DEFAULT_NAME = ABSTRACT_XML_TABLE__DEFAULT_NAME;
+
+ /**
+ * The feature id for the '<em><b>Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE__CATALOG = ABSTRACT_XML_TABLE__CATALOG;
+
+ /**
+ * The feature id for the '<em><b>Specified Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE__SPECIFIED_CATALOG = ABSTRACT_XML_TABLE__SPECIFIED_CATALOG;
+
+ /**
+ * The feature id for the '<em><b>Default Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE__DEFAULT_CATALOG = ABSTRACT_XML_TABLE__DEFAULT_CATALOG;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE__SCHEMA = ABSTRACT_XML_TABLE__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Specified Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE__SPECIFIED_SCHEMA = ABSTRACT_XML_TABLE__SPECIFIED_SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Default Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE__DEFAULT_SCHEMA = ABSTRACT_XML_TABLE__DEFAULT_SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Specified Name For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE__SPECIFIED_NAME_FOR_XML = ABSTRACT_XML_TABLE__SPECIFIED_NAME_FOR_XML;
+
+ /**
+ * The feature id for the '<em><b>Specified Catalog For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE__SPECIFIED_CATALOG_FOR_XML = ABSTRACT_XML_TABLE__SPECIFIED_CATALOG_FOR_XML;
+
+ /**
+ * The feature id for the '<em><b>Specified Schema For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE__SPECIFIED_SCHEMA_FOR_XML = ABSTRACT_XML_TABLE__SPECIFIED_SCHEMA_FOR_XML;
+
+ /**
+ * The number of structural features of the '<em>Xml Table</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE_FEATURE_COUNT = ABSTRACT_XML_TABLE_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlNamedColumn <em>Abstract Xml Named Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.AbstractXmlNamedColumn
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getAbstractXmlNamedColumn()
+ * @generated
+ */
+ public static final int ABSTRACT_XML_NAMED_COLUMN = 32;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_NAMED_COLUMN__NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_NAMED_COLUMN__SPECIFIED_NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_NAMED_COLUMN__DEFAULT_NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Column Definition</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_NAMED_COLUMN__COLUMN_DEFINITION = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Specified Name For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_NAMED_COLUMN__SPECIFIED_NAME_FOR_XML = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Column Definition For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_NAMED_COLUMN__COLUMN_DEFINITION_FOR_XML = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 5;
+
+ /**
+ * The number of structural features of the '<em>Abstract Xml Named Column</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_NAMED_COLUMN_FEATURE_COUNT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 6;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn <em>Abstract Xml Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getAbstractXmlColumn()
+ * @generated
+ */
+ public static final int ABSTRACT_XML_COLUMN = 33;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_COLUMN__NAME = ABSTRACT_XML_NAMED_COLUMN__NAME;
+
+ /**
+ * The feature id for the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_COLUMN__SPECIFIED_NAME = ABSTRACT_XML_NAMED_COLUMN__SPECIFIED_NAME;
+
+ /**
+ * The feature id for the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_COLUMN__DEFAULT_NAME = ABSTRACT_XML_NAMED_COLUMN__DEFAULT_NAME;
+
+ /**
+ * The feature id for the '<em><b>Column Definition</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_COLUMN__COLUMN_DEFINITION = ABSTRACT_XML_NAMED_COLUMN__COLUMN_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Specified Name For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_COLUMN__SPECIFIED_NAME_FOR_XML = ABSTRACT_XML_NAMED_COLUMN__SPECIFIED_NAME_FOR_XML;
+
+ /**
+ * The feature id for the '<em><b>Column Definition For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_COLUMN__COLUMN_DEFINITION_FOR_XML = ABSTRACT_XML_NAMED_COLUMN__COLUMN_DEFINITION_FOR_XML;
+
+ /**
+ * The feature id for the '<em><b>Unique</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_COLUMN__UNIQUE = ABSTRACT_XML_NAMED_COLUMN_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Nullable</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_COLUMN__NULLABLE = ABSTRACT_XML_NAMED_COLUMN_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Insertable</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_COLUMN__INSERTABLE = ABSTRACT_XML_NAMED_COLUMN_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Updatable</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_COLUMN__UPDATABLE = ABSTRACT_XML_NAMED_COLUMN_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_COLUMN__TABLE = ABSTRACT_XML_NAMED_COLUMN_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Specified Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_COLUMN__SPECIFIED_TABLE = ABSTRACT_XML_NAMED_COLUMN_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Default Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_COLUMN__DEFAULT_TABLE = ABSTRACT_XML_NAMED_COLUMN_FEATURE_COUNT + 6;
+
+ /**
+ * The feature id for the '<em><b>Unique For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_COLUMN__UNIQUE_FOR_XML = ABSTRACT_XML_NAMED_COLUMN_FEATURE_COUNT + 7;
+
+ /**
+ * The feature id for the '<em><b>Nullable For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_COLUMN__NULLABLE_FOR_XML = ABSTRACT_XML_NAMED_COLUMN_FEATURE_COUNT + 8;
+
+ /**
+ * The feature id for the '<em><b>Insertable For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_COLUMN__INSERTABLE_FOR_XML = ABSTRACT_XML_NAMED_COLUMN_FEATURE_COUNT + 9;
+
+ /**
+ * The feature id for the '<em><b>Updatable For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_COLUMN__UPDATABLE_FOR_XML = ABSTRACT_XML_NAMED_COLUMN_FEATURE_COUNT + 10;
+
+ /**
+ * The feature id for the '<em><b>Specified Table For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_COLUMN__SPECIFIED_TABLE_FOR_XML = ABSTRACT_XML_NAMED_COLUMN_FEATURE_COUNT + 11;
+
+ /**
+ * The number of structural features of the '<em>Abstract Xml Column</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_COLUMN_FEATURE_COUNT = ABSTRACT_XML_NAMED_COLUMN_FEATURE_COUNT + 12;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlColumn <em>Xml Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlColumn
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlColumn()
+ * @generated
+ */
+ public static final int XML_COLUMN = 34;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_COLUMN__NAME = ABSTRACT_XML_COLUMN__NAME;
+
+ /**
+ * The feature id for the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_COLUMN__SPECIFIED_NAME = ABSTRACT_XML_COLUMN__SPECIFIED_NAME;
+
+ /**
+ * The feature id for the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_COLUMN__DEFAULT_NAME = ABSTRACT_XML_COLUMN__DEFAULT_NAME;
+
+ /**
+ * The feature id for the '<em><b>Column Definition</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_COLUMN__COLUMN_DEFINITION = ABSTRACT_XML_COLUMN__COLUMN_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Specified Name For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_COLUMN__SPECIFIED_NAME_FOR_XML = ABSTRACT_XML_COLUMN__SPECIFIED_NAME_FOR_XML;
+
+ /**
+ * The feature id for the '<em><b>Column Definition For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_COLUMN__COLUMN_DEFINITION_FOR_XML = ABSTRACT_XML_COLUMN__COLUMN_DEFINITION_FOR_XML;
+
+ /**
+ * The feature id for the '<em><b>Unique</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_COLUMN__UNIQUE = ABSTRACT_XML_COLUMN__UNIQUE;
+
+ /**
+ * The feature id for the '<em><b>Nullable</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_COLUMN__NULLABLE = ABSTRACT_XML_COLUMN__NULLABLE;
+
+ /**
+ * The feature id for the '<em><b>Insertable</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_COLUMN__INSERTABLE = ABSTRACT_XML_COLUMN__INSERTABLE;
+
+ /**
+ * The feature id for the '<em><b>Updatable</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_COLUMN__UPDATABLE = ABSTRACT_XML_COLUMN__UPDATABLE;
+
+ /**
+ * The feature id for the '<em><b>Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_COLUMN__TABLE = ABSTRACT_XML_COLUMN__TABLE;
+
+ /**
+ * The feature id for the '<em><b>Specified Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_COLUMN__SPECIFIED_TABLE = ABSTRACT_XML_COLUMN__SPECIFIED_TABLE;
+
+ /**
+ * The feature id for the '<em><b>Default Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_COLUMN__DEFAULT_TABLE = ABSTRACT_XML_COLUMN__DEFAULT_TABLE;
+
+ /**
+ * The feature id for the '<em><b>Unique For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_COLUMN__UNIQUE_FOR_XML = ABSTRACT_XML_COLUMN__UNIQUE_FOR_XML;
+
+ /**
+ * The feature id for the '<em><b>Nullable For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_COLUMN__NULLABLE_FOR_XML = ABSTRACT_XML_COLUMN__NULLABLE_FOR_XML;
+
+ /**
+ * The feature id for the '<em><b>Insertable For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_COLUMN__INSERTABLE_FOR_XML = ABSTRACT_XML_COLUMN__INSERTABLE_FOR_XML;
+
+ /**
+ * The feature id for the '<em><b>Updatable For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_COLUMN__UPDATABLE_FOR_XML = ABSTRACT_XML_COLUMN__UPDATABLE_FOR_XML;
+
+ /**
+ * The feature id for the '<em><b>Specified Table For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_COLUMN__SPECIFIED_TABLE_FOR_XML = ABSTRACT_XML_COLUMN__SPECIFIED_TABLE_FOR_XML;
+
+ /**
+ * The feature id for the '<em><b>Length</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_COLUMN__LENGTH = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Precision</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_COLUMN__PRECISION = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Scale</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_COLUMN__SCALE = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Length For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_COLUMN__LENGTH_FOR_XML = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Precision For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_COLUMN__PRECISION_FOR_XML = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Scale For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_COLUMN__SCALE_FOR_XML = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 5;
+
+ /**
+ * The number of structural features of the '<em>Xml Column</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_COLUMN_FEATURE_COUNT = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 6;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlJoinColumn <em>Xml Join Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlJoinColumn
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlJoinColumn()
+ * @generated
+ */
+ public static final int XML_JOIN_COLUMN = 35;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_COLUMN__NAME = ABSTRACT_XML_COLUMN__NAME;
+
+ /**
+ * The feature id for the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_COLUMN__SPECIFIED_NAME = ABSTRACT_XML_COLUMN__SPECIFIED_NAME;
+
+ /**
+ * The feature id for the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_COLUMN__DEFAULT_NAME = ABSTRACT_XML_COLUMN__DEFAULT_NAME;
+
+ /**
+ * The feature id for the '<em><b>Column Definition</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_COLUMN__COLUMN_DEFINITION = ABSTRACT_XML_COLUMN__COLUMN_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Specified Name For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_COLUMN__SPECIFIED_NAME_FOR_XML = ABSTRACT_XML_COLUMN__SPECIFIED_NAME_FOR_XML;
+
+ /**
+ * The feature id for the '<em><b>Column Definition For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_COLUMN__COLUMN_DEFINITION_FOR_XML = ABSTRACT_XML_COLUMN__COLUMN_DEFINITION_FOR_XML;
+
+ /**
+ * The feature id for the '<em><b>Unique</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_COLUMN__UNIQUE = ABSTRACT_XML_COLUMN__UNIQUE;
+
+ /**
+ * The feature id for the '<em><b>Nullable</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_COLUMN__NULLABLE = ABSTRACT_XML_COLUMN__NULLABLE;
+
+ /**
+ * The feature id for the '<em><b>Insertable</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_COLUMN__INSERTABLE = ABSTRACT_XML_COLUMN__INSERTABLE;
+
+ /**
+ * The feature id for the '<em><b>Updatable</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_COLUMN__UPDATABLE = ABSTRACT_XML_COLUMN__UPDATABLE;
+
+ /**
+ * The feature id for the '<em><b>Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_COLUMN__TABLE = ABSTRACT_XML_COLUMN__TABLE;
+
+ /**
+ * The feature id for the '<em><b>Specified Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_COLUMN__SPECIFIED_TABLE = ABSTRACT_XML_COLUMN__SPECIFIED_TABLE;
+
+ /**
+ * The feature id for the '<em><b>Default Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_COLUMN__DEFAULT_TABLE = ABSTRACT_XML_COLUMN__DEFAULT_TABLE;
+
+ /**
+ * The feature id for the '<em><b>Unique For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_COLUMN__UNIQUE_FOR_XML = ABSTRACT_XML_COLUMN__UNIQUE_FOR_XML;
+
+ /**
+ * The feature id for the '<em><b>Nullable For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_COLUMN__NULLABLE_FOR_XML = ABSTRACT_XML_COLUMN__NULLABLE_FOR_XML;
+
+ /**
+ * The feature id for the '<em><b>Insertable For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_COLUMN__INSERTABLE_FOR_XML = ABSTRACT_XML_COLUMN__INSERTABLE_FOR_XML;
+
+ /**
+ * The feature id for the '<em><b>Updatable For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_COLUMN__UPDATABLE_FOR_XML = ABSTRACT_XML_COLUMN__UPDATABLE_FOR_XML;
+
+ /**
+ * The feature id for the '<em><b>Specified Table For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_COLUMN__SPECIFIED_TABLE_FOR_XML = ABSTRACT_XML_COLUMN__SPECIFIED_TABLE_FOR_XML;
+
+ /**
+ * The feature id for the '<em><b>Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_COLUMN__REFERENCED_COLUMN_NAME = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Specified Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Default Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Specified Referenced Column Name For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME_FOR_XML = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>Xml Join Column</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_COLUMN_FEATURE_COUNT = ABSTRACT_XML_COLUMN_FEATURE_COUNT + 4;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.IXmlColumnMapping <em>IXml Column Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.IXmlColumnMapping
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIXmlColumnMapping()
+ * @generated
+ */
+ public static final int IXML_COLUMN_MAPPING = 36;
+
+ /**
+ * The feature id for the '<em><b>Column For Xml</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IXML_COLUMN_MAPPING__COLUMN_FOR_XML = JpaCoreMappingsPackage.ICOLUMN_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>IXml Column Mapping</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IXML_COLUMN_MAPPING_FEATURE_COUNT = JpaCoreMappingsPackage.ICOLUMN_MAPPING_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlSingleRelationshipMapping <em>Xml Single Relationship Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlSingleRelationshipMapping
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlSingleRelationshipMapping()
+ * @generated
+ */
+ public static final int XML_SINGLE_RELATIONSHIP_MAPPING = 39;
+
+ /**
+ * The feature id for the '<em><b>Persistent Attribute</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_SINGLE_RELATIONSHIP_MAPPING__PERSISTENT_ATTRIBUTE = XML_RELATIONSHIP_MAPPING__PERSISTENT_ATTRIBUTE;
+
+ /**
+ * The feature id for the '<em><b>Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_SINGLE_RELATIONSHIP_MAPPING__TARGET_ENTITY = XML_RELATIONSHIP_MAPPING__TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Specified Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_SINGLE_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY = XML_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Default Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_SINGLE_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY = XML_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Resolved Target Entity</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_SINGLE_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY = XML_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Fetch</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_SINGLE_RELATIONSHIP_MAPPING__FETCH = XML_RELATIONSHIP_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_SINGLE_RELATIONSHIP_MAPPING__JOIN_COLUMNS = XML_RELATIONSHIP_MAPPING_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Specified Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_SINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS = XML_RELATIONSHIP_MAPPING_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Default Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_SINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS = XML_RELATIONSHIP_MAPPING_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>Xml Single Relationship Mapping</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_SINGLE_RELATIONSHIP_MAPPING_FEATURE_COUNT = XML_RELATIONSHIP_MAPPING_FEATURE_COUNT + 4;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlManyToOne <em>Xml Many To One</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlManyToOne
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlManyToOne()
+ * @generated
+ */
+ public static final int XML_MANY_TO_ONE = 37;
+
+ /**
+ * The feature id for the '<em><b>Persistent Attribute</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MANY_TO_ONE__PERSISTENT_ATTRIBUTE = XML_SINGLE_RELATIONSHIP_MAPPING__PERSISTENT_ATTRIBUTE;
+
+ /**
+ * The feature id for the '<em><b>Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MANY_TO_ONE__TARGET_ENTITY = XML_SINGLE_RELATIONSHIP_MAPPING__TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Specified Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MANY_TO_ONE__SPECIFIED_TARGET_ENTITY = XML_SINGLE_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Default Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MANY_TO_ONE__DEFAULT_TARGET_ENTITY = XML_SINGLE_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Resolved Target Entity</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MANY_TO_ONE__RESOLVED_TARGET_ENTITY = XML_SINGLE_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Fetch</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MANY_TO_ONE__FETCH = XML_SINGLE_RELATIONSHIP_MAPPING__FETCH;
+
+ /**
+ * The feature id for the '<em><b>Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MANY_TO_ONE__JOIN_COLUMNS = XML_SINGLE_RELATIONSHIP_MAPPING__JOIN_COLUMNS;
+
+ /**
+ * The feature id for the '<em><b>Specified Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MANY_TO_ONE__SPECIFIED_JOIN_COLUMNS = XML_SINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS;
+
+ /**
+ * The feature id for the '<em><b>Default Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MANY_TO_ONE__DEFAULT_JOIN_COLUMNS = XML_SINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS;
+
+ /**
+ * The number of structural features of the '<em>Xml Many To One</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_MANY_TO_ONE_FEATURE_COUNT = XML_SINGLE_RELATIONSHIP_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlOneToOne <em>Xml One To One</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlOneToOne
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlOneToOne()
+ * @generated
+ */
+ public static final int XML_ONE_TO_ONE = 38;
+
+ /**
+ * The feature id for the '<em><b>Persistent Attribute</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ONE_TO_ONE__PERSISTENT_ATTRIBUTE = XML_SINGLE_RELATIONSHIP_MAPPING__PERSISTENT_ATTRIBUTE;
+
+ /**
+ * The feature id for the '<em><b>Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ONE_TO_ONE__TARGET_ENTITY = XML_SINGLE_RELATIONSHIP_MAPPING__TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Specified Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ONE_TO_ONE__SPECIFIED_TARGET_ENTITY = XML_SINGLE_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Default Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ONE_TO_ONE__DEFAULT_TARGET_ENTITY = XML_SINGLE_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Resolved Target Entity</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ONE_TO_ONE__RESOLVED_TARGET_ENTITY = XML_SINGLE_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Fetch</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ONE_TO_ONE__FETCH = XML_SINGLE_RELATIONSHIP_MAPPING__FETCH;
+
+ /**
+ * The feature id for the '<em><b>Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ONE_TO_ONE__JOIN_COLUMNS = XML_SINGLE_RELATIONSHIP_MAPPING__JOIN_COLUMNS;
+
+ /**
+ * The feature id for the '<em><b>Specified Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ONE_TO_ONE__SPECIFIED_JOIN_COLUMNS = XML_SINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS;
+
+ /**
+ * The feature id for the '<em><b>Default Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ONE_TO_ONE__DEFAULT_JOIN_COLUMNS = XML_SINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS;
+
+ /**
+ * The feature id for the '<em><b>Mapped By</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ONE_TO_ONE__MAPPED_BY = XML_SINGLE_RELATIONSHIP_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Xml One To One</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ONE_TO_ONE_FEATURE_COUNT = XML_SINGLE_RELATIONSHIP_MAPPING_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlJoinTable <em>Xml Join Table</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlJoinTable
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlJoinTable()
+ * @generated
+ */
+ public static final int XML_JOIN_TABLE = 41;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_TABLE__NAME = ABSTRACT_XML_TABLE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_TABLE__SPECIFIED_NAME = ABSTRACT_XML_TABLE__SPECIFIED_NAME;
+
+ /**
+ * The feature id for the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_TABLE__DEFAULT_NAME = ABSTRACT_XML_TABLE__DEFAULT_NAME;
+
+ /**
+ * The feature id for the '<em><b>Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_TABLE__CATALOG = ABSTRACT_XML_TABLE__CATALOG;
+
+ /**
+ * The feature id for the '<em><b>Specified Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_TABLE__SPECIFIED_CATALOG = ABSTRACT_XML_TABLE__SPECIFIED_CATALOG;
+
+ /**
+ * The feature id for the '<em><b>Default Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_TABLE__DEFAULT_CATALOG = ABSTRACT_XML_TABLE__DEFAULT_CATALOG;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_TABLE__SCHEMA = ABSTRACT_XML_TABLE__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Specified Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_TABLE__SPECIFIED_SCHEMA = ABSTRACT_XML_TABLE__SPECIFIED_SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Default Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_TABLE__DEFAULT_SCHEMA = ABSTRACT_XML_TABLE__DEFAULT_SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Specified Name For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_TABLE__SPECIFIED_NAME_FOR_XML = ABSTRACT_XML_TABLE__SPECIFIED_NAME_FOR_XML;
+
+ /**
+ * The feature id for the '<em><b>Specified Catalog For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_TABLE__SPECIFIED_CATALOG_FOR_XML = ABSTRACT_XML_TABLE__SPECIFIED_CATALOG_FOR_XML;
+
+ /**
+ * The feature id for the '<em><b>Specified Schema For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_TABLE__SPECIFIED_SCHEMA_FOR_XML = ABSTRACT_XML_TABLE__SPECIFIED_SCHEMA_FOR_XML;
+
+ /**
+ * The feature id for the '<em><b>Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_TABLE__JOIN_COLUMNS = ABSTRACT_XML_TABLE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Specified Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_TABLE__SPECIFIED_JOIN_COLUMNS = ABSTRACT_XML_TABLE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Default Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_TABLE__DEFAULT_JOIN_COLUMNS = ABSTRACT_XML_TABLE_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Inverse Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_TABLE__INVERSE_JOIN_COLUMNS = ABSTRACT_XML_TABLE_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Specified Inverse Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_TABLE__SPECIFIED_INVERSE_JOIN_COLUMNS = ABSTRACT_XML_TABLE_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Default Inverse Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_TABLE__DEFAULT_INVERSE_JOIN_COLUMNS = ABSTRACT_XML_TABLE_FEATURE_COUNT + 5;
+
+ /**
+ * The number of structural features of the '<em>Xml Join Table</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_JOIN_TABLE_FEATURE_COUNT = ABSTRACT_XML_TABLE_FEATURE_COUNT + 6;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlOverride <em>Xml Override</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlOverride
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlOverride()
+ * @generated
+ */
+ public static final int XML_OVERRIDE = 43;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_OVERRIDE__NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Xml Override</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_OVERRIDE_FEATURE_COUNT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlAttributeOverride <em>Xml Attribute Override</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlAttributeOverride
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlAttributeOverride()
+ * @generated
+ */
+ public static final int XML_ATTRIBUTE_OVERRIDE = 44;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ATTRIBUTE_OVERRIDE__NAME = XML_OVERRIDE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Column</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ATTRIBUTE_OVERRIDE__COLUMN = XML_OVERRIDE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Column For Xml</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ATTRIBUTE_OVERRIDE__COLUMN_FOR_XML = XML_OVERRIDE_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Xml Attribute Override</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ATTRIBUTE_OVERRIDE_FEATURE_COUNT = XML_OVERRIDE_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlAssociationOverride <em>Xml Association Override</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlAssociationOverride
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlAssociationOverride()
+ * @generated
+ */
+ public static final int XML_ASSOCIATION_OVERRIDE = 45;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ASSOCIATION_OVERRIDE__NAME = XML_OVERRIDE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ASSOCIATION_OVERRIDE__JOIN_COLUMNS = XML_OVERRIDE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Specified Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ASSOCIATION_OVERRIDE__SPECIFIED_JOIN_COLUMNS = XML_OVERRIDE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Default Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ASSOCIATION_OVERRIDE__DEFAULT_JOIN_COLUMNS = XML_OVERRIDE_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Xml Association Override</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ASSOCIATION_OVERRIDE_FEATURE_COUNT = XML_OVERRIDE_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlDiscriminatorColumn <em>Xml Discriminator Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlDiscriminatorColumn
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlDiscriminatorColumn()
+ * @generated
+ */
+ public static final int XML_DISCRIMINATOR_COLUMN = 46;
+
+ /**
+ * The feature id for the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_DISCRIMINATOR_COLUMN__DEFAULT_NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_DISCRIMINATOR_COLUMN__SPECIFIED_NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_DISCRIMINATOR_COLUMN__NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Discriminator Type</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Column Definition</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_DISCRIMINATOR_COLUMN__COLUMN_DEFINITION = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Default Length</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_DISCRIMINATOR_COLUMN__DEFAULT_LENGTH = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Specified Length</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_DISCRIMINATOR_COLUMN__SPECIFIED_LENGTH = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 6;
+
+ /**
+ * The feature id for the '<em><b>Length</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_DISCRIMINATOR_COLUMN__LENGTH = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 7;
+
+ /**
+ * The feature id for the '<em><b>Specified Name For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_DISCRIMINATOR_COLUMN__SPECIFIED_NAME_FOR_XML = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 8;
+
+ /**
+ * The feature id for the '<em><b>Discriminator Type For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE_FOR_XML = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 9;
+
+ /**
+ * The feature id for the '<em><b>Column Definition For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_DISCRIMINATOR_COLUMN__COLUMN_DEFINITION_FOR_XML = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 10;
+
+ /**
+ * The feature id for the '<em><b>Specified Length For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_DISCRIMINATOR_COLUMN__SPECIFIED_LENGTH_FOR_XML = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 11;
+
+ /**
+ * The number of structural features of the '<em>Xml Discriminator Column</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_DISCRIMINATOR_COLUMN_FEATURE_COUNT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 12;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlSecondaryTable <em>Xml Secondary Table</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlSecondaryTable
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlSecondaryTable()
+ * @generated
+ */
+ public static final int XML_SECONDARY_TABLE = 47;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_SECONDARY_TABLE__NAME = ABSTRACT_XML_TABLE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_SECONDARY_TABLE__SPECIFIED_NAME = ABSTRACT_XML_TABLE__SPECIFIED_NAME;
+
+ /**
+ * The feature id for the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_SECONDARY_TABLE__DEFAULT_NAME = ABSTRACT_XML_TABLE__DEFAULT_NAME;
+
+ /**
+ * The feature id for the '<em><b>Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_SECONDARY_TABLE__CATALOG = ABSTRACT_XML_TABLE__CATALOG;
+
+ /**
+ * The feature id for the '<em><b>Specified Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_SECONDARY_TABLE__SPECIFIED_CATALOG = ABSTRACT_XML_TABLE__SPECIFIED_CATALOG;
+
+ /**
+ * The feature id for the '<em><b>Default Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_SECONDARY_TABLE__DEFAULT_CATALOG = ABSTRACT_XML_TABLE__DEFAULT_CATALOG;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_SECONDARY_TABLE__SCHEMA = ABSTRACT_XML_TABLE__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Specified Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_SECONDARY_TABLE__SPECIFIED_SCHEMA = ABSTRACT_XML_TABLE__SPECIFIED_SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Default Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_SECONDARY_TABLE__DEFAULT_SCHEMA = ABSTRACT_XML_TABLE__DEFAULT_SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Specified Name For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_SECONDARY_TABLE__SPECIFIED_NAME_FOR_XML = ABSTRACT_XML_TABLE__SPECIFIED_NAME_FOR_XML;
+
+ /**
+ * The feature id for the '<em><b>Specified Catalog For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_SECONDARY_TABLE__SPECIFIED_CATALOG_FOR_XML = ABSTRACT_XML_TABLE__SPECIFIED_CATALOG_FOR_XML;
+
+ /**
+ * The feature id for the '<em><b>Specified Schema For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_SECONDARY_TABLE__SPECIFIED_SCHEMA_FOR_XML = ABSTRACT_XML_TABLE__SPECIFIED_SCHEMA_FOR_XML;
+
+ /**
+ * The number of structural features of the '<em>Xml Secondary Table</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_SECONDARY_TABLE_FEATURE_COUNT = ABSTRACT_XML_TABLE_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlPrimaryKeyJoinColumn <em>Xml Primary Key Join Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlPrimaryKeyJoinColumn
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlPrimaryKeyJoinColumn()
+ * @generated
+ */
+ public static final int XML_PRIMARY_KEY_JOIN_COLUMN = 48;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_PRIMARY_KEY_JOIN_COLUMN__NAME = ABSTRACT_XML_NAMED_COLUMN__NAME;
+
+ /**
+ * The feature id for the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_NAME = ABSTRACT_XML_NAMED_COLUMN__SPECIFIED_NAME;
+
+ /**
+ * The feature id for the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_PRIMARY_KEY_JOIN_COLUMN__DEFAULT_NAME = ABSTRACT_XML_NAMED_COLUMN__DEFAULT_NAME;
+
+ /**
+ * The feature id for the '<em><b>Column Definition</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_PRIMARY_KEY_JOIN_COLUMN__COLUMN_DEFINITION = ABSTRACT_XML_NAMED_COLUMN__COLUMN_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Specified Name For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_NAME_FOR_XML = ABSTRACT_XML_NAMED_COLUMN__SPECIFIED_NAME_FOR_XML;
+
+ /**
+ * The feature id for the '<em><b>Column Definition For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_PRIMARY_KEY_JOIN_COLUMN__COLUMN_DEFINITION_FOR_XML = ABSTRACT_XML_NAMED_COLUMN__COLUMN_DEFINITION_FOR_XML;
+
+ /**
+ * The feature id for the '<em><b>Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_PRIMARY_KEY_JOIN_COLUMN__REFERENCED_COLUMN_NAME = ABSTRACT_XML_NAMED_COLUMN_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Specified Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME = ABSTRACT_XML_NAMED_COLUMN_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Default Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_PRIMARY_KEY_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME = ABSTRACT_XML_NAMED_COLUMN_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Specified Referenced Column Name For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME_FOR_XML = ABSTRACT_XML_NAMED_COLUMN_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>Xml Primary Key Join Column</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_PRIMARY_KEY_JOIN_COLUMN_FEATURE_COUNT = ABSTRACT_XML_NAMED_COLUMN_FEATURE_COUNT + 4;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlGeneratedValue <em>Xml Generated Value</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlGeneratedValue
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlGeneratedValue()
+ * @generated
+ */
+ public static final int XML_GENERATED_VALUE = 49;
+
+ /**
+ * The feature id for the '<em><b>Strategy</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_GENERATED_VALUE__STRATEGY = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Generator</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_GENERATED_VALUE__GENERATOR = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Xml Generated Value</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_GENERATED_VALUE_FEATURE_COUNT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlGenerator <em>Xml Generator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlGenerator
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlGenerator()
+ * @generated
+ */
+ public static final int XML_GENERATOR = 50;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_GENERATOR__NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Initial Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_GENERATOR__INITIAL_VALUE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Specified Initial Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_GENERATOR__SPECIFIED_INITIAL_VALUE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Default Initial Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_GENERATOR__DEFAULT_INITIAL_VALUE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Allocation Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_GENERATOR__ALLOCATION_SIZE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Specified Allocation Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_GENERATOR__SPECIFIED_ALLOCATION_SIZE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Default Allocation Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_GENERATOR__DEFAULT_ALLOCATION_SIZE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 6;
+
+ /**
+ * The number of structural features of the '<em>Xml Generator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_GENERATOR_FEATURE_COUNT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 7;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlSequenceGenerator <em>Xml Sequence Generator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlSequenceGenerator
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlSequenceGenerator()
+ * @generated
+ */
+ public static final int XML_SEQUENCE_GENERATOR = 51;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_SEQUENCE_GENERATOR__NAME = XML_GENERATOR__NAME;
+
+ /**
+ * The feature id for the '<em><b>Initial Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_SEQUENCE_GENERATOR__INITIAL_VALUE = XML_GENERATOR__INITIAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Specified Initial Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_SEQUENCE_GENERATOR__SPECIFIED_INITIAL_VALUE = XML_GENERATOR__SPECIFIED_INITIAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Default Initial Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_SEQUENCE_GENERATOR__DEFAULT_INITIAL_VALUE = XML_GENERATOR__DEFAULT_INITIAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Allocation Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_SEQUENCE_GENERATOR__ALLOCATION_SIZE = XML_GENERATOR__ALLOCATION_SIZE;
+
+ /**
+ * The feature id for the '<em><b>Specified Allocation Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_SEQUENCE_GENERATOR__SPECIFIED_ALLOCATION_SIZE = XML_GENERATOR__SPECIFIED_ALLOCATION_SIZE;
+
+ /**
+ * The feature id for the '<em><b>Default Allocation Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_SEQUENCE_GENERATOR__DEFAULT_ALLOCATION_SIZE = XML_GENERATOR__DEFAULT_ALLOCATION_SIZE;
+
+ /**
+ * The feature id for the '<em><b>Sequence Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_SEQUENCE_GENERATOR__SEQUENCE_NAME = XML_GENERATOR_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Specified Sequence Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_SEQUENCE_GENERATOR__SPECIFIED_SEQUENCE_NAME = XML_GENERATOR_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Default Sequence Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_SEQUENCE_GENERATOR__DEFAULT_SEQUENCE_NAME = XML_GENERATOR_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Xml Sequence Generator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_SEQUENCE_GENERATOR_FEATURE_COUNT = XML_GENERATOR_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlTableGenerator <em>Xml Table Generator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlTableGenerator
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlTableGenerator()
+ * @generated
+ */
+ public static final int XML_TABLE_GENERATOR = 52;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE_GENERATOR__NAME = XML_GENERATOR__NAME;
+
+ /**
+ * The feature id for the '<em><b>Initial Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE_GENERATOR__INITIAL_VALUE = XML_GENERATOR__INITIAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Specified Initial Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE_GENERATOR__SPECIFIED_INITIAL_VALUE = XML_GENERATOR__SPECIFIED_INITIAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Default Initial Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE_GENERATOR__DEFAULT_INITIAL_VALUE = XML_GENERATOR__DEFAULT_INITIAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Allocation Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE_GENERATOR__ALLOCATION_SIZE = XML_GENERATOR__ALLOCATION_SIZE;
+
+ /**
+ * The feature id for the '<em><b>Specified Allocation Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE_GENERATOR__SPECIFIED_ALLOCATION_SIZE = XML_GENERATOR__SPECIFIED_ALLOCATION_SIZE;
+
+ /**
+ * The feature id for the '<em><b>Default Allocation Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE_GENERATOR__DEFAULT_ALLOCATION_SIZE = XML_GENERATOR__DEFAULT_ALLOCATION_SIZE;
+
+ /**
+ * The feature id for the '<em><b>Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE_GENERATOR__TABLE = XML_GENERATOR_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Specified Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE_GENERATOR__SPECIFIED_TABLE = XML_GENERATOR_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Default Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE_GENERATOR__DEFAULT_TABLE = XML_GENERATOR_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE_GENERATOR__CATALOG = XML_GENERATOR_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Specified Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE_GENERATOR__SPECIFIED_CATALOG = XML_GENERATOR_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Default Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE_GENERATOR__DEFAULT_CATALOG = XML_GENERATOR_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE_GENERATOR__SCHEMA = XML_GENERATOR_FEATURE_COUNT + 6;
+
+ /**
+ * The feature id for the '<em><b>Specified Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE_GENERATOR__SPECIFIED_SCHEMA = XML_GENERATOR_FEATURE_COUNT + 7;
+
+ /**
+ * The feature id for the '<em><b>Default Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE_GENERATOR__DEFAULT_SCHEMA = XML_GENERATOR_FEATURE_COUNT + 8;
+
+ /**
+ * The feature id for the '<em><b>Pk Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE_GENERATOR__PK_COLUMN_NAME = XML_GENERATOR_FEATURE_COUNT + 9;
+
+ /**
+ * The feature id for the '<em><b>Specified Pk Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_NAME = XML_GENERATOR_FEATURE_COUNT + 10;
+
+ /**
+ * The feature id for the '<em><b>Default Pk Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE_GENERATOR__DEFAULT_PK_COLUMN_NAME = XML_GENERATOR_FEATURE_COUNT + 11;
+
+ /**
+ * The feature id for the '<em><b>Value Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE_GENERATOR__VALUE_COLUMN_NAME = XML_GENERATOR_FEATURE_COUNT + 12;
+
+ /**
+ * The feature id for the '<em><b>Specified Value Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE_GENERATOR__SPECIFIED_VALUE_COLUMN_NAME = XML_GENERATOR_FEATURE_COUNT + 13;
+
+ /**
+ * The feature id for the '<em><b>Default Value Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE_GENERATOR__DEFAULT_VALUE_COLUMN_NAME = XML_GENERATOR_FEATURE_COUNT + 14;
+
+ /**
+ * The feature id for the '<em><b>Pk Column Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE_GENERATOR__PK_COLUMN_VALUE = XML_GENERATOR_FEATURE_COUNT + 15;
+
+ /**
+ * The feature id for the '<em><b>Specified Pk Column Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_VALUE = XML_GENERATOR_FEATURE_COUNT + 16;
+
+ /**
+ * The feature id for the '<em><b>Default Pk Column Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE_GENERATOR__DEFAULT_PK_COLUMN_VALUE = XML_GENERATOR_FEATURE_COUNT + 17;
+
+ /**
+ * The number of structural features of the '<em>Xml Table Generator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_TABLE_GENERATOR_FEATURE_COUNT = XML_GENERATOR_FEATURE_COUNT + 18;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlOrderBy <em>Xml Order By</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlOrderBy
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlOrderBy()
+ * @generated
+ */
+ public static final int XML_ORDER_BY = 53;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ORDER_BY__VALUE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ORDER_BY__TYPE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Xml Order By</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_ORDER_BY_FEATURE_COUNT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlQuery <em>Abstract Xml Query</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.AbstractXmlQuery
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getAbstractXmlQuery()
+ * @generated
+ */
+ public static final int ABSTRACT_XML_QUERY = 54;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_QUERY__NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Query</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_QUERY__QUERY = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Hints</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_QUERY__HINTS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Abstract Xml Query</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ABSTRACT_XML_QUERY_FEATURE_COUNT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlNamedQuery <em>Xml Named Query</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlNamedQuery
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlNamedQuery()
+ * @generated
+ */
+ public static final int XML_NAMED_QUERY = 55;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_NAMED_QUERY__NAME = ABSTRACT_XML_QUERY__NAME;
+
+ /**
+ * The feature id for the '<em><b>Query</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_NAMED_QUERY__QUERY = ABSTRACT_XML_QUERY__QUERY;
+
+ /**
+ * The feature id for the '<em><b>Hints</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_NAMED_QUERY__HINTS = ABSTRACT_XML_QUERY__HINTS;
+
+ /**
+ * The number of structural features of the '<em>Xml Named Query</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_NAMED_QUERY_FEATURE_COUNT = ABSTRACT_XML_QUERY_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlNamedNativeQuery <em>Xml Named Native Query</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlNamedNativeQuery
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlNamedNativeQuery()
+ * @generated
+ */
+ public static final int XML_NAMED_NATIVE_QUERY = 56;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_NAMED_NATIVE_QUERY__NAME = ABSTRACT_XML_QUERY__NAME;
+
+ /**
+ * The feature id for the '<em><b>Query</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_NAMED_NATIVE_QUERY__QUERY = ABSTRACT_XML_QUERY__QUERY;
+
+ /**
+ * The feature id for the '<em><b>Hints</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_NAMED_NATIVE_QUERY__HINTS = ABSTRACT_XML_QUERY__HINTS;
+
+ /**
+ * The feature id for the '<em><b>Result Class</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_NAMED_NATIVE_QUERY__RESULT_CLASS = ABSTRACT_XML_QUERY_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Result Set Mapping</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_NAMED_NATIVE_QUERY__RESULT_SET_MAPPING = ABSTRACT_XML_QUERY_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Xml Named Native Query</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_NAMED_NATIVE_QUERY_FEATURE_COUNT = ABSTRACT_XML_QUERY_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlQueryHint <em>Xml Query Hint</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlQueryHint
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlQueryHint()
+ * @generated
+ */
+ public static final int XML_QUERY_HINT = 57;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_QUERY_HINT__NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_QUERY_HINT__VALUE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Xml Query Hint</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int XML_QUERY_HINT_FEATURE_COUNT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlRootContentNodeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass entityMappingsInternalEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass entityMappingsEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass entityMappingsForXmlEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlTypeMappingEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlPersistentTypeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlEntityEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlEmbeddableEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlAttributeMappingEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlNullAttributeMappingEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlPersistentAttributeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlBasicEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlIdEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlTransientEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlEmbeddedEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlEmbeddedIdEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlVersionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlMultiRelationshipMappingInternalEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlMultiRelationshipMappingForXmlEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlMultiRelationshipMappingEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlOneToManyEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlManyToManyEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass persistenceUnitMetadataInternalEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass persistenceUnitMetadataEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass persistenceUnitMetadataForXmlEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass persistenceUnitDefaultsInternalEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass persistenceUnitDefaultsEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass persistenceUnitDefaultsForXmlEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlTableEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass abstractXmlNamedColumnEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass abstractXmlColumnEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlColumnEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlJoinColumnEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iXmlColumnMappingEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlManyToOneEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlOneToOneEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlSingleRelationshipMappingEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlRelationshipMappingEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlJoinTableEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass abstractXmlTableEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlOverrideEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlAttributeOverrideEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlAssociationOverrideEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlDiscriminatorColumnEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlSecondaryTableEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlPrimaryKeyJoinColumnEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlGeneratedValueEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlGeneratorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlSequenceGeneratorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlTableGeneratorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlOrderByEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass abstractXmlQueryEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlNamedQueryEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlNamedNativeQueryEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlQueryHintEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlMappedSuperclassEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlEntityInternalEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass xmlEntityForXmlEClass = 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.jpt.core.internal.content.orm.OrmPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private OrmPackage() {
+ super(eNS_URI, OrmFactory.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. Simple
+ * dependencies are satisfied by calling this method on all
+ * dependent packages before doing anything else. This method drives
+ * initialization for interdependent packages directly, in parallel
+ * with this package, itself.
+ * <p>Of this package and its interdependencies, all packages which
+ * have not yet been registered by their URI values are first created
+ * and registered. The packages are then initialized in two steps:
+ * meta-model objects for all of the packages are created before any
+ * are initialized, since one package's meta-model objects may refer to
+ * those of another.
+ * <p>Invocation of this method will not affect any packages that have
+ * already been initialized.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static OrmPackage init() {
+ if (isInited)
+ return (OrmPackage) EPackage.Registry.INSTANCE.getEPackage(OrmPackage.eNS_URI);
+ // Obtain or create and register package
+ OrmPackage theOrmPackage = (OrmPackage) (EPackage.Registry.INSTANCE.getEPackage(eNS_URI) instanceof OrmPackage ? EPackage.Registry.INSTANCE.getEPackage(eNS_URI) : new OrmPackage());
+ isInited = true;
+ // Initialize simple dependencies
+ EcorePackage.eINSTANCE.eClass();
+ JavaRefPackage.eINSTANCE.eClass();
+ // Obtain or create and register interdependencies
+ JpaCorePackage theJpaCorePackage = (JpaCorePackage) (EPackage.Registry.INSTANCE.getEPackage(JpaCorePackage.eNS_URI) instanceof JpaCorePackage ? EPackage.Registry.INSTANCE.getEPackage(JpaCorePackage.eNS_URI) : JpaCorePackage.eINSTANCE);
+ JpaCoreMappingsPackage theJpaCoreMappingsPackage = (JpaCoreMappingsPackage) (EPackage.Registry.INSTANCE.getEPackage(JpaCoreMappingsPackage.eNS_URI) instanceof JpaCoreMappingsPackage ? EPackage.Registry.INSTANCE.getEPackage(JpaCoreMappingsPackage.eNS_URI) : JpaCoreMappingsPackage.eINSTANCE);
+ JpaJavaPackage theJpaJavaPackage = (JpaJavaPackage) (EPackage.Registry.INSTANCE.getEPackage(JpaJavaPackage.eNS_URI) instanceof JpaJavaPackage ? EPackage.Registry.INSTANCE.getEPackage(JpaJavaPackage.eNS_URI) : JpaJavaPackage.eINSTANCE);
+ JpaJavaMappingsPackage theJpaJavaMappingsPackage = (JpaJavaMappingsPackage) (EPackage.Registry.INSTANCE.getEPackage(JpaJavaMappingsPackage.eNS_URI) instanceof JpaJavaMappingsPackage ? EPackage.Registry.INSTANCE.getEPackage(JpaJavaMappingsPackage.eNS_URI) : JpaJavaMappingsPackage.eINSTANCE);
+ PersistencePackage thePersistencePackage = (PersistencePackage) (EPackage.Registry.INSTANCE.getEPackage(PersistencePackage.eNS_URI) instanceof PersistencePackage ? EPackage.Registry.INSTANCE.getEPackage(PersistencePackage.eNS_URI) : PersistencePackage.eINSTANCE);
+ // Create package meta-data objects
+ theOrmPackage.createPackageContents();
+ theJpaCorePackage.createPackageContents();
+ theJpaCoreMappingsPackage.createPackageContents();
+ theJpaJavaPackage.createPackageContents();
+ theJpaJavaMappingsPackage.createPackageContents();
+ thePersistencePackage.createPackageContents();
+ // Initialize created meta-data
+ theOrmPackage.initializePackageContents();
+ theJpaCorePackage.initializePackageContents();
+ theJpaCoreMappingsPackage.initializePackageContents();
+ theJpaJavaPackage.initializePackageContents();
+ theJpaJavaMappingsPackage.initializePackageContents();
+ thePersistencePackage.initializePackageContents();
+ // Mark meta-data to indicate it can't be changed
+ theOrmPackage.freeze();
+ return theOrmPackage;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlRootContentNode <em>Xml Root Content Node</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Root Content Node</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlRootContentNode
+ * @generated
+ */
+ public EClass getXmlRootContentNode() {
+ return xmlRootContentNodeEClass;
+ }
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.jpt.core.internal.content.orm.XmlRootContentNode#getEntityMappings <em>Entity Mappings</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Entity Mappings</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlRootContentNode#getEntityMappings()
+ * @see #getXmlRootContentNode()
+ * @generated
+ */
+ public EReference getXmlRootContentNode_EntityMappings() {
+ return (EReference) xmlRootContentNodeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal <em>Entity Mappings Internal</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Entity Mappings Internal</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal
+ * @generated
+ */
+ public EClass getEntityMappingsInternal() {
+ return entityMappingsInternalEClass;
+ }
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getRoot <em>Root</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Root</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getRoot()
+ * @see #getEntityMappingsInternal()
+ * @generated
+ */
+ public EReference getEntityMappingsInternal_Root() {
+ return (EReference) entityMappingsInternalEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getVersion <em>Version</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Version</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getVersion()
+ * @see #getEntityMappingsInternal()
+ * @generated
+ */
+ public EAttribute getEntityMappingsInternal_Version() {
+ return (EAttribute) entityMappingsInternalEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getDescription <em>Description</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Description</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getDescription()
+ * @see #getEntityMappingsInternal()
+ * @generated
+ */
+ public EAttribute getEntityMappingsInternal_Description() {
+ return (EAttribute) entityMappingsInternalEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getPersistenceUnitMetadataInternal <em>Persistence Unit Metadata Internal</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Persistence Unit Metadata Internal</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getPersistenceUnitMetadataInternal()
+ * @see #getEntityMappingsInternal()
+ * @generated
+ */
+ public EReference getEntityMappingsInternal_PersistenceUnitMetadataInternal() {
+ return (EReference) entityMappingsInternalEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getPackageInternal <em>Package Internal</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Package Internal</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getPackageInternal()
+ * @see #getEntityMappingsInternal()
+ * @generated
+ */
+ public EAttribute getEntityMappingsInternal_PackageInternal() {
+ return (EAttribute) entityMappingsInternalEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getDefaultSchema <em>Default Schema</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Default Schema</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getDefaultSchema()
+ * @see #getEntityMappingsInternal()
+ * @generated
+ */
+ public EAttribute getEntityMappingsInternal_DefaultSchema() {
+ return (EAttribute) entityMappingsInternalEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getSpecifiedSchema <em>Specified Schema</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Specified Schema</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getSpecifiedSchema()
+ * @see #getEntityMappingsInternal()
+ * @generated
+ */
+ public EAttribute getEntityMappingsInternal_SpecifiedSchema() {
+ return (EAttribute) entityMappingsInternalEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getSchema <em>Schema</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Schema</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getSchema()
+ * @see #getEntityMappingsInternal()
+ * @generated
+ */
+ public EAttribute getEntityMappingsInternal_Schema() {
+ return (EAttribute) entityMappingsInternalEClass.getEStructuralFeatures().get(7);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getDefaultCatalog <em>Default Catalog</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Default Catalog</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getDefaultCatalog()
+ * @see #getEntityMappingsInternal()
+ * @generated
+ */
+ public EAttribute getEntityMappingsInternal_DefaultCatalog() {
+ return (EAttribute) entityMappingsInternalEClass.getEStructuralFeatures().get(8);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getSpecifiedCatalog <em>Specified Catalog</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Specified Catalog</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getSpecifiedCatalog()
+ * @see #getEntityMappingsInternal()
+ * @generated
+ */
+ public EAttribute getEntityMappingsInternal_SpecifiedCatalog() {
+ return (EAttribute) entityMappingsInternalEClass.getEStructuralFeatures().get(9);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getCatalog <em>Catalog</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Catalog</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getCatalog()
+ * @see #getEntityMappingsInternal()
+ * @generated
+ */
+ public EAttribute getEntityMappingsInternal_Catalog() {
+ return (EAttribute) entityMappingsInternalEClass.getEStructuralFeatures().get(10);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getDefaultAccess <em>Default Access</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Default Access</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getDefaultAccess()
+ * @see #getEntityMappingsInternal()
+ * @generated
+ */
+ public EAttribute getEntityMappingsInternal_DefaultAccess() {
+ return (EAttribute) entityMappingsInternalEClass.getEStructuralFeatures().get(11);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getSpecifiedAccess <em>Specified Access</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Specified Access</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getSpecifiedAccess()
+ * @see #getEntityMappingsInternal()
+ * @generated
+ */
+ public EAttribute getEntityMappingsInternal_SpecifiedAccess() {
+ return (EAttribute) entityMappingsInternalEClass.getEStructuralFeatures().get(12);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getAccess <em>Access</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Access</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getAccess()
+ * @see #getEntityMappingsInternal()
+ * @generated
+ */
+ public EAttribute getEntityMappingsInternal_Access() {
+ return (EAttribute) entityMappingsInternalEClass.getEStructuralFeatures().get(13);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getTypeMappings <em>Type Mappings</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Type Mappings</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getTypeMappings()
+ * @see #getEntityMappingsInternal()
+ * @generated
+ */
+ public EReference getEntityMappingsInternal_TypeMappings() {
+ return (EReference) entityMappingsInternalEClass.getEStructuralFeatures().get(14);
+ }
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getPersistentTypes <em>Persistent Types</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Persistent Types</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getPersistentTypes()
+ * @see #getEntityMappingsInternal()
+ * @generated
+ */
+ public EReference getEntityMappingsInternal_PersistentTypes() {
+ return (EReference) entityMappingsInternalEClass.getEStructuralFeatures().get(15);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getTableGenerators <em>Table Generators</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Table Generators</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getTableGenerators()
+ * @see #getEntityMappingsInternal()
+ * @generated
+ */
+ public EReference getEntityMappingsInternal_TableGenerators() {
+ return (EReference) entityMappingsInternalEClass.getEStructuralFeatures().get(17);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getNamedQueries <em>Named Queries</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Named Queries</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getNamedQueries()
+ * @see #getEntityMappingsInternal()
+ * @generated
+ */
+ public EReference getEntityMappingsInternal_NamedQueries() {
+ return (EReference) entityMappingsInternalEClass.getEStructuralFeatures().get(18);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getNamedNativeQueries <em>Named Native Queries</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Named Native Queries</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getNamedNativeQueries()
+ * @see #getEntityMappingsInternal()
+ * @generated
+ */
+ public EReference getEntityMappingsInternal_NamedNativeQueries() {
+ return (EReference) entityMappingsInternalEClass.getEStructuralFeatures().get(19);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getSequenceGenerators <em>Sequence Generators</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Sequence Generators</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getSequenceGenerators()
+ * @see #getEntityMappingsInternal()
+ * @generated
+ */
+ public EReference getEntityMappingsInternal_SequenceGenerators() {
+ return (EReference) entityMappingsInternalEClass.getEStructuralFeatures().get(16);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappings <em>Entity Mappings</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Entity Mappings</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.EntityMappings
+ * @generated
+ */
+ public EClass getEntityMappings() {
+ return entityMappingsEClass;
+ }
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappings#getPersistenceUnitMetadata <em>Persistence Unit Metadata</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Persistence Unit Metadata</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.EntityMappings#getPersistenceUnitMetadata()
+ * @see #getEntityMappings()
+ * @generated
+ */
+ public EReference getEntityMappings_PersistenceUnitMetadata() {
+ return (EReference) entityMappingsEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappings#getPackage <em>Package</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Package</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.EntityMappings#getPackage()
+ * @see #getEntityMappings()
+ * @generated
+ */
+ public EAttribute getEntityMappings_Package() {
+ return (EAttribute) entityMappingsEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsForXml <em>Entity Mappings For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Entity Mappings For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.EntityMappingsForXml
+ * @generated
+ */
+ public EClass getEntityMappingsForXml() {
+ return entityMappingsForXmlEClass;
+ }
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsForXml#getPersistenceUnitMetadataForXml <em>Persistence Unit Metadata For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Persistence Unit Metadata For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.EntityMappingsForXml#getPersistenceUnitMetadataForXml()
+ * @see #getEntityMappingsForXml()
+ * @generated
+ */
+ public EReference getEntityMappingsForXml_PersistenceUnitMetadataForXml() {
+ return (EReference) entityMappingsForXmlEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsForXml#getPackageForXml <em>Package For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Package For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.EntityMappingsForXml#getPackageForXml()
+ * @see #getEntityMappingsForXml()
+ * @generated
+ */
+ public EAttribute getEntityMappingsForXml_PackageForXml() {
+ return (EAttribute) entityMappingsForXmlEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping <em>Xml Type Mapping</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Type Mapping</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping
+ * @generated
+ */
+ public EClass getXmlTypeMapping() {
+ return xmlTypeMappingEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping#getDefaultAccess <em>Default Access</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Default Access</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping#getDefaultAccess()
+ * @see #getXmlTypeMapping()
+ * @generated
+ */
+ public EAttribute getXmlTypeMapping_DefaultAccess() {
+ return (EAttribute) xmlTypeMappingEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping#getSpecifiedAccess <em>Specified Access</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Specified Access</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping#getSpecifiedAccess()
+ * @see #getXmlTypeMapping()
+ * @generated
+ */
+ public EAttribute getXmlTypeMapping_SpecifiedAccess() {
+ return (EAttribute) xmlTypeMappingEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping#getAccess <em>Access</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Access</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping#getAccess()
+ * @see #getXmlTypeMapping()
+ * @generated
+ */
+ public EAttribute getXmlTypeMapping_Access() {
+ return (EAttribute) xmlTypeMappingEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping#getMetadataComplete <em>Metadata Complete</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Metadata Complete</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping#getMetadataComplete()
+ * @see #getXmlTypeMapping()
+ * @generated
+ */
+ public EAttribute getXmlTypeMapping_MetadataComplete() {
+ return (EAttribute) xmlTypeMappingEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping#getPersistentType <em>Persistent Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Persistent Type</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping#getPersistentType()
+ * @see #getXmlTypeMapping()
+ * @generated
+ */
+ public EReference getXmlTypeMapping_PersistentType() {
+ return (EReference) xmlTypeMappingEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentType <em>Xml Persistent Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Persistent Type</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlPersistentType
+ * @generated
+ */
+ public EClass getXmlPersistentType() {
+ return xmlPersistentTypeEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentType#getClass_ <em>Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Class</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlPersistentType#getClass_()
+ * @see #getXmlPersistentType()
+ * @generated
+ */
+ public EAttribute getXmlPersistentType_Class() {
+ return (EAttribute) xmlPersistentTypeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentType#getAttributeMappings <em>Attribute Mappings</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Attribute Mappings</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlPersistentType#getAttributeMappings()
+ * @see #getXmlPersistentType()
+ * @generated
+ */
+ public EReference getXmlPersistentType_AttributeMappings() {
+ return (EReference) xmlPersistentTypeEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentType#getSpecifiedAttributeMappings <em>Specified Attribute Mappings</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Specified Attribute Mappings</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlPersistentType#getSpecifiedAttributeMappings()
+ * @see #getXmlPersistentType()
+ * @generated
+ */
+ public EReference getXmlPersistentType_SpecifiedAttributeMappings() {
+ return (EReference) xmlPersistentTypeEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentType#getVirtualAttributeMappings <em>Virtual Attribute Mappings</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Virtual Attribute Mappings</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlPersistentType#getVirtualAttributeMappings()
+ * @see #getXmlPersistentType()
+ * @generated
+ */
+ public EReference getXmlPersistentType_VirtualAttributeMappings() {
+ return (EReference) xmlPersistentTypeEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentType#getPersistentAttributes <em>Persistent Attributes</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Persistent Attributes</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlPersistentType#getPersistentAttributes()
+ * @see #getXmlPersistentType()
+ * @generated
+ */
+ public EReference getXmlPersistentType_PersistentAttributes() {
+ return (EReference) xmlPersistentTypeEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentType#getSpecifiedPersistentAttributes <em>Specified Persistent Attributes</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Specified Persistent Attributes</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlPersistentType#getSpecifiedPersistentAttributes()
+ * @see #getXmlPersistentType()
+ * @generated
+ */
+ public EReference getXmlPersistentType_SpecifiedPersistentAttributes() {
+ return (EReference) xmlPersistentTypeEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentType#getVirtualPersistentAttributes <em>Virtual Persistent Attributes</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Virtual Persistent Attributes</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlPersistentType#getVirtualPersistentAttributes()
+ * @see #getXmlPersistentType()
+ * @generated
+ */
+ public EReference getXmlPersistentType_VirtualPersistentAttributes() {
+ return (EReference) xmlPersistentTypeEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlEntity <em>Xml Entity</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Entity</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlEntity
+ * @generated
+ */
+ public EClass getXmlEntity() {
+ return xmlEntityEClass;
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.content.orm.XmlEntity#getSecondaryTables <em>Secondary Tables</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Secondary Tables</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlEntity#getSecondaryTables()
+ * @see #getXmlEntity()
+ * @generated
+ */
+ public EReference getXmlEntity_SecondaryTables() {
+ return (EReference) xmlEntityEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.content.orm.XmlEntity#getSpecifiedSecondaryTables <em>Specified Secondary Tables</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Specified Secondary Tables</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlEntity#getSpecifiedSecondaryTables()
+ * @see #getXmlEntity()
+ * @generated
+ */
+ public EReference getXmlEntity_SpecifiedSecondaryTables() {
+ return (EReference) xmlEntityEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.content.orm.XmlEntity#getDefaultSecondaryTables <em>Default Secondary Tables</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Default Secondary Tables</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlEntity#getDefaultSecondaryTables()
+ * @see #getXmlEntity()
+ * @generated
+ */
+ public EReference getXmlEntity_DefaultSecondaryTables() {
+ return (EReference) xmlEntityEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlEmbeddable <em>Xml Embeddable</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Embeddable</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlEmbeddable
+ * @generated
+ */
+ public EClass getXmlEmbeddable() {
+ return xmlEmbeddableEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlAttributeMapping <em>Xml Attribute Mapping</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Attribute Mapping</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlAttributeMapping
+ * @generated
+ */
+ public EClass getXmlAttributeMapping() {
+ return xmlAttributeMappingEClass;
+ }
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.jpt.core.internal.content.orm.XmlAttributeMapping#getPersistentAttribute <em>Persistent Attribute</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Persistent Attribute</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlAttributeMapping#getPersistentAttribute()
+ * @see #getXmlAttributeMapping()
+ * @generated
+ */
+ public EReference getXmlAttributeMapping_PersistentAttribute() {
+ return (EReference) xmlAttributeMappingEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlNullAttributeMapping <em>Xml Null Attribute Mapping</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Null Attribute Mapping</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlNullAttributeMapping
+ * @generated
+ */
+ public EClass getXmlNullAttributeMapping() {
+ return xmlNullAttributeMappingEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentAttribute <em>Xml Persistent Attribute</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Persistent Attribute</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlPersistentAttribute
+ * @generated
+ */
+ public EClass getXmlPersistentAttribute() {
+ return xmlPersistentAttributeEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentAttribute#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlPersistentAttribute#getName()
+ * @see #getXmlPersistentAttribute()
+ * @generated
+ */
+ public EAttribute getXmlPersistentAttribute_Name() {
+ return (EAttribute) xmlPersistentAttributeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlBasic <em>Xml Basic</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Basic</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlBasic
+ * @generated
+ */
+ public EClass getXmlBasic() {
+ return xmlBasicEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlId <em>Xml Id</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Id</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlId
+ * @generated
+ */
+ public EClass getXmlId() {
+ return xmlIdEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlTransient <em>Xml Transient</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Transient</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlTransient
+ * @generated
+ */
+ public EClass getXmlTransient() {
+ return xmlTransientEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlEmbedded <em>Xml Embedded</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Embedded</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlEmbedded
+ * @generated
+ */
+ public EClass getXmlEmbedded() {
+ return xmlEmbeddedEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlEmbeddedId <em>Xml Embedded Id</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Embedded Id</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlEmbeddedId
+ * @generated
+ */
+ public EClass getXmlEmbeddedId() {
+ return xmlEmbeddedIdEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlVersion <em>Xml Version</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Version</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlVersion
+ * @generated
+ */
+ public EClass getXmlVersion() {
+ return xmlVersionEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMappingInternal <em>Xml Multi Relationship Mapping Internal</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Multi Relationship Mapping Internal</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMappingInternal
+ * @generated
+ */
+ public EClass getXmlMultiRelationshipMappingInternal() {
+ return xmlMultiRelationshipMappingInternalEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMappingForXml <em>Xml Multi Relationship Mapping For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Multi Relationship Mapping For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMappingForXml
+ * @generated
+ */
+ public EClass getXmlMultiRelationshipMappingForXml() {
+ return xmlMultiRelationshipMappingForXmlEClass;
+ }
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMappingForXml#getJoinTableForXml <em>Join Table For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Join Table For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMappingForXml#getJoinTableForXml()
+ * @see #getXmlMultiRelationshipMappingForXml()
+ * @generated
+ */
+ public EReference getXmlMultiRelationshipMappingForXml_JoinTableForXml() {
+ return (EReference) xmlMultiRelationshipMappingForXmlEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMappingForXml#getOrderByForXml <em>Order By For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Order By For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMappingForXml#getOrderByForXml()
+ * @see #getXmlMultiRelationshipMappingForXml()
+ * @generated
+ */
+ public EReference getXmlMultiRelationshipMappingForXml_OrderByForXml() {
+ return (EReference) xmlMultiRelationshipMappingForXmlEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMapping <em>Xml Multi Relationship Mapping</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Multi Relationship Mapping</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMapping
+ * @generated
+ */
+ public EClass getXmlMultiRelationshipMapping() {
+ return xmlMultiRelationshipMappingEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlOneToMany <em>Xml One To Many</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml One To Many</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlOneToMany
+ * @generated
+ */
+ public EClass getXmlOneToMany() {
+ return xmlOneToManyEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlManyToMany <em>Xml Many To Many</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Many To Many</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlManyToMany
+ * @generated
+ */
+ public EClass getXmlManyToMany() {
+ return xmlManyToManyEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataInternal <em>Persistence Unit Metadata Internal</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Persistence Unit Metadata Internal</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataInternal
+ * @generated
+ */
+ public EClass getPersistenceUnitMetadataInternal() {
+ return persistenceUnitMetadataInternalEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataInternal#isXmlMappingMetadataCompleteInternal <em>Xml Mapping Metadata Complete Internal</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Xml Mapping Metadata Complete Internal</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataInternal#isXmlMappingMetadataCompleteInternal()
+ * @see #getPersistenceUnitMetadataInternal()
+ * @generated
+ */
+ public EAttribute getPersistenceUnitMetadataInternal_XmlMappingMetadataCompleteInternal() {
+ return (EAttribute) persistenceUnitMetadataInternalEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataInternal#getPersistenceUnitDefaultsInternal <em>Persistence Unit Defaults Internal</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Persistence Unit Defaults Internal</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataInternal#getPersistenceUnitDefaultsInternal()
+ * @see #getPersistenceUnitMetadataInternal()
+ * @generated
+ */
+ public EReference getPersistenceUnitMetadataInternal_PersistenceUnitDefaultsInternal() {
+ return (EReference) persistenceUnitMetadataInternalEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadata <em>Persistence Unit Metadata</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Persistence Unit Metadata</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadata
+ * @generated
+ */
+ public EClass getPersistenceUnitMetadata() {
+ return persistenceUnitMetadataEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadata#isXmlMappingMetadataComplete <em>Xml Mapping Metadata Complete</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Xml Mapping Metadata Complete</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadata#isXmlMappingMetadataComplete()
+ * @see #getPersistenceUnitMetadata()
+ * @generated
+ */
+ public EAttribute getPersistenceUnitMetadata_XmlMappingMetadataComplete() {
+ return (EAttribute) persistenceUnitMetadataEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadata#getPersistenceUnitDefaults <em>Persistence Unit Defaults</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Persistence Unit Defaults</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadata#getPersistenceUnitDefaults()
+ * @see #getPersistenceUnitMetadata()
+ * @generated
+ */
+ public EReference getPersistenceUnitMetadata_PersistenceUnitDefaults() {
+ return (EReference) persistenceUnitMetadataEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataForXml <em>Persistence Unit Metadata For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Persistence Unit Metadata For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataForXml
+ * @generated
+ */
+ public EClass getPersistenceUnitMetadataForXml() {
+ return persistenceUnitMetadataForXmlEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataForXml#isXmlMappingMetadataCompleteForXml <em>Xml Mapping Metadata Complete For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Xml Mapping Metadata Complete For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataForXml#isXmlMappingMetadataCompleteForXml()
+ * @see #getPersistenceUnitMetadataForXml()
+ * @generated
+ */
+ public EAttribute getPersistenceUnitMetadataForXml_XmlMappingMetadataCompleteForXml() {
+ return (EAttribute) persistenceUnitMetadataForXmlEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataForXml#getPersistenceUnitDefaultsForXml <em>Persistence Unit Defaults For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Persistence Unit Defaults For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataForXml#getPersistenceUnitDefaultsForXml()
+ * @see #getPersistenceUnitMetadataForXml()
+ * @generated
+ */
+ public EReference getPersistenceUnitMetadataForXml_PersistenceUnitDefaultsForXml() {
+ return (EReference) persistenceUnitMetadataForXmlEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal <em>Persistence Unit Defaults Internal</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Persistence Unit Defaults Internal</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal
+ * @generated
+ */
+ public EClass getPersistenceUnitDefaultsInternal() {
+ return persistenceUnitDefaultsInternalEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal#getSchemaInternal <em>Schema Internal</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Schema Internal</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal#getSchemaInternal()
+ * @see #getPersistenceUnitDefaultsInternal()
+ * @generated
+ */
+ public EAttribute getPersistenceUnitDefaultsInternal_SchemaInternal() {
+ return (EAttribute) persistenceUnitDefaultsInternalEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal#getCatalogInternal <em>Catalog Internal</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Catalog Internal</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal#getCatalogInternal()
+ * @see #getPersistenceUnitDefaultsInternal()
+ * @generated
+ */
+ public EAttribute getPersistenceUnitDefaultsInternal_CatalogInternal() {
+ return (EAttribute) persistenceUnitDefaultsInternalEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal#getAccessInternal <em>Access Internal</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Access Internal</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal#getAccessInternal()
+ * @see #getPersistenceUnitDefaultsInternal()
+ * @generated
+ */
+ public EAttribute getPersistenceUnitDefaultsInternal_AccessInternal() {
+ return (EAttribute) persistenceUnitDefaultsInternalEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal#isCascadePersistInternal <em>Cascade Persist Internal</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Cascade Persist Internal</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal#isCascadePersistInternal()
+ * @see #getPersistenceUnitDefaultsInternal()
+ * @generated
+ */
+ public EAttribute getPersistenceUnitDefaultsInternal_CascadePersistInternal() {
+ return (EAttribute) persistenceUnitDefaultsInternalEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaults <em>Persistence Unit Defaults</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Persistence Unit Defaults</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaults
+ * @generated
+ */
+ public EClass getPersistenceUnitDefaults() {
+ return persistenceUnitDefaultsEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaults#getSchema <em>Schema</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Schema</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaults#getSchema()
+ * @see #getPersistenceUnitDefaults()
+ * @generated
+ */
+ public EAttribute getPersistenceUnitDefaults_Schema() {
+ return (EAttribute) persistenceUnitDefaultsEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaults#getCatalog <em>Catalog</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Catalog</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaults#getCatalog()
+ * @see #getPersistenceUnitDefaults()
+ * @generated
+ */
+ public EAttribute getPersistenceUnitDefaults_Catalog() {
+ return (EAttribute) persistenceUnitDefaultsEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaults#getAccess <em>Access</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Access</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaults#getAccess()
+ * @see #getPersistenceUnitDefaults()
+ * @generated
+ */
+ public EAttribute getPersistenceUnitDefaults_Access() {
+ return (EAttribute) persistenceUnitDefaultsEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaults#isCascadePersist <em>Cascade Persist</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Cascade Persist</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaults#isCascadePersist()
+ * @see #getPersistenceUnitDefaults()
+ * @generated
+ */
+ public EAttribute getPersistenceUnitDefaults_CascadePersist() {
+ return (EAttribute) persistenceUnitDefaultsEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsForXml <em>Persistence Unit Defaults For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Persistence Unit Defaults For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsForXml
+ * @generated
+ */
+ public EClass getPersistenceUnitDefaultsForXml() {
+ return persistenceUnitDefaultsForXmlEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsForXml#getSchemaForXml <em>Schema For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Schema For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsForXml#getSchemaForXml()
+ * @see #getPersistenceUnitDefaultsForXml()
+ * @generated
+ */
+ public EAttribute getPersistenceUnitDefaultsForXml_SchemaForXml() {
+ return (EAttribute) persistenceUnitDefaultsForXmlEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsForXml#getCatalogForXml <em>Catalog For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Catalog For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsForXml#getCatalogForXml()
+ * @see #getPersistenceUnitDefaultsForXml()
+ * @generated
+ */
+ public EAttribute getPersistenceUnitDefaultsForXml_CatalogForXml() {
+ return (EAttribute) persistenceUnitDefaultsForXmlEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsForXml#getAccessForXml <em>Access For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Access For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsForXml#getAccessForXml()
+ * @see #getPersistenceUnitDefaultsForXml()
+ * @generated
+ */
+ public EAttribute getPersistenceUnitDefaultsForXml_AccessForXml() {
+ return (EAttribute) persistenceUnitDefaultsForXmlEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsForXml#isCascadePersistForXml <em>Cascade Persist For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Cascade Persist For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsForXml#isCascadePersistForXml()
+ * @see #getPersistenceUnitDefaultsForXml()
+ * @generated
+ */
+ public EAttribute getPersistenceUnitDefaultsForXml_CascadePersistForXml() {
+ return (EAttribute) persistenceUnitDefaultsForXmlEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlTable <em>Xml Table</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Table</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlTable
+ * @generated
+ */
+ public EClass getXmlTable() {
+ return xmlTableEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlNamedColumn <em>Abstract Xml Named Column</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Abstract Xml Named Column</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.AbstractXmlNamedColumn
+ * @generated
+ */
+ public EClass getAbstractXmlNamedColumn() {
+ return abstractXmlNamedColumnEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlNamedColumn#getSpecifiedNameForXml <em>Specified Name For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Specified Name For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.AbstractXmlNamedColumn#getSpecifiedNameForXml()
+ * @see #getAbstractXmlNamedColumn()
+ * @generated
+ */
+ public EAttribute getAbstractXmlNamedColumn_SpecifiedNameForXml() {
+ return (EAttribute) abstractXmlNamedColumnEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlNamedColumn#getColumnDefinitionForXml <em>Column Definition For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Column Definition For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.AbstractXmlNamedColumn#getColumnDefinitionForXml()
+ * @see #getAbstractXmlNamedColumn()
+ * @generated
+ */
+ public EAttribute getAbstractXmlNamedColumn_ColumnDefinitionForXml() {
+ return (EAttribute) abstractXmlNamedColumnEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn <em>Abstract Xml Column</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Abstract Xml Column</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn
+ * @generated
+ */
+ public EClass getAbstractXmlColumn() {
+ return abstractXmlColumnEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn#getUniqueForXml <em>Unique For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Unique For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn#getUniqueForXml()
+ * @see #getAbstractXmlColumn()
+ * @generated
+ */
+ public EAttribute getAbstractXmlColumn_UniqueForXml() {
+ return (EAttribute) abstractXmlColumnEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn#getNullableForXml <em>Nullable For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Nullable For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn#getNullableForXml()
+ * @see #getAbstractXmlColumn()
+ * @generated
+ */
+ public EAttribute getAbstractXmlColumn_NullableForXml() {
+ return (EAttribute) abstractXmlColumnEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn#getInsertableForXml <em>Insertable For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Insertable For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn#getInsertableForXml()
+ * @see #getAbstractXmlColumn()
+ * @generated
+ */
+ public EAttribute getAbstractXmlColumn_InsertableForXml() {
+ return (EAttribute) abstractXmlColumnEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn#getUpdatableForXml <em>Updatable For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Updatable For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn#getUpdatableForXml()
+ * @see #getAbstractXmlColumn()
+ * @generated
+ */
+ public EAttribute getAbstractXmlColumn_UpdatableForXml() {
+ return (EAttribute) abstractXmlColumnEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn#getSpecifiedTableForXml <em>Specified Table For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Specified Table For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn#getSpecifiedTableForXml()
+ * @see #getAbstractXmlColumn()
+ * @generated
+ */
+ public EAttribute getAbstractXmlColumn_SpecifiedTableForXml() {
+ return (EAttribute) abstractXmlColumnEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlColumn <em>Xml Column</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Column</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlColumn
+ * @generated
+ */
+ public EClass getXmlColumn() {
+ return xmlColumnEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.XmlColumn#getLengthForXml <em>Length For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Length For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlColumn#getLengthForXml()
+ * @see #getXmlColumn()
+ * @generated
+ */
+ public EAttribute getXmlColumn_LengthForXml() {
+ return (EAttribute) xmlColumnEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.XmlColumn#getPrecisionForXml <em>Precision For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Precision For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlColumn#getPrecisionForXml()
+ * @see #getXmlColumn()
+ * @generated
+ */
+ public EAttribute getXmlColumn_PrecisionForXml() {
+ return (EAttribute) xmlColumnEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.XmlColumn#getScaleForXml <em>Scale For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Scale For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlColumn#getScaleForXml()
+ * @see #getXmlColumn()
+ * @generated
+ */
+ public EAttribute getXmlColumn_ScaleForXml() {
+ return (EAttribute) xmlColumnEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlJoinColumn <em>Xml Join Column</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Join Column</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlJoinColumn
+ * @generated
+ */
+ public EClass getXmlJoinColumn() {
+ return xmlJoinColumnEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.XmlJoinColumn#getSpecifiedReferencedColumnNameForXml <em>Specified Referenced Column Name For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Specified Referenced Column Name For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlJoinColumn#getSpecifiedReferencedColumnNameForXml()
+ * @see #getXmlJoinColumn()
+ * @generated
+ */
+ public EAttribute getXmlJoinColumn_SpecifiedReferencedColumnNameForXml() {
+ return (EAttribute) xmlJoinColumnEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.IXmlColumnMapping <em>IXml Column Mapping</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IXml Column Mapping</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.IXmlColumnMapping
+ * @generated
+ */
+ public EClass getIXmlColumnMapping() {
+ return iXmlColumnMappingEClass;
+ }
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.jpt.core.internal.content.orm.IXmlColumnMapping#getColumnForXml <em>Column For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Column For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.IXmlColumnMapping#getColumnForXml()
+ * @see #getIXmlColumnMapping()
+ * @generated
+ */
+ public EReference getIXmlColumnMapping_ColumnForXml() {
+ return (EReference) iXmlColumnMappingEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlManyToOne <em>Xml Many To One</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Many To One</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlManyToOne
+ * @generated
+ */
+ public EClass getXmlManyToOne() {
+ return xmlManyToOneEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlOneToOne <em>Xml One To One</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml One To One</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlOneToOne
+ * @generated
+ */
+ public EClass getXmlOneToOne() {
+ return xmlOneToOneEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlSingleRelationshipMapping <em>Xml Single Relationship Mapping</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Single Relationship Mapping</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlSingleRelationshipMapping
+ * @generated
+ */
+ public EClass getXmlSingleRelationshipMapping() {
+ return xmlSingleRelationshipMappingEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlRelationshipMapping <em>Xml Relationship Mapping</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Relationship Mapping</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlRelationshipMapping
+ * @generated
+ */
+ public EClass getXmlRelationshipMapping() {
+ return xmlRelationshipMappingEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlJoinTable <em>Xml Join Table</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Join Table</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlJoinTable
+ * @generated
+ */
+ public EClass getXmlJoinTable() {
+ return xmlJoinTableEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlTable <em>Abstract Xml Table</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Abstract Xml Table</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.AbstractXmlTable
+ * @generated
+ */
+ public EClass getAbstractXmlTable() {
+ return abstractXmlTableEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlTable#getSpecifiedNameForXml <em>Specified Name For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Specified Name For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.AbstractXmlTable#getSpecifiedNameForXml()
+ * @see #getAbstractXmlTable()
+ * @generated
+ */
+ public EAttribute getAbstractXmlTable_SpecifiedNameForXml() {
+ return (EAttribute) abstractXmlTableEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlTable#getSpecifiedCatalogForXml <em>Specified Catalog For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Specified Catalog For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.AbstractXmlTable#getSpecifiedCatalogForXml()
+ * @see #getAbstractXmlTable()
+ * @generated
+ */
+ public EAttribute getAbstractXmlTable_SpecifiedCatalogForXml() {
+ return (EAttribute) abstractXmlTableEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlTable#getSpecifiedSchemaForXml <em>Specified Schema For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Specified Schema For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.AbstractXmlTable#getSpecifiedSchemaForXml()
+ * @see #getAbstractXmlTable()
+ * @generated
+ */
+ public EAttribute getAbstractXmlTable_SpecifiedSchemaForXml() {
+ return (EAttribute) abstractXmlTableEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlOverride <em>Xml Override</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Override</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlOverride
+ * @generated
+ */
+ public EClass getXmlOverride() {
+ return xmlOverrideEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlAttributeOverride <em>Xml Attribute Override</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Attribute Override</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlAttributeOverride
+ * @generated
+ */
+ public EClass getXmlAttributeOverride() {
+ return xmlAttributeOverrideEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlAssociationOverride <em>Xml Association Override</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Association Override</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlAssociationOverride
+ * @generated
+ */
+ public EClass getXmlAssociationOverride() {
+ return xmlAssociationOverrideEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlDiscriminatorColumn <em>Xml Discriminator Column</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Discriminator Column</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlDiscriminatorColumn
+ * @generated
+ */
+ public EClass getXmlDiscriminatorColumn() {
+ return xmlDiscriminatorColumnEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.XmlDiscriminatorColumn#getSpecifiedNameForXml <em>Specified Name For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Specified Name For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlDiscriminatorColumn#getSpecifiedNameForXml()
+ * @see #getXmlDiscriminatorColumn()
+ * @generated
+ */
+ public EAttribute getXmlDiscriminatorColumn_SpecifiedNameForXml() {
+ return (EAttribute) xmlDiscriminatorColumnEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.XmlDiscriminatorColumn#getDiscriminatorTypeForXml <em>Discriminator Type For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Discriminator Type For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlDiscriminatorColumn#getDiscriminatorTypeForXml()
+ * @see #getXmlDiscriminatorColumn()
+ * @generated
+ */
+ public EAttribute getXmlDiscriminatorColumn_DiscriminatorTypeForXml() {
+ return (EAttribute) xmlDiscriminatorColumnEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.XmlDiscriminatorColumn#getColumnDefinitionForXml <em>Column Definition For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Column Definition For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlDiscriminatorColumn#getColumnDefinitionForXml()
+ * @see #getXmlDiscriminatorColumn()
+ * @generated
+ */
+ public EAttribute getXmlDiscriminatorColumn_ColumnDefinitionForXml() {
+ return (EAttribute) xmlDiscriminatorColumnEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.XmlDiscriminatorColumn#getSpecifiedLengthForXml <em>Specified Length For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Specified Length For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlDiscriminatorColumn#getSpecifiedLengthForXml()
+ * @see #getXmlDiscriminatorColumn()
+ * @generated
+ */
+ public EAttribute getXmlDiscriminatorColumn_SpecifiedLengthForXml() {
+ return (EAttribute) xmlDiscriminatorColumnEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlSecondaryTable <em>Xml Secondary Table</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Secondary Table</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlSecondaryTable
+ * @generated
+ */
+ public EClass getXmlSecondaryTable() {
+ return xmlSecondaryTableEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlPrimaryKeyJoinColumn <em>Xml Primary Key Join Column</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Primary Key Join Column</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlPrimaryKeyJoinColumn
+ * @generated
+ */
+ public EClass getXmlPrimaryKeyJoinColumn() {
+ return xmlPrimaryKeyJoinColumnEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.orm.XmlPrimaryKeyJoinColumn#getSpecifiedReferencedColumnNameForXml <em>Specified Referenced Column Name For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Specified Referenced Column Name For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlPrimaryKeyJoinColumn#getSpecifiedReferencedColumnNameForXml()
+ * @see #getXmlPrimaryKeyJoinColumn()
+ * @generated
+ */
+ public EAttribute getXmlPrimaryKeyJoinColumn_SpecifiedReferencedColumnNameForXml() {
+ return (EAttribute) xmlPrimaryKeyJoinColumnEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlGeneratedValue <em>Xml Generated Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Generated Value</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlGeneratedValue
+ * @generated
+ */
+ public EClass getXmlGeneratedValue() {
+ return xmlGeneratedValueEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlGenerator <em>Xml Generator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Generator</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlGenerator
+ * @generated
+ */
+ public EClass getXmlGenerator() {
+ return xmlGeneratorEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlSequenceGenerator <em>Xml Sequence Generator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Sequence Generator</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlSequenceGenerator
+ * @generated
+ */
+ public EClass getXmlSequenceGenerator() {
+ return xmlSequenceGeneratorEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlTableGenerator <em>Xml Table Generator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Table Generator</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlTableGenerator
+ * @generated
+ */
+ public EClass getXmlTableGenerator() {
+ return xmlTableGeneratorEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlOrderBy <em>Xml Order By</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Order By</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlOrderBy
+ * @generated
+ */
+ public EClass getXmlOrderBy() {
+ return xmlOrderByEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlQuery <em>Abstract Xml Query</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Abstract Xml Query</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.AbstractXmlQuery
+ * @generated
+ */
+ public EClass getAbstractXmlQuery() {
+ return abstractXmlQueryEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlNamedQuery <em>Xml Named Query</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Named Query</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlNamedQuery
+ * @generated
+ */
+ public EClass getXmlNamedQuery() {
+ return xmlNamedQueryEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlNamedNativeQuery <em>Xml Named Native Query</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Named Native Query</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlNamedNativeQuery
+ * @generated
+ */
+ public EClass getXmlNamedNativeQuery() {
+ return xmlNamedNativeQueryEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlQueryHint <em>Xml Query Hint</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Query Hint</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlQueryHint
+ * @generated
+ */
+ public EClass getXmlQueryHint() {
+ return xmlQueryHintEClass;
+ }
+
+ /**
+ * 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
+ */
+ public OrmFactory getOrmFactory() {
+ return (OrmFactory) getEFactoryInstance();
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlMappedSuperclass <em>Xml Mapped Superclass</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Mapped Superclass</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlMappedSuperclass
+ * @generated
+ */
+ public EClass getXmlMappedSuperclass() {
+ return xmlMappedSuperclassEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlEntityInternal <em>Xml Entity Internal</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Entity Internal</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlEntityInternal
+ * @generated
+ */
+ public EClass getXmlEntityInternal() {
+ return xmlEntityInternalEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.orm.XmlEntityForXml <em>Xml Entity For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Entity For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlEntityForXml
+ * @generated
+ */
+ public EClass getXmlEntityForXml() {
+ return xmlEntityForXmlEClass;
+ }
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.jpt.core.internal.content.orm.XmlEntityForXml#getTableForXml <em>Table For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Table For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlEntityForXml#getTableForXml()
+ * @see #getXmlEntityForXml()
+ * @generated
+ */
+ public EReference getXmlEntityForXml_TableForXml() {
+ return (EReference) xmlEntityForXmlEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.jpt.core.internal.content.orm.XmlEntityForXml#getDiscriminatorColumnForXml <em>Discriminator Column For Xml</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Discriminator Column For Xml</em>'.
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlEntityForXml#getDiscriminatorColumnForXml()
+ * @see #getXmlEntityForXml()
+ * @generated
+ */
+ public EReference getXmlEntityForXml_DiscriminatorColumnForXml() {
+ return (EReference) xmlEntityForXmlEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- 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
+ xmlRootContentNodeEClass = createEClass(XML_ROOT_CONTENT_NODE);
+ createEReference(xmlRootContentNodeEClass, XML_ROOT_CONTENT_NODE__ENTITY_MAPPINGS);
+ entityMappingsInternalEClass = createEClass(ENTITY_MAPPINGS_INTERNAL);
+ createEReference(entityMappingsInternalEClass, ENTITY_MAPPINGS_INTERNAL__ROOT);
+ createEAttribute(entityMappingsInternalEClass, ENTITY_MAPPINGS_INTERNAL__VERSION);
+ createEAttribute(entityMappingsInternalEClass, ENTITY_MAPPINGS_INTERNAL__DESCRIPTION);
+ createEReference(entityMappingsInternalEClass, ENTITY_MAPPINGS_INTERNAL__PERSISTENCE_UNIT_METADATA_INTERNAL);
+ createEAttribute(entityMappingsInternalEClass, ENTITY_MAPPINGS_INTERNAL__PACKAGE_INTERNAL);
+ createEAttribute(entityMappingsInternalEClass, ENTITY_MAPPINGS_INTERNAL__DEFAULT_SCHEMA);
+ createEAttribute(entityMappingsInternalEClass, ENTITY_MAPPINGS_INTERNAL__SPECIFIED_SCHEMA);
+ createEAttribute(entityMappingsInternalEClass, ENTITY_MAPPINGS_INTERNAL__SCHEMA);
+ createEAttribute(entityMappingsInternalEClass, ENTITY_MAPPINGS_INTERNAL__DEFAULT_CATALOG);
+ createEAttribute(entityMappingsInternalEClass, ENTITY_MAPPINGS_INTERNAL__SPECIFIED_CATALOG);
+ createEAttribute(entityMappingsInternalEClass, ENTITY_MAPPINGS_INTERNAL__CATALOG);
+ createEAttribute(entityMappingsInternalEClass, ENTITY_MAPPINGS_INTERNAL__DEFAULT_ACCESS);
+ createEAttribute(entityMappingsInternalEClass, ENTITY_MAPPINGS_INTERNAL__SPECIFIED_ACCESS);
+ createEAttribute(entityMappingsInternalEClass, ENTITY_MAPPINGS_INTERNAL__ACCESS);
+ createEReference(entityMappingsInternalEClass, ENTITY_MAPPINGS_INTERNAL__TYPE_MAPPINGS);
+ createEReference(entityMappingsInternalEClass, ENTITY_MAPPINGS_INTERNAL__PERSISTENT_TYPES);
+ createEReference(entityMappingsInternalEClass, ENTITY_MAPPINGS_INTERNAL__SEQUENCE_GENERATORS);
+ createEReference(entityMappingsInternalEClass, ENTITY_MAPPINGS_INTERNAL__TABLE_GENERATORS);
+ createEReference(entityMappingsInternalEClass, ENTITY_MAPPINGS_INTERNAL__NAMED_QUERIES);
+ createEReference(entityMappingsInternalEClass, ENTITY_MAPPINGS_INTERNAL__NAMED_NATIVE_QUERIES);
+ entityMappingsEClass = createEClass(ENTITY_MAPPINGS);
+ createEReference(entityMappingsEClass, ENTITY_MAPPINGS__PERSISTENCE_UNIT_METADATA);
+ createEAttribute(entityMappingsEClass, ENTITY_MAPPINGS__PACKAGE);
+ entityMappingsForXmlEClass = createEClass(ENTITY_MAPPINGS_FOR_XML);
+ createEReference(entityMappingsForXmlEClass, ENTITY_MAPPINGS_FOR_XML__PERSISTENCE_UNIT_METADATA_FOR_XML);
+ createEAttribute(entityMappingsForXmlEClass, ENTITY_MAPPINGS_FOR_XML__PACKAGE_FOR_XML);
+ xmlTypeMappingEClass = createEClass(XML_TYPE_MAPPING);
+ createEAttribute(xmlTypeMappingEClass, XML_TYPE_MAPPING__DEFAULT_ACCESS);
+ createEAttribute(xmlTypeMappingEClass, XML_TYPE_MAPPING__SPECIFIED_ACCESS);
+ createEAttribute(xmlTypeMappingEClass, XML_TYPE_MAPPING__ACCESS);
+ createEAttribute(xmlTypeMappingEClass, XML_TYPE_MAPPING__METADATA_COMPLETE);
+ createEReference(xmlTypeMappingEClass, XML_TYPE_MAPPING__PERSISTENT_TYPE);
+ xmlPersistentTypeEClass = createEClass(XML_PERSISTENT_TYPE);
+ createEAttribute(xmlPersistentTypeEClass, XML_PERSISTENT_TYPE__CLASS);
+ createEReference(xmlPersistentTypeEClass, XML_PERSISTENT_TYPE__ATTRIBUTE_MAPPINGS);
+ createEReference(xmlPersistentTypeEClass, XML_PERSISTENT_TYPE__SPECIFIED_ATTRIBUTE_MAPPINGS);
+ createEReference(xmlPersistentTypeEClass, XML_PERSISTENT_TYPE__VIRTUAL_ATTRIBUTE_MAPPINGS);
+ createEReference(xmlPersistentTypeEClass, XML_PERSISTENT_TYPE__PERSISTENT_ATTRIBUTES);
+ createEReference(xmlPersistentTypeEClass, XML_PERSISTENT_TYPE__SPECIFIED_PERSISTENT_ATTRIBUTES);
+ createEReference(xmlPersistentTypeEClass, XML_PERSISTENT_TYPE__VIRTUAL_PERSISTENT_ATTRIBUTES);
+ xmlMappedSuperclassEClass = createEClass(XML_MAPPED_SUPERCLASS);
+ xmlEntityInternalEClass = createEClass(XML_ENTITY_INTERNAL);
+ xmlEntityForXmlEClass = createEClass(XML_ENTITY_FOR_XML);
+ createEReference(xmlEntityForXmlEClass, XML_ENTITY_FOR_XML__TABLE_FOR_XML);
+ createEReference(xmlEntityForXmlEClass, XML_ENTITY_FOR_XML__DISCRIMINATOR_COLUMN_FOR_XML);
+ xmlEntityEClass = createEClass(XML_ENTITY);
+ createEReference(xmlEntityEClass, XML_ENTITY__SECONDARY_TABLES);
+ createEReference(xmlEntityEClass, XML_ENTITY__SPECIFIED_SECONDARY_TABLES);
+ createEReference(xmlEntityEClass, XML_ENTITY__DEFAULT_SECONDARY_TABLES);
+ xmlEmbeddableEClass = createEClass(XML_EMBEDDABLE);
+ xmlAttributeMappingEClass = createEClass(XML_ATTRIBUTE_MAPPING);
+ createEReference(xmlAttributeMappingEClass, XML_ATTRIBUTE_MAPPING__PERSISTENT_ATTRIBUTE);
+ xmlNullAttributeMappingEClass = createEClass(XML_NULL_ATTRIBUTE_MAPPING);
+ xmlBasicEClass = createEClass(XML_BASIC);
+ xmlIdEClass = createEClass(XML_ID);
+ xmlTransientEClass = createEClass(XML_TRANSIENT);
+ xmlEmbeddedEClass = createEClass(XML_EMBEDDED);
+ xmlEmbeddedIdEClass = createEClass(XML_EMBEDDED_ID);
+ xmlVersionEClass = createEClass(XML_VERSION);
+ xmlMultiRelationshipMappingInternalEClass = createEClass(XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL);
+ xmlMultiRelationshipMappingForXmlEClass = createEClass(XML_MULTI_RELATIONSHIP_MAPPING_FOR_XML);
+ createEReference(xmlMultiRelationshipMappingForXmlEClass, XML_MULTI_RELATIONSHIP_MAPPING_FOR_XML__JOIN_TABLE_FOR_XML);
+ createEReference(xmlMultiRelationshipMappingForXmlEClass, XML_MULTI_RELATIONSHIP_MAPPING_FOR_XML__ORDER_BY_FOR_XML);
+ xmlMultiRelationshipMappingEClass = createEClass(XML_MULTI_RELATIONSHIP_MAPPING);
+ xmlOneToManyEClass = createEClass(XML_ONE_TO_MANY);
+ xmlManyToManyEClass = createEClass(XML_MANY_TO_MANY);
+ xmlPersistentAttributeEClass = createEClass(XML_PERSISTENT_ATTRIBUTE);
+ createEAttribute(xmlPersistentAttributeEClass, XML_PERSISTENT_ATTRIBUTE__NAME);
+ persistenceUnitMetadataInternalEClass = createEClass(PERSISTENCE_UNIT_METADATA_INTERNAL);
+ createEAttribute(persistenceUnitMetadataInternalEClass, PERSISTENCE_UNIT_METADATA_INTERNAL__XML_MAPPING_METADATA_COMPLETE_INTERNAL);
+ createEReference(persistenceUnitMetadataInternalEClass, PERSISTENCE_UNIT_METADATA_INTERNAL__PERSISTENCE_UNIT_DEFAULTS_INTERNAL);
+ persistenceUnitMetadataEClass = createEClass(PERSISTENCE_UNIT_METADATA);
+ createEAttribute(persistenceUnitMetadataEClass, PERSISTENCE_UNIT_METADATA__XML_MAPPING_METADATA_COMPLETE);
+ createEReference(persistenceUnitMetadataEClass, PERSISTENCE_UNIT_METADATA__PERSISTENCE_UNIT_DEFAULTS);
+ persistenceUnitMetadataForXmlEClass = createEClass(PERSISTENCE_UNIT_METADATA_FOR_XML);
+ createEAttribute(persistenceUnitMetadataForXmlEClass, PERSISTENCE_UNIT_METADATA_FOR_XML__XML_MAPPING_METADATA_COMPLETE_FOR_XML);
+ createEReference(persistenceUnitMetadataForXmlEClass, PERSISTENCE_UNIT_METADATA_FOR_XML__PERSISTENCE_UNIT_DEFAULTS_FOR_XML);
+ persistenceUnitDefaultsInternalEClass = createEClass(PERSISTENCE_UNIT_DEFAULTS_INTERNAL);
+ createEAttribute(persistenceUnitDefaultsInternalEClass, PERSISTENCE_UNIT_DEFAULTS_INTERNAL__SCHEMA_INTERNAL);
+ createEAttribute(persistenceUnitDefaultsInternalEClass, PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CATALOG_INTERNAL);
+ createEAttribute(persistenceUnitDefaultsInternalEClass, PERSISTENCE_UNIT_DEFAULTS_INTERNAL__ACCESS_INTERNAL);
+ createEAttribute(persistenceUnitDefaultsInternalEClass, PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CASCADE_PERSIST_INTERNAL);
+ persistenceUnitDefaultsEClass = createEClass(PERSISTENCE_UNIT_DEFAULTS);
+ createEAttribute(persistenceUnitDefaultsEClass, PERSISTENCE_UNIT_DEFAULTS__SCHEMA);
+ createEAttribute(persistenceUnitDefaultsEClass, PERSISTENCE_UNIT_DEFAULTS__CATALOG);
+ createEAttribute(persistenceUnitDefaultsEClass, PERSISTENCE_UNIT_DEFAULTS__ACCESS);
+ createEAttribute(persistenceUnitDefaultsEClass, PERSISTENCE_UNIT_DEFAULTS__CASCADE_PERSIST);
+ persistenceUnitDefaultsForXmlEClass = createEClass(PERSISTENCE_UNIT_DEFAULTS_FOR_XML);
+ createEAttribute(persistenceUnitDefaultsForXmlEClass, PERSISTENCE_UNIT_DEFAULTS_FOR_XML__SCHEMA_FOR_XML);
+ createEAttribute(persistenceUnitDefaultsForXmlEClass, PERSISTENCE_UNIT_DEFAULTS_FOR_XML__CATALOG_FOR_XML);
+ createEAttribute(persistenceUnitDefaultsForXmlEClass, PERSISTENCE_UNIT_DEFAULTS_FOR_XML__ACCESS_FOR_XML);
+ createEAttribute(persistenceUnitDefaultsForXmlEClass, PERSISTENCE_UNIT_DEFAULTS_FOR_XML__CASCADE_PERSIST_FOR_XML);
+ xmlTableEClass = createEClass(XML_TABLE);
+ abstractXmlNamedColumnEClass = createEClass(ABSTRACT_XML_NAMED_COLUMN);
+ createEAttribute(abstractXmlNamedColumnEClass, ABSTRACT_XML_NAMED_COLUMN__SPECIFIED_NAME_FOR_XML);
+ createEAttribute(abstractXmlNamedColumnEClass, ABSTRACT_XML_NAMED_COLUMN__COLUMN_DEFINITION_FOR_XML);
+ abstractXmlColumnEClass = createEClass(ABSTRACT_XML_COLUMN);
+ createEAttribute(abstractXmlColumnEClass, ABSTRACT_XML_COLUMN__UNIQUE_FOR_XML);
+ createEAttribute(abstractXmlColumnEClass, ABSTRACT_XML_COLUMN__NULLABLE_FOR_XML);
+ createEAttribute(abstractXmlColumnEClass, ABSTRACT_XML_COLUMN__INSERTABLE_FOR_XML);
+ createEAttribute(abstractXmlColumnEClass, ABSTRACT_XML_COLUMN__UPDATABLE_FOR_XML);
+ createEAttribute(abstractXmlColumnEClass, ABSTRACT_XML_COLUMN__SPECIFIED_TABLE_FOR_XML);
+ xmlColumnEClass = createEClass(XML_COLUMN);
+ createEAttribute(xmlColumnEClass, XML_COLUMN__LENGTH_FOR_XML);
+ createEAttribute(xmlColumnEClass, XML_COLUMN__PRECISION_FOR_XML);
+ createEAttribute(xmlColumnEClass, XML_COLUMN__SCALE_FOR_XML);
+ xmlJoinColumnEClass = createEClass(XML_JOIN_COLUMN);
+ createEAttribute(xmlJoinColumnEClass, XML_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME_FOR_XML);
+ iXmlColumnMappingEClass = createEClass(IXML_COLUMN_MAPPING);
+ createEReference(iXmlColumnMappingEClass, IXML_COLUMN_MAPPING__COLUMN_FOR_XML);
+ xmlManyToOneEClass = createEClass(XML_MANY_TO_ONE);
+ xmlOneToOneEClass = createEClass(XML_ONE_TO_ONE);
+ xmlSingleRelationshipMappingEClass = createEClass(XML_SINGLE_RELATIONSHIP_MAPPING);
+ xmlRelationshipMappingEClass = createEClass(XML_RELATIONSHIP_MAPPING);
+ xmlJoinTableEClass = createEClass(XML_JOIN_TABLE);
+ abstractXmlTableEClass = createEClass(ABSTRACT_XML_TABLE);
+ createEAttribute(abstractXmlTableEClass, ABSTRACT_XML_TABLE__SPECIFIED_NAME_FOR_XML);
+ createEAttribute(abstractXmlTableEClass, ABSTRACT_XML_TABLE__SPECIFIED_CATALOG_FOR_XML);
+ createEAttribute(abstractXmlTableEClass, ABSTRACT_XML_TABLE__SPECIFIED_SCHEMA_FOR_XML);
+ xmlOverrideEClass = createEClass(XML_OVERRIDE);
+ xmlAttributeOverrideEClass = createEClass(XML_ATTRIBUTE_OVERRIDE);
+ xmlAssociationOverrideEClass = createEClass(XML_ASSOCIATION_OVERRIDE);
+ xmlDiscriminatorColumnEClass = createEClass(XML_DISCRIMINATOR_COLUMN);
+ createEAttribute(xmlDiscriminatorColumnEClass, XML_DISCRIMINATOR_COLUMN__SPECIFIED_NAME_FOR_XML);
+ createEAttribute(xmlDiscriminatorColumnEClass, XML_DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE_FOR_XML);
+ createEAttribute(xmlDiscriminatorColumnEClass, XML_DISCRIMINATOR_COLUMN__COLUMN_DEFINITION_FOR_XML);
+ createEAttribute(xmlDiscriminatorColumnEClass, XML_DISCRIMINATOR_COLUMN__SPECIFIED_LENGTH_FOR_XML);
+ xmlSecondaryTableEClass = createEClass(XML_SECONDARY_TABLE);
+ xmlPrimaryKeyJoinColumnEClass = createEClass(XML_PRIMARY_KEY_JOIN_COLUMN);
+ createEAttribute(xmlPrimaryKeyJoinColumnEClass, XML_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME_FOR_XML);
+ xmlGeneratedValueEClass = createEClass(XML_GENERATED_VALUE);
+ xmlGeneratorEClass = createEClass(XML_GENERATOR);
+ xmlSequenceGeneratorEClass = createEClass(XML_SEQUENCE_GENERATOR);
+ xmlTableGeneratorEClass = createEClass(XML_TABLE_GENERATOR);
+ xmlOrderByEClass = createEClass(XML_ORDER_BY);
+ abstractXmlQueryEClass = createEClass(ABSTRACT_XML_QUERY);
+ xmlNamedQueryEClass = createEClass(XML_NAMED_QUERY);
+ xmlNamedNativeQueryEClass = createEClass(XML_NAMED_NATIVE_QUERY);
+ xmlQueryHintEClass = createEClass(XML_QUERY_HINT);
+ }
+
+ /**
+ * <!-- 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
+ JpaCorePackage theJpaCorePackage = (JpaCorePackage) EPackage.Registry.INSTANCE.getEPackage(JpaCorePackage.eNS_URI);
+ JpaCoreMappingsPackage theJpaCoreMappingsPackage = (JpaCoreMappingsPackage) EPackage.Registry.INSTANCE.getEPackage(JpaCoreMappingsPackage.eNS_URI);
+ EcorePackage theEcorePackage = (EcorePackage) EPackage.Registry.INSTANCE.getEPackage(EcorePackage.eNS_URI);
+ // Create type parameters
+ // Set bounds for type parameters
+ // Add supertypes to classes
+ xmlRootContentNodeEClass.getESuperTypes().add(theJpaCorePackage.getXmlEObject());
+ xmlRootContentNodeEClass.getESuperTypes().add(theJpaCorePackage.getIJpaRootContentNode());
+ entityMappingsInternalEClass.getESuperTypes().add(theJpaCorePackage.getXmlEObject());
+ entityMappingsInternalEClass.getESuperTypes().add(theJpaCorePackage.getIJpaContentNode());
+ entityMappingsInternalEClass.getESuperTypes().add(this.getEntityMappingsForXml());
+ entityMappingsInternalEClass.getESuperTypes().add(this.getEntityMappings());
+ xmlTypeMappingEClass.getESuperTypes().add(theJpaCorePackage.getXmlEObject());
+ xmlTypeMappingEClass.getESuperTypes().add(theJpaCorePackage.getITypeMapping());
+ xmlPersistentTypeEClass.getESuperTypes().add(theJpaCorePackage.getXmlEObject());
+ xmlPersistentTypeEClass.getESuperTypes().add(theJpaCorePackage.getIPersistentType());
+ xmlMappedSuperclassEClass.getESuperTypes().add(this.getXmlTypeMapping());
+ xmlMappedSuperclassEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIMappedSuperclass());
+ xmlEntityInternalEClass.getESuperTypes().add(this.getXmlTypeMapping());
+ xmlEntityInternalEClass.getESuperTypes().add(this.getXmlEntityForXml());
+ xmlEntityInternalEClass.getESuperTypes().add(this.getXmlEntity());
+ xmlEntityEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIEntity());
+ xmlEmbeddableEClass.getESuperTypes().add(this.getXmlTypeMapping());
+ xmlEmbeddableEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIEmbeddable());
+ xmlAttributeMappingEClass.getESuperTypes().add(theJpaCorePackage.getXmlEObject());
+ xmlAttributeMappingEClass.getESuperTypes().add(theJpaCorePackage.getIAttributeMapping());
+ xmlNullAttributeMappingEClass.getESuperTypes().add(this.getXmlAttributeMapping());
+ xmlBasicEClass.getESuperTypes().add(this.getXmlAttributeMapping());
+ xmlBasicEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIBasic());
+ xmlBasicEClass.getESuperTypes().add(this.getIXmlColumnMapping());
+ xmlIdEClass.getESuperTypes().add(this.getXmlAttributeMapping());
+ xmlIdEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIId());
+ xmlIdEClass.getESuperTypes().add(this.getIXmlColumnMapping());
+ xmlTransientEClass.getESuperTypes().add(this.getXmlAttributeMapping());
+ xmlTransientEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getITransient());
+ xmlEmbeddedEClass.getESuperTypes().add(this.getXmlAttributeMapping());
+ xmlEmbeddedEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIEmbedded());
+ xmlEmbeddedIdEClass.getESuperTypes().add(this.getXmlAttributeMapping());
+ xmlEmbeddedIdEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIEmbeddedId());
+ xmlVersionEClass.getESuperTypes().add(this.getXmlAttributeMapping());
+ xmlVersionEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIVersion());
+ xmlVersionEClass.getESuperTypes().add(this.getIXmlColumnMapping());
+ xmlMultiRelationshipMappingInternalEClass.getESuperTypes().add(this.getXmlRelationshipMapping());
+ xmlMultiRelationshipMappingInternalEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIMultiRelationshipMapping());
+ xmlMultiRelationshipMappingInternalEClass.getESuperTypes().add(this.getXmlMultiRelationshipMappingForXml());
+ xmlMultiRelationshipMappingInternalEClass.getESuperTypes().add(this.getXmlMultiRelationshipMapping());
+ xmlMultiRelationshipMappingEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIMultiRelationshipMapping());
+ xmlOneToManyEClass.getESuperTypes().add(this.getXmlMultiRelationshipMappingInternal());
+ xmlOneToManyEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIOneToMany());
+ xmlManyToManyEClass.getESuperTypes().add(this.getXmlMultiRelationshipMappingInternal());
+ xmlManyToManyEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIManyToMany());
+ xmlPersistentAttributeEClass.getESuperTypes().add(theJpaCorePackage.getXmlEObject());
+ xmlPersistentAttributeEClass.getESuperTypes().add(theJpaCorePackage.getIPersistentAttribute());
+ persistenceUnitMetadataInternalEClass.getESuperTypes().add(theJpaCorePackage.getXmlEObject());
+ persistenceUnitMetadataInternalEClass.getESuperTypes().add(this.getPersistenceUnitMetadataForXml());
+ persistenceUnitMetadataInternalEClass.getESuperTypes().add(this.getPersistenceUnitMetadata());
+ persistenceUnitMetadataEClass.getESuperTypes().add(theJpaCorePackage.getIXmlEObject());
+ persistenceUnitMetadataForXmlEClass.getESuperTypes().add(theJpaCorePackage.getIXmlEObject());
+ persistenceUnitDefaultsInternalEClass.getESuperTypes().add(theJpaCorePackage.getXmlEObject());
+ persistenceUnitDefaultsInternalEClass.getESuperTypes().add(this.getPersistenceUnitDefaults());
+ persistenceUnitDefaultsInternalEClass.getESuperTypes().add(this.getPersistenceUnitDefaultsForXml());
+ persistenceUnitDefaultsEClass.getESuperTypes().add(theJpaCorePackage.getIXmlEObject());
+ persistenceUnitDefaultsForXmlEClass.getESuperTypes().add(theJpaCorePackage.getIXmlEObject());
+ xmlTableEClass.getESuperTypes().add(this.getAbstractXmlTable());
+ xmlTableEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getITable());
+ abstractXmlNamedColumnEClass.getESuperTypes().add(theJpaCorePackage.getXmlEObject());
+ abstractXmlNamedColumnEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getINamedColumn());
+ abstractXmlColumnEClass.getESuperTypes().add(this.getAbstractXmlNamedColumn());
+ abstractXmlColumnEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIAbstractColumn());
+ xmlColumnEClass.getESuperTypes().add(this.getAbstractXmlColumn());
+ xmlColumnEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIColumn());
+ xmlJoinColumnEClass.getESuperTypes().add(this.getAbstractXmlColumn());
+ xmlJoinColumnEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIJoinColumn());
+ iXmlColumnMappingEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIColumnMapping());
+ xmlManyToOneEClass.getESuperTypes().add(this.getXmlSingleRelationshipMapping());
+ xmlManyToOneEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIManyToOne());
+ xmlOneToOneEClass.getESuperTypes().add(this.getXmlSingleRelationshipMapping());
+ xmlOneToOneEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIOneToOne());
+ xmlSingleRelationshipMappingEClass.getESuperTypes().add(this.getXmlRelationshipMapping());
+ xmlSingleRelationshipMappingEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getISingleRelationshipMapping());
+ xmlRelationshipMappingEClass.getESuperTypes().add(this.getXmlAttributeMapping());
+ xmlRelationshipMappingEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIRelationshipMapping());
+ xmlJoinTableEClass.getESuperTypes().add(this.getAbstractXmlTable());
+ xmlJoinTableEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIJoinTable());
+ abstractXmlTableEClass.getESuperTypes().add(theJpaCorePackage.getXmlEObject());
+ abstractXmlTableEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getITable());
+ xmlOverrideEClass.getESuperTypes().add(theJpaCorePackage.getXmlEObject());
+ xmlOverrideEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIOverride());
+ xmlAttributeOverrideEClass.getESuperTypes().add(this.getXmlOverride());
+ xmlAttributeOverrideEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIAttributeOverride());
+ xmlAttributeOverrideEClass.getESuperTypes().add(this.getIXmlColumnMapping());
+ xmlAssociationOverrideEClass.getESuperTypes().add(this.getXmlOverride());
+ xmlAssociationOverrideEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIAssociationOverride());
+ xmlDiscriminatorColumnEClass.getESuperTypes().add(theJpaCorePackage.getXmlEObject());
+ xmlDiscriminatorColumnEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIDiscriminatorColumn());
+ xmlSecondaryTableEClass.getESuperTypes().add(this.getAbstractXmlTable());
+ xmlSecondaryTableEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getISecondaryTable());
+ xmlPrimaryKeyJoinColumnEClass.getESuperTypes().add(this.getAbstractXmlNamedColumn());
+ xmlPrimaryKeyJoinColumnEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIPrimaryKeyJoinColumn());
+ xmlGeneratedValueEClass.getESuperTypes().add(theJpaCorePackage.getXmlEObject());
+ xmlGeneratedValueEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIGeneratedValue());
+ xmlGeneratorEClass.getESuperTypes().add(theJpaCorePackage.getXmlEObject());
+ xmlGeneratorEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIGenerator());
+ xmlSequenceGeneratorEClass.getESuperTypes().add(this.getXmlGenerator());
+ xmlSequenceGeneratorEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getISequenceGenerator());
+ xmlTableGeneratorEClass.getESuperTypes().add(this.getXmlGenerator());
+ xmlTableGeneratorEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getITableGenerator());
+ xmlOrderByEClass.getESuperTypes().add(theJpaCorePackage.getXmlEObject());
+ xmlOrderByEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIOrderBy());
+ abstractXmlQueryEClass.getESuperTypes().add(theJpaCorePackage.getXmlEObject());
+ abstractXmlQueryEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIQuery());
+ xmlNamedQueryEClass.getESuperTypes().add(this.getAbstractXmlQuery());
+ xmlNamedQueryEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getINamedQuery());
+ xmlNamedNativeQueryEClass.getESuperTypes().add(this.getAbstractXmlQuery());
+ xmlNamedNativeQueryEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getINamedNativeQuery());
+ xmlQueryHintEClass.getESuperTypes().add(theJpaCorePackage.getXmlEObject());
+ xmlQueryHintEClass.getESuperTypes().add(theJpaCoreMappingsPackage.getIQueryHint());
+ // Initialize classes and features; add operations and parameters
+ initEClass(xmlRootContentNodeEClass, XmlRootContentNode.class, "XmlRootContentNode", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getXmlRootContentNode_EntityMappings(), this.getEntityMappingsInternal(), this.getEntityMappingsInternal_Root(), "entityMappings", null, 1, 1, XmlRootContentNode.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEClass(entityMappingsInternalEClass, EntityMappingsInternal.class, "EntityMappingsInternal", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getEntityMappingsInternal_Root(), this.getXmlRootContentNode(), this.getXmlRootContentNode_EntityMappings(), "root", "", 1, 1, EntityMappingsInternal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getEntityMappingsInternal_Version(), ecorePackage.getEString(), "version", null, 0, 1, EntityMappingsInternal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getEntityMappingsInternal_Description(), ecorePackage.getEString(), "description", null, 0, 1, EntityMappingsInternal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getEntityMappingsInternal_PersistenceUnitMetadataInternal(), this.getPersistenceUnitMetadataInternal(), null, "persistenceUnitMetadataInternal", "", 1, 1, EntityMappingsInternal.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getEntityMappingsInternal_PackageInternal(), ecorePackage.getEString(), "packageInternal", null, 0, 1, EntityMappingsInternal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getEntityMappingsInternal_DefaultSchema(), ecorePackage.getEString(), "defaultSchema", null, 0, 1, EntityMappingsInternal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getEntityMappingsInternal_SpecifiedSchema(), ecorePackage.getEString(), "specifiedSchema", null, 0, 1, EntityMappingsInternal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getEntityMappingsInternal_Schema(), ecorePackage.getEString(), "schema", null, 0, 1, EntityMappingsInternal.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getEntityMappingsInternal_DefaultCatalog(), ecorePackage.getEString(), "defaultCatalog", null, 0, 1, EntityMappingsInternal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getEntityMappingsInternal_SpecifiedCatalog(), ecorePackage.getEString(), "specifiedCatalog", null, 0, 1, EntityMappingsInternal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getEntityMappingsInternal_Catalog(), ecorePackage.getEString(), "catalog", null, 0, 1, EntityMappingsInternal.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getEntityMappingsInternal_DefaultAccess(), theJpaCorePackage.getAccessType(), "defaultAccess", null, 0, 1, EntityMappingsInternal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getEntityMappingsInternal_SpecifiedAccess(), theJpaCorePackage.getAccessType(), "specifiedAccess", null, 0, 1, EntityMappingsInternal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getEntityMappingsInternal_Access(), theJpaCorePackage.getAccessType(), "access", null, 0, 1, EntityMappingsInternal.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getEntityMappingsInternal_TypeMappings(), this.getXmlTypeMapping(), null, "typeMappings", "", 0, -1, EntityMappingsInternal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getEntityMappingsInternal_PersistentTypes(), this.getXmlPersistentType(), null, "persistentTypes", null, 0, -1, EntityMappingsInternal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getEntityMappingsInternal_SequenceGenerators(), this.getXmlSequenceGenerator(), null, "sequenceGenerators", null, 0, -1, EntityMappingsInternal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getEntityMappingsInternal_TableGenerators(), this.getXmlTableGenerator(), null, "tableGenerators", null, 0, -1, EntityMappingsInternal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getEntityMappingsInternal_NamedQueries(), this.getXmlNamedQuery(), null, "namedQueries", null, 0, -1, EntityMappingsInternal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getEntityMappingsInternal_NamedNativeQueries(), this.getXmlNamedNativeQuery(), null, "namedNativeQueries", null, 0, -1, EntityMappingsInternal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(entityMappingsEClass, EntityMappings.class, "EntityMappings", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getEntityMappings_PersistenceUnitMetadata(), this.getPersistenceUnitMetadata(), null, "persistenceUnitMetadata", "", 0, 1, EntityMappings.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getEntityMappings_Package(), ecorePackage.getEString(), "package", null, 0, 1, EntityMappings.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(entityMappingsForXmlEClass, EntityMappingsForXml.class, "EntityMappingsForXml", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getEntityMappingsForXml_PersistenceUnitMetadataForXml(), this.getPersistenceUnitMetadataForXml(), null, "persistenceUnitMetadataForXml", null, 0, 1, EntityMappingsForXml.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getEntityMappingsForXml_PackageForXml(), ecorePackage.getEString(), "packageForXml", null, 0, 1, EntityMappingsForXml.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(xmlTypeMappingEClass, XmlTypeMapping.class, "XmlTypeMapping", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXmlTypeMapping_DefaultAccess(), theJpaCorePackage.getAccessType(), "defaultAccess", null, 0, 1, XmlTypeMapping.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXmlTypeMapping_SpecifiedAccess(), theJpaCorePackage.getAccessType(), "specifiedAccess", null, 0, 1, XmlTypeMapping.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXmlTypeMapping_Access(), theJpaCorePackage.getAccessType(), "access", null, 0, 1, XmlTypeMapping.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXmlTypeMapping_MetadataComplete(), theJpaCoreMappingsPackage.getDefaultFalseBoolean(), "metadataComplete", null, 0, 1, XmlTypeMapping.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXmlTypeMapping_PersistentType(), this.getXmlPersistentType(), null, "persistentType", null, 1, 1, XmlTypeMapping.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(xmlPersistentTypeEClass, XmlPersistentType.class, "XmlPersistentType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXmlPersistentType_Class(), theEcorePackage.getEString(), "class", null, 0, 1, XmlPersistentType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXmlPersistentType_AttributeMappings(), this.getXmlAttributeMapping(), null, "attributeMappings", null, 0, -1, XmlPersistentType.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXmlPersistentType_SpecifiedAttributeMappings(), this.getXmlAttributeMapping(), null, "specifiedAttributeMappings", null, 0, -1, XmlPersistentType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXmlPersistentType_VirtualAttributeMappings(), this.getXmlAttributeMapping(), null, "virtualAttributeMappings", null, 0, -1, XmlPersistentType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXmlPersistentType_PersistentAttributes(), this.getXmlPersistentAttribute(), null, "persistentAttributes", null, 0, -1, XmlPersistentType.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXmlPersistentType_SpecifiedPersistentAttributes(), this.getXmlPersistentAttribute(), null, "specifiedPersistentAttributes", null, 0, -1, XmlPersistentType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXmlPersistentType_VirtualPersistentAttributes(), this.getXmlPersistentAttribute(), null, "virtualPersistentAttributes", null, 0, -1, XmlPersistentType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(xmlMappedSuperclassEClass, XmlMappedSuperclass.class, "XmlMappedSuperclass", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(xmlEntityInternalEClass, XmlEntityInternal.class, "XmlEntityInternal", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(xmlEntityForXmlEClass, XmlEntityForXml.class, "XmlEntityForXml", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getXmlEntityForXml_TableForXml(), this.getXmlTable(), null, "tableForXml", null, 0, 1, XmlEntityForXml.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXmlEntityForXml_DiscriminatorColumnForXml(), this.getXmlDiscriminatorColumn(), null, "discriminatorColumnForXml", null, 0, 1, XmlEntityForXml.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(xmlEntityEClass, XmlEntity.class, "XmlEntity", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getXmlEntity_SecondaryTables(), theJpaCoreMappingsPackage.getISecondaryTable(), null, "secondaryTables", null, 0, -1, XmlEntity.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXmlEntity_SpecifiedSecondaryTables(), theJpaCoreMappingsPackage.getISecondaryTable(), null, "specifiedSecondaryTables", null, 0, -1, XmlEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXmlEntity_DefaultSecondaryTables(), theJpaCoreMappingsPackage.getISecondaryTable(), null, "defaultSecondaryTables", null, 0, -1, XmlEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(xmlEmbeddableEClass, XmlEmbeddable.class, "XmlEmbeddable", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(xmlAttributeMappingEClass, XmlAttributeMapping.class, "XmlAttributeMapping", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getXmlAttributeMapping_PersistentAttribute(), this.getXmlPersistentAttribute(), null, "persistentAttribute", null, 1, 1, XmlAttributeMapping.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(xmlNullAttributeMappingEClass, XmlNullAttributeMapping.class, "XmlNullAttributeMapping", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(xmlBasicEClass, XmlBasic.class, "XmlBasic", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(xmlIdEClass, XmlId.class, "XmlId", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(xmlTransientEClass, XmlTransient.class, "XmlTransient", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(xmlEmbeddedEClass, XmlEmbedded.class, "XmlEmbedded", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(xmlEmbeddedIdEClass, XmlEmbeddedId.class, "XmlEmbeddedId", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(xmlVersionEClass, XmlVersion.class, "XmlVersion", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(xmlMultiRelationshipMappingInternalEClass, XmlMultiRelationshipMappingInternal.class, "XmlMultiRelationshipMappingInternal", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(xmlMultiRelationshipMappingForXmlEClass, XmlMultiRelationshipMappingForXml.class, "XmlMultiRelationshipMappingForXml", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getXmlMultiRelationshipMappingForXml_JoinTableForXml(), this.getXmlJoinTable(), null, "joinTableForXml", null, 0, 1, XmlMultiRelationshipMappingForXml.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getXmlMultiRelationshipMappingForXml_OrderByForXml(), this.getXmlOrderBy(), null, "orderByForXml", null, 0, 1, XmlMultiRelationshipMappingForXml.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(xmlMultiRelationshipMappingEClass, XmlMultiRelationshipMapping.class, "XmlMultiRelationshipMapping", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(xmlOneToManyEClass, XmlOneToMany.class, "XmlOneToMany", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(xmlManyToManyEClass, XmlManyToMany.class, "XmlManyToMany", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(xmlPersistentAttributeEClass, XmlPersistentAttribute.class, "XmlPersistentAttribute", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXmlPersistentAttribute_Name(), ecorePackage.getEString(), "name", null, 0, 1, XmlPersistentAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(persistenceUnitMetadataInternalEClass, PersistenceUnitMetadataInternal.class, "PersistenceUnitMetadataInternal", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getPersistenceUnitMetadataInternal_XmlMappingMetadataCompleteInternal(), ecorePackage.getEBoolean(), "xmlMappingMetadataCompleteInternal", null, 0, 1, PersistenceUnitMetadataInternal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getPersistenceUnitMetadataInternal_PersistenceUnitDefaultsInternal(), this.getPersistenceUnitDefaultsInternal(), null, "persistenceUnitDefaultsInternal", "", 1, 1, PersistenceUnitMetadataInternal.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(persistenceUnitMetadataEClass, PersistenceUnitMetadata.class, "PersistenceUnitMetadata", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getPersistenceUnitMetadata_XmlMappingMetadataComplete(), ecorePackage.getEBoolean(), "xmlMappingMetadataComplete", null, 0, 1, PersistenceUnitMetadata.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getPersistenceUnitMetadata_PersistenceUnitDefaults(), this.getPersistenceUnitDefaults(), null, "persistenceUnitDefaults", "", 0, 1, PersistenceUnitMetadata.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(persistenceUnitMetadataForXmlEClass, PersistenceUnitMetadataForXml.class, "PersistenceUnitMetadataForXml", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getPersistenceUnitMetadataForXml_XmlMappingMetadataCompleteForXml(), ecorePackage.getEBoolean(), "xmlMappingMetadataCompleteForXml", null, 0, 1, PersistenceUnitMetadataForXml.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getPersistenceUnitMetadataForXml_PersistenceUnitDefaultsForXml(), this.getPersistenceUnitDefaultsForXml(), null, "persistenceUnitDefaultsForXml", "", 0, 1, PersistenceUnitMetadataForXml.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(persistenceUnitDefaultsInternalEClass, PersistenceUnitDefaultsInternal.class, "PersistenceUnitDefaultsInternal", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getPersistenceUnitDefaultsInternal_SchemaInternal(), ecorePackage.getEString(), "schemaInternal", null, 0, 1, PersistenceUnitDefaultsInternal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getPersistenceUnitDefaultsInternal_CatalogInternal(), ecorePackage.getEString(), "catalogInternal", null, 0, 1, PersistenceUnitDefaultsInternal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getPersistenceUnitDefaultsInternal_AccessInternal(), theJpaCorePackage.getAccessType(), "accessInternal", "", 0, 1, PersistenceUnitDefaultsInternal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getPersistenceUnitDefaultsInternal_CascadePersistInternal(), ecorePackage.getEBoolean(), "cascadePersistInternal", null, 0, 1, PersistenceUnitDefaultsInternal.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(persistenceUnitDefaultsEClass, PersistenceUnitDefaults.class, "PersistenceUnitDefaults", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getPersistenceUnitDefaults_Schema(), ecorePackage.getEString(), "schema", null, 0, 1, PersistenceUnitDefaults.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getPersistenceUnitDefaults_Catalog(), ecorePackage.getEString(), "catalog", null, 0, 1, PersistenceUnitDefaults.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getPersistenceUnitDefaults_Access(), theJpaCorePackage.getAccessType(), "access", "", 0, 1, PersistenceUnitDefaults.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getPersistenceUnitDefaults_CascadePersist(), ecorePackage.getEBoolean(), "cascadePersist", null, 0, 1, PersistenceUnitDefaults.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(persistenceUnitDefaultsForXmlEClass, PersistenceUnitDefaultsForXml.class, "PersistenceUnitDefaultsForXml", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getPersistenceUnitDefaultsForXml_SchemaForXml(), ecorePackage.getEString(), "schemaForXml", null, 0, 1, PersistenceUnitDefaultsForXml.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getPersistenceUnitDefaultsForXml_CatalogForXml(), ecorePackage.getEString(), "catalogForXml", null, 0, 1, PersistenceUnitDefaultsForXml.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getPersistenceUnitDefaultsForXml_AccessForXml(), theJpaCorePackage.getAccessType(), "accessForXml", "", 0, 1, PersistenceUnitDefaultsForXml.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getPersistenceUnitDefaultsForXml_CascadePersistForXml(), ecorePackage.getEBoolean(), "cascadePersistForXml", null, 0, 1, PersistenceUnitDefaultsForXml.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(xmlTableEClass, XmlTable.class, "XmlTable", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(abstractXmlNamedColumnEClass, AbstractXmlNamedColumn.class, "AbstractXmlNamedColumn", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getAbstractXmlNamedColumn_SpecifiedNameForXml(), ecorePackage.getEString(), "specifiedNameForXml", null, 0, 1, AbstractXmlNamedColumn.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getAbstractXmlNamedColumn_ColumnDefinitionForXml(), ecorePackage.getEString(), "columnDefinitionForXml", null, 0, 1, AbstractXmlNamedColumn.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(abstractXmlColumnEClass, AbstractXmlColumn.class, "AbstractXmlColumn", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getAbstractXmlColumn_UniqueForXml(), theJpaCoreMappingsPackage.getDefaultFalseBoolean(), "uniqueForXml", null, 0, 1, AbstractXmlColumn.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getAbstractXmlColumn_NullableForXml(), theJpaCoreMappingsPackage.getDefaultTrueBoolean(), "nullableForXml", null, 0, 1, AbstractXmlColumn.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getAbstractXmlColumn_InsertableForXml(), theJpaCoreMappingsPackage.getDefaultTrueBoolean(), "insertableForXml", null, 0, 1, AbstractXmlColumn.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getAbstractXmlColumn_UpdatableForXml(), theJpaCoreMappingsPackage.getDefaultTrueBoolean(), "updatableForXml", null, 0, 1, AbstractXmlColumn.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getAbstractXmlColumn_SpecifiedTableForXml(), ecorePackage.getEString(), "specifiedTableForXml", null, 0, 1, AbstractXmlColumn.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(xmlColumnEClass, XmlColumn.class, "XmlColumn", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXmlColumn_LengthForXml(), ecorePackage.getEInt(), "lengthForXml", "255", 0, 1, XmlColumn.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXmlColumn_PrecisionForXml(), ecorePackage.getEInt(), "precisionForXml", null, 0, 1, XmlColumn.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXmlColumn_ScaleForXml(), ecorePackage.getEInt(), "scaleForXml", null, 0, 1, XmlColumn.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(xmlJoinColumnEClass, XmlJoinColumn.class, "XmlJoinColumn", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXmlJoinColumn_SpecifiedReferencedColumnNameForXml(), ecorePackage.getEString(), "specifiedReferencedColumnNameForXml", null, 0, 1, XmlJoinColumn.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(iXmlColumnMappingEClass, IXmlColumnMapping.class, "IXmlColumnMapping", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getIXmlColumnMapping_ColumnForXml(), this.getXmlColumn(), null, "columnForXml", null, 0, 1, IXmlColumnMapping.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ addEOperation(iXmlColumnMappingEClass, null, "makeColumnForXmlNonNull");
+ addEOperation(iXmlColumnMappingEClass, null, "makeColumnForXmlNull");
+ initEClass(xmlManyToOneEClass, XmlManyToOne.class, "XmlManyToOne", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(xmlOneToOneEClass, XmlOneToOne.class, "XmlOneToOne", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(xmlSingleRelationshipMappingEClass, XmlSingleRelationshipMapping.class, "XmlSingleRelationshipMapping", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(xmlRelationshipMappingEClass, XmlRelationshipMapping.class, "XmlRelationshipMapping", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(xmlJoinTableEClass, XmlJoinTable.class, "XmlJoinTable", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(abstractXmlTableEClass, AbstractXmlTable.class, "AbstractXmlTable", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getAbstractXmlTable_SpecifiedNameForXml(), ecorePackage.getEString(), "specifiedNameForXml", null, 0, 1, AbstractXmlTable.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getAbstractXmlTable_SpecifiedCatalogForXml(), ecorePackage.getEString(), "specifiedCatalogForXml", null, 0, 1, AbstractXmlTable.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getAbstractXmlTable_SpecifiedSchemaForXml(), ecorePackage.getEString(), "specifiedSchemaForXml", null, 0, 1, AbstractXmlTable.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(xmlOverrideEClass, XmlOverride.class, "XmlOverride", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(xmlAttributeOverrideEClass, XmlAttributeOverride.class, "XmlAttributeOverride", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(xmlAssociationOverrideEClass, XmlAssociationOverride.class, "XmlAssociationOverride", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(xmlDiscriminatorColumnEClass, XmlDiscriminatorColumn.class, "XmlDiscriminatorColumn", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXmlDiscriminatorColumn_SpecifiedNameForXml(), ecorePackage.getEString(), "specifiedNameForXml", null, 0, 1, XmlDiscriminatorColumn.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXmlDiscriminatorColumn_DiscriminatorTypeForXml(), theJpaCoreMappingsPackage.getDiscriminatorType(), "discriminatorTypeForXml", null, 0, 1, XmlDiscriminatorColumn.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXmlDiscriminatorColumn_ColumnDefinitionForXml(), ecorePackage.getEString(), "columnDefinitionForXml", null, 0, 1, XmlDiscriminatorColumn.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getXmlDiscriminatorColumn_SpecifiedLengthForXml(), theEcorePackage.getEInt(), "specifiedLengthForXml", null, 0, 1, XmlDiscriminatorColumn.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(xmlSecondaryTableEClass, XmlSecondaryTable.class, "XmlSecondaryTable", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(xmlPrimaryKeyJoinColumnEClass, XmlPrimaryKeyJoinColumn.class, "XmlPrimaryKeyJoinColumn", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getXmlPrimaryKeyJoinColumn_SpecifiedReferencedColumnNameForXml(), ecorePackage.getEString(), "specifiedReferencedColumnNameForXml", null, 0, 1, XmlPrimaryKeyJoinColumn.class, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(xmlGeneratedValueEClass, XmlGeneratedValue.class, "XmlGeneratedValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(xmlGeneratorEClass, XmlGenerator.class, "XmlGenerator", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(xmlSequenceGeneratorEClass, XmlSequenceGenerator.class, "XmlSequenceGenerator", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(xmlTableGeneratorEClass, XmlTableGenerator.class, "XmlTableGenerator", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(xmlOrderByEClass, XmlOrderBy.class, "XmlOrderBy", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(abstractXmlQueryEClass, AbstractXmlQuery.class, "AbstractXmlQuery", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(xmlNamedQueryEClass, XmlNamedQuery.class, "XmlNamedQuery", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(xmlNamedNativeQueryEClass, XmlNamedNativeQuery.class, "XmlNamedNativeQuery", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(xmlQueryHintEClass, XmlQueryHint.class, "XmlQueryHint", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ // Create resource
+ createResource(eNS_URI);
+ }
+ /**
+ * <!-- 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
+ */
+ public interface Literals
+ {
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlRootContentNode <em>Xml Root Content Node</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlRootContentNode
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlRootContentNode()
+ * @generated
+ */
+ public static final EClass XML_ROOT_CONTENT_NODE = eINSTANCE.getXmlRootContentNode();
+
+ /**
+ * The meta object literal for the '<em><b>Entity Mappings</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference XML_ROOT_CONTENT_NODE__ENTITY_MAPPINGS = eINSTANCE.getXmlRootContentNode_EntityMappings();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal <em>Entity Mappings Internal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappingsInternal()
+ * @generated
+ */
+ public static final EClass ENTITY_MAPPINGS_INTERNAL = eINSTANCE.getEntityMappingsInternal();
+
+ /**
+ * The meta object literal for the '<em><b>Root</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference ENTITY_MAPPINGS_INTERNAL__ROOT = eINSTANCE.getEntityMappingsInternal_Root();
+
+ /**
+ * The meta object literal for the '<em><b>Version</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ENTITY_MAPPINGS_INTERNAL__VERSION = eINSTANCE.getEntityMappingsInternal_Version();
+
+ /**
+ * The meta object literal for the '<em><b>Description</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ENTITY_MAPPINGS_INTERNAL__DESCRIPTION = eINSTANCE.getEntityMappingsInternal_Description();
+
+ /**
+ * The meta object literal for the '<em><b>Persistence Unit Metadata Internal</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference ENTITY_MAPPINGS_INTERNAL__PERSISTENCE_UNIT_METADATA_INTERNAL = eINSTANCE.getEntityMappingsInternal_PersistenceUnitMetadataInternal();
+
+ /**
+ * The meta object literal for the '<em><b>Package Internal</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ENTITY_MAPPINGS_INTERNAL__PACKAGE_INTERNAL = eINSTANCE.getEntityMappingsInternal_PackageInternal();
+
+ /**
+ * The meta object literal for the '<em><b>Default Schema</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ENTITY_MAPPINGS_INTERNAL__DEFAULT_SCHEMA = eINSTANCE.getEntityMappingsInternal_DefaultSchema();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Schema</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ENTITY_MAPPINGS_INTERNAL__SPECIFIED_SCHEMA = eINSTANCE.getEntityMappingsInternal_SpecifiedSchema();
+
+ /**
+ * The meta object literal for the '<em><b>Schema</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ENTITY_MAPPINGS_INTERNAL__SCHEMA = eINSTANCE.getEntityMappingsInternal_Schema();
+
+ /**
+ * The meta object literal for the '<em><b>Default Catalog</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ENTITY_MAPPINGS_INTERNAL__DEFAULT_CATALOG = eINSTANCE.getEntityMappingsInternal_DefaultCatalog();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Catalog</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ENTITY_MAPPINGS_INTERNAL__SPECIFIED_CATALOG = eINSTANCE.getEntityMappingsInternal_SpecifiedCatalog();
+
+ /**
+ * The meta object literal for the '<em><b>Catalog</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ENTITY_MAPPINGS_INTERNAL__CATALOG = eINSTANCE.getEntityMappingsInternal_Catalog();
+
+ /**
+ * The meta object literal for the '<em><b>Default Access</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ENTITY_MAPPINGS_INTERNAL__DEFAULT_ACCESS = eINSTANCE.getEntityMappingsInternal_DefaultAccess();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Access</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ENTITY_MAPPINGS_INTERNAL__SPECIFIED_ACCESS = eINSTANCE.getEntityMappingsInternal_SpecifiedAccess();
+
+ /**
+ * The meta object literal for the '<em><b>Access</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ENTITY_MAPPINGS_INTERNAL__ACCESS = eINSTANCE.getEntityMappingsInternal_Access();
+
+ /**
+ * The meta object literal for the '<em><b>Type Mappings</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference ENTITY_MAPPINGS_INTERNAL__TYPE_MAPPINGS = eINSTANCE.getEntityMappingsInternal_TypeMappings();
+
+ /**
+ * The meta object literal for the '<em><b>Persistent Types</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference ENTITY_MAPPINGS_INTERNAL__PERSISTENT_TYPES = eINSTANCE.getEntityMappingsInternal_PersistentTypes();
+
+ /**
+ * The meta object literal for the '<em><b>Table Generators</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference ENTITY_MAPPINGS_INTERNAL__TABLE_GENERATORS = eINSTANCE.getEntityMappingsInternal_TableGenerators();
+
+ /**
+ * The meta object literal for the '<em><b>Named Queries</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference ENTITY_MAPPINGS_INTERNAL__NAMED_QUERIES = eINSTANCE.getEntityMappingsInternal_NamedQueries();
+
+ /**
+ * The meta object literal for the '<em><b>Named Native Queries</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference ENTITY_MAPPINGS_INTERNAL__NAMED_NATIVE_QUERIES = eINSTANCE.getEntityMappingsInternal_NamedNativeQueries();
+
+ /**
+ * The meta object literal for the '<em><b>Sequence Generators</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference ENTITY_MAPPINGS_INTERNAL__SEQUENCE_GENERATORS = eINSTANCE.getEntityMappingsInternal_SequenceGenerators();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappings <em>Entity Mappings</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.EntityMappings
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappings()
+ * @generated
+ */
+ public static final EClass ENTITY_MAPPINGS = eINSTANCE.getEntityMappings();
+
+ /**
+ * The meta object literal for the '<em><b>Persistence Unit Metadata</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference ENTITY_MAPPINGS__PERSISTENCE_UNIT_METADATA = eINSTANCE.getEntityMappings_PersistenceUnitMetadata();
+
+ /**
+ * The meta object literal for the '<em><b>Package</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ENTITY_MAPPINGS__PACKAGE = eINSTANCE.getEntityMappings_Package();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsForXml <em>Entity Mappings For Xml</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.EntityMappingsForXml
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getEntityMappingsForXml()
+ * @generated
+ */
+ public static final EClass ENTITY_MAPPINGS_FOR_XML = eINSTANCE.getEntityMappingsForXml();
+
+ /**
+ * The meta object literal for the '<em><b>Persistence Unit Metadata For Xml</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference ENTITY_MAPPINGS_FOR_XML__PERSISTENCE_UNIT_METADATA_FOR_XML = eINSTANCE.getEntityMappingsForXml_PersistenceUnitMetadataForXml();
+
+ /**
+ * The meta object literal for the '<em><b>Package For Xml</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ENTITY_MAPPINGS_FOR_XML__PACKAGE_FOR_XML = eINSTANCE.getEntityMappingsForXml_PackageForXml();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping <em>Xml Type Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlTypeMapping()
+ * @generated
+ */
+ public static final EClass XML_TYPE_MAPPING = eINSTANCE.getXmlTypeMapping();
+
+ /**
+ * The meta object literal for the '<em><b>Default Access</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute XML_TYPE_MAPPING__DEFAULT_ACCESS = eINSTANCE.getXmlTypeMapping_DefaultAccess();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Access</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute XML_TYPE_MAPPING__SPECIFIED_ACCESS = eINSTANCE.getXmlTypeMapping_SpecifiedAccess();
+
+ /**
+ * The meta object literal for the '<em><b>Access</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute XML_TYPE_MAPPING__ACCESS = eINSTANCE.getXmlTypeMapping_Access();
+
+ /**
+ * The meta object literal for the '<em><b>Metadata Complete</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute XML_TYPE_MAPPING__METADATA_COMPLETE = eINSTANCE.getXmlTypeMapping_MetadataComplete();
+
+ /**
+ * The meta object literal for the '<em><b>Persistent Type</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference XML_TYPE_MAPPING__PERSISTENT_TYPE = eINSTANCE.getXmlTypeMapping_PersistentType();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentType <em>Xml Persistent Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlPersistentType
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlPersistentType()
+ * @generated
+ */
+ public static final EClass XML_PERSISTENT_TYPE = eINSTANCE.getXmlPersistentType();
+
+ /**
+ * The meta object literal for the '<em><b>Class</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute XML_PERSISTENT_TYPE__CLASS = eINSTANCE.getXmlPersistentType_Class();
+
+ /**
+ * The meta object literal for the '<em><b>Attribute Mappings</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference XML_PERSISTENT_TYPE__ATTRIBUTE_MAPPINGS = eINSTANCE.getXmlPersistentType_AttributeMappings();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Attribute Mappings</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference XML_PERSISTENT_TYPE__SPECIFIED_ATTRIBUTE_MAPPINGS = eINSTANCE.getXmlPersistentType_SpecifiedAttributeMappings();
+
+ /**
+ * The meta object literal for the '<em><b>Virtual Attribute Mappings</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference XML_PERSISTENT_TYPE__VIRTUAL_ATTRIBUTE_MAPPINGS = eINSTANCE.getXmlPersistentType_VirtualAttributeMappings();
+
+ /**
+ * The meta object literal for the '<em><b>Persistent Attributes</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference XML_PERSISTENT_TYPE__PERSISTENT_ATTRIBUTES = eINSTANCE.getXmlPersistentType_PersistentAttributes();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Persistent Attributes</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference XML_PERSISTENT_TYPE__SPECIFIED_PERSISTENT_ATTRIBUTES = eINSTANCE.getXmlPersistentType_SpecifiedPersistentAttributes();
+
+ /**
+ * The meta object literal for the '<em><b>Virtual Persistent Attributes</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference XML_PERSISTENT_TYPE__VIRTUAL_PERSISTENT_ATTRIBUTES = eINSTANCE.getXmlPersistentType_VirtualPersistentAttributes();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlEntity <em>Xml Entity</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlEntity
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlEntity()
+ * @generated
+ */
+ public static final EClass XML_ENTITY = eINSTANCE.getXmlEntity();
+
+ /**
+ * The meta object literal for the '<em><b>Secondary Tables</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference XML_ENTITY__SECONDARY_TABLES = eINSTANCE.getXmlEntity_SecondaryTables();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Secondary Tables</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference XML_ENTITY__SPECIFIED_SECONDARY_TABLES = eINSTANCE.getXmlEntity_SpecifiedSecondaryTables();
+
+ /**
+ * The meta object literal for the '<em><b>Default Secondary Tables</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference XML_ENTITY__DEFAULT_SECONDARY_TABLES = eINSTANCE.getXmlEntity_DefaultSecondaryTables();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlEmbeddable <em>Xml Embeddable</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlEmbeddable
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlEmbeddable()
+ * @generated
+ */
+ public static final EClass XML_EMBEDDABLE = eINSTANCE.getXmlEmbeddable();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlAttributeMapping <em>Xml Attribute Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlAttributeMapping
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlAttributeMapping()
+ * @generated
+ */
+ public static final EClass XML_ATTRIBUTE_MAPPING = eINSTANCE.getXmlAttributeMapping();
+
+ /**
+ * The meta object literal for the '<em><b>Persistent Attribute</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference XML_ATTRIBUTE_MAPPING__PERSISTENT_ATTRIBUTE = eINSTANCE.getXmlAttributeMapping_PersistentAttribute();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlNullAttributeMapping <em>Xml Null Attribute Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlNullAttributeMapping
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlNullAttributeMapping()
+ * @generated
+ */
+ public static final EClass XML_NULL_ATTRIBUTE_MAPPING = eINSTANCE.getXmlNullAttributeMapping();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentAttribute <em>Xml Persistent Attribute</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlPersistentAttribute
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlPersistentAttribute()
+ * @generated
+ */
+ public static final EClass XML_PERSISTENT_ATTRIBUTE = eINSTANCE.getXmlPersistentAttribute();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute XML_PERSISTENT_ATTRIBUTE__NAME = eINSTANCE.getXmlPersistentAttribute_Name();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlBasic <em>Xml Basic</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlBasic
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlBasic()
+ * @generated
+ */
+ public static final EClass XML_BASIC = eINSTANCE.getXmlBasic();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlId <em>Xml Id</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlId
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlId()
+ * @generated
+ */
+ public static final EClass XML_ID = eINSTANCE.getXmlId();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlTransient <em>Xml Transient</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlTransient
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlTransient()
+ * @generated
+ */
+ public static final EClass XML_TRANSIENT = eINSTANCE.getXmlTransient();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlEmbedded <em>Xml Embedded</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlEmbedded
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlEmbedded()
+ * @generated
+ */
+ public static final EClass XML_EMBEDDED = eINSTANCE.getXmlEmbedded();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlEmbeddedId <em>Xml Embedded Id</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlEmbeddedId
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlEmbeddedId()
+ * @generated
+ */
+ public static final EClass XML_EMBEDDED_ID = eINSTANCE.getXmlEmbeddedId();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlVersion <em>Xml Version</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlVersion
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlVersion()
+ * @generated
+ */
+ public static final EClass XML_VERSION = eINSTANCE.getXmlVersion();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMappingInternal <em>Xml Multi Relationship Mapping Internal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMappingInternal
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlMultiRelationshipMappingInternal()
+ * @generated
+ */
+ public static final EClass XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL = eINSTANCE.getXmlMultiRelationshipMappingInternal();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMappingForXml <em>Xml Multi Relationship Mapping For Xml</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMappingForXml
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlMultiRelationshipMappingForXml()
+ * @generated
+ */
+ public static final EClass XML_MULTI_RELATIONSHIP_MAPPING_FOR_XML = eINSTANCE.getXmlMultiRelationshipMappingForXml();
+
+ /**
+ * The meta object literal for the '<em><b>Join Table For Xml</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference XML_MULTI_RELATIONSHIP_MAPPING_FOR_XML__JOIN_TABLE_FOR_XML = eINSTANCE.getXmlMultiRelationshipMappingForXml_JoinTableForXml();
+
+ /**
+ * The meta object literal for the '<em><b>Order By For Xml</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference XML_MULTI_RELATIONSHIP_MAPPING_FOR_XML__ORDER_BY_FOR_XML = eINSTANCE.getXmlMultiRelationshipMappingForXml_OrderByForXml();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMapping <em>Xml Multi Relationship Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMapping
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlMultiRelationshipMapping()
+ * @generated
+ */
+ public static final EClass XML_MULTI_RELATIONSHIP_MAPPING = eINSTANCE.getXmlMultiRelationshipMapping();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlOneToMany <em>Xml One To Many</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlOneToMany
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlOneToMany()
+ * @generated
+ */
+ public static final EClass XML_ONE_TO_MANY = eINSTANCE.getXmlOneToMany();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlManyToMany <em>Xml Many To Many</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlManyToMany
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlManyToMany()
+ * @generated
+ */
+ public static final EClass XML_MANY_TO_MANY = eINSTANCE.getXmlManyToMany();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataInternal <em>Persistence Unit Metadata Internal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataInternal
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitMetadataInternal()
+ * @generated
+ */
+ public static final EClass PERSISTENCE_UNIT_METADATA_INTERNAL = eINSTANCE.getPersistenceUnitMetadataInternal();
+
+ /**
+ * The meta object literal for the '<em><b>Xml Mapping Metadata Complete Internal</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute PERSISTENCE_UNIT_METADATA_INTERNAL__XML_MAPPING_METADATA_COMPLETE_INTERNAL = eINSTANCE.getPersistenceUnitMetadataInternal_XmlMappingMetadataCompleteInternal();
+
+ /**
+ * The meta object literal for the '<em><b>Persistence Unit Defaults Internal</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference PERSISTENCE_UNIT_METADATA_INTERNAL__PERSISTENCE_UNIT_DEFAULTS_INTERNAL = eINSTANCE.getPersistenceUnitMetadataInternal_PersistenceUnitDefaultsInternal();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadata <em>Persistence Unit Metadata</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadata
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitMetadata()
+ * @generated
+ */
+ public static final EClass PERSISTENCE_UNIT_METADATA = eINSTANCE.getPersistenceUnitMetadata();
+
+ /**
+ * The meta object literal for the '<em><b>Xml Mapping Metadata Complete</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute PERSISTENCE_UNIT_METADATA__XML_MAPPING_METADATA_COMPLETE = eINSTANCE.getPersistenceUnitMetadata_XmlMappingMetadataComplete();
+
+ /**
+ * The meta object literal for the '<em><b>Persistence Unit Defaults</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference PERSISTENCE_UNIT_METADATA__PERSISTENCE_UNIT_DEFAULTS = eINSTANCE.getPersistenceUnitMetadata_PersistenceUnitDefaults();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataForXml <em>Persistence Unit Metadata For Xml</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataForXml
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitMetadataForXml()
+ * @generated
+ */
+ public static final EClass PERSISTENCE_UNIT_METADATA_FOR_XML = eINSTANCE.getPersistenceUnitMetadataForXml();
+
+ /**
+ * The meta object literal for the '<em><b>Xml Mapping Metadata Complete For Xml</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute PERSISTENCE_UNIT_METADATA_FOR_XML__XML_MAPPING_METADATA_COMPLETE_FOR_XML = eINSTANCE.getPersistenceUnitMetadataForXml_XmlMappingMetadataCompleteForXml();
+
+ /**
+ * The meta object literal for the '<em><b>Persistence Unit Defaults For Xml</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference PERSISTENCE_UNIT_METADATA_FOR_XML__PERSISTENCE_UNIT_DEFAULTS_FOR_XML = eINSTANCE.getPersistenceUnitMetadataForXml_PersistenceUnitDefaultsForXml();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal <em>Persistence Unit Defaults Internal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitDefaultsInternal()
+ * @generated
+ */
+ public static final EClass PERSISTENCE_UNIT_DEFAULTS_INTERNAL = eINSTANCE.getPersistenceUnitDefaultsInternal();
+
+ /**
+ * The meta object literal for the '<em><b>Schema Internal</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute PERSISTENCE_UNIT_DEFAULTS_INTERNAL__SCHEMA_INTERNAL = eINSTANCE.getPersistenceUnitDefaultsInternal_SchemaInternal();
+
+ /**
+ * The meta object literal for the '<em><b>Catalog Internal</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CATALOG_INTERNAL = eINSTANCE.getPersistenceUnitDefaultsInternal_CatalogInternal();
+
+ /**
+ * The meta object literal for the '<em><b>Access Internal</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute PERSISTENCE_UNIT_DEFAULTS_INTERNAL__ACCESS_INTERNAL = eINSTANCE.getPersistenceUnitDefaultsInternal_AccessInternal();
+
+ /**
+ * The meta object literal for the '<em><b>Cascade Persist Internal</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CASCADE_PERSIST_INTERNAL = eINSTANCE.getPersistenceUnitDefaultsInternal_CascadePersistInternal();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaults <em>Persistence Unit Defaults</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaults
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitDefaults()
+ * @generated
+ */
+ public static final EClass PERSISTENCE_UNIT_DEFAULTS = eINSTANCE.getPersistenceUnitDefaults();
+
+ /**
+ * The meta object literal for the '<em><b>Schema</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute PERSISTENCE_UNIT_DEFAULTS__SCHEMA = eINSTANCE.getPersistenceUnitDefaults_Schema();
+
+ /**
+ * The meta object literal for the '<em><b>Catalog</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute PERSISTENCE_UNIT_DEFAULTS__CATALOG = eINSTANCE.getPersistenceUnitDefaults_Catalog();
+
+ /**
+ * The meta object literal for the '<em><b>Access</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute PERSISTENCE_UNIT_DEFAULTS__ACCESS = eINSTANCE.getPersistenceUnitDefaults_Access();
+
+ /**
+ * The meta object literal for the '<em><b>Cascade Persist</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute PERSISTENCE_UNIT_DEFAULTS__CASCADE_PERSIST = eINSTANCE.getPersistenceUnitDefaults_CascadePersist();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsForXml <em>Persistence Unit Defaults For Xml</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsForXml
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitDefaultsForXml()
+ * @generated
+ */
+ public static final EClass PERSISTENCE_UNIT_DEFAULTS_FOR_XML = eINSTANCE.getPersistenceUnitDefaultsForXml();
+
+ /**
+ * The meta object literal for the '<em><b>Schema For Xml</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute PERSISTENCE_UNIT_DEFAULTS_FOR_XML__SCHEMA_FOR_XML = eINSTANCE.getPersistenceUnitDefaultsForXml_SchemaForXml();
+
+ /**
+ * The meta object literal for the '<em><b>Catalog For Xml</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute PERSISTENCE_UNIT_DEFAULTS_FOR_XML__CATALOG_FOR_XML = eINSTANCE.getPersistenceUnitDefaultsForXml_CatalogForXml();
+
+ /**
+ * The meta object literal for the '<em><b>Access For Xml</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute PERSISTENCE_UNIT_DEFAULTS_FOR_XML__ACCESS_FOR_XML = eINSTANCE.getPersistenceUnitDefaultsForXml_AccessForXml();
+
+ /**
+ * The meta object literal for the '<em><b>Cascade Persist For Xml</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute PERSISTENCE_UNIT_DEFAULTS_FOR_XML__CASCADE_PERSIST_FOR_XML = eINSTANCE.getPersistenceUnitDefaultsForXml_CascadePersistForXml();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlTable <em>Xml Table</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlTable
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlTable()
+ * @generated
+ */
+ public static final EClass XML_TABLE = eINSTANCE.getXmlTable();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlNamedColumn <em>Abstract Xml Named Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.AbstractXmlNamedColumn
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getAbstractXmlNamedColumn()
+ * @generated
+ */
+ public static final EClass ABSTRACT_XML_NAMED_COLUMN = eINSTANCE.getAbstractXmlNamedColumn();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Name For Xml</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ABSTRACT_XML_NAMED_COLUMN__SPECIFIED_NAME_FOR_XML = eINSTANCE.getAbstractXmlNamedColumn_SpecifiedNameForXml();
+
+ /**
+ * The meta object literal for the '<em><b>Column Definition For Xml</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ABSTRACT_XML_NAMED_COLUMN__COLUMN_DEFINITION_FOR_XML = eINSTANCE.getAbstractXmlNamedColumn_ColumnDefinitionForXml();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn <em>Abstract Xml Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getAbstractXmlColumn()
+ * @generated
+ */
+ public static final EClass ABSTRACT_XML_COLUMN = eINSTANCE.getAbstractXmlColumn();
+
+ /**
+ * The meta object literal for the '<em><b>Unique For Xml</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ABSTRACT_XML_COLUMN__UNIQUE_FOR_XML = eINSTANCE.getAbstractXmlColumn_UniqueForXml();
+
+ /**
+ * The meta object literal for the '<em><b>Nullable For Xml</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ABSTRACT_XML_COLUMN__NULLABLE_FOR_XML = eINSTANCE.getAbstractXmlColumn_NullableForXml();
+
+ /**
+ * The meta object literal for the '<em><b>Insertable For Xml</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ABSTRACT_XML_COLUMN__INSERTABLE_FOR_XML = eINSTANCE.getAbstractXmlColumn_InsertableForXml();
+
+ /**
+ * The meta object literal for the '<em><b>Updatable For Xml</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ABSTRACT_XML_COLUMN__UPDATABLE_FOR_XML = eINSTANCE.getAbstractXmlColumn_UpdatableForXml();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Table For Xml</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ABSTRACT_XML_COLUMN__SPECIFIED_TABLE_FOR_XML = eINSTANCE.getAbstractXmlColumn_SpecifiedTableForXml();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlColumn <em>Xml Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlColumn
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlColumn()
+ * @generated
+ */
+ public static final EClass XML_COLUMN = eINSTANCE.getXmlColumn();
+
+ /**
+ * The meta object literal for the '<em><b>Length For Xml</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute XML_COLUMN__LENGTH_FOR_XML = eINSTANCE.getXmlColumn_LengthForXml();
+
+ /**
+ * The meta object literal for the '<em><b>Precision For Xml</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute XML_COLUMN__PRECISION_FOR_XML = eINSTANCE.getXmlColumn_PrecisionForXml();
+
+ /**
+ * The meta object literal for the '<em><b>Scale For Xml</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute XML_COLUMN__SCALE_FOR_XML = eINSTANCE.getXmlColumn_ScaleForXml();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlJoinColumn <em>Xml Join Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlJoinColumn
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlJoinColumn()
+ * @generated
+ */
+ public static final EClass XML_JOIN_COLUMN = eINSTANCE.getXmlJoinColumn();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Referenced Column Name For Xml</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute XML_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME_FOR_XML = eINSTANCE.getXmlJoinColumn_SpecifiedReferencedColumnNameForXml();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.IXmlColumnMapping <em>IXml Column Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.IXmlColumnMapping
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIXmlColumnMapping()
+ * @generated
+ */
+ public static final EClass IXML_COLUMN_MAPPING = eINSTANCE.getIXmlColumnMapping();
+
+ /**
+ * The meta object literal for the '<em><b>Column For Xml</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IXML_COLUMN_MAPPING__COLUMN_FOR_XML = eINSTANCE.getIXmlColumnMapping_ColumnForXml();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlManyToOne <em>Xml Many To One</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlManyToOne
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlManyToOne()
+ * @generated
+ */
+ public static final EClass XML_MANY_TO_ONE = eINSTANCE.getXmlManyToOne();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlOneToOne <em>Xml One To One</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlOneToOne
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlOneToOne()
+ * @generated
+ */
+ public static final EClass XML_ONE_TO_ONE = eINSTANCE.getXmlOneToOne();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlSingleRelationshipMapping <em>Xml Single Relationship Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlSingleRelationshipMapping
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlSingleRelationshipMapping()
+ * @generated
+ */
+ public static final EClass XML_SINGLE_RELATIONSHIP_MAPPING = eINSTANCE.getXmlSingleRelationshipMapping();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlRelationshipMapping <em>Xml Relationship Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlRelationshipMapping
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlRelationshipMapping()
+ * @generated
+ */
+ public static final EClass XML_RELATIONSHIP_MAPPING = eINSTANCE.getXmlRelationshipMapping();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlJoinTable <em>Xml Join Table</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlJoinTable
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlJoinTable()
+ * @generated
+ */
+ public static final EClass XML_JOIN_TABLE = eINSTANCE.getXmlJoinTable();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlTable <em>Abstract Xml Table</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.AbstractXmlTable
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getAbstractXmlTable()
+ * @generated
+ */
+ public static final EClass ABSTRACT_XML_TABLE = eINSTANCE.getAbstractXmlTable();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Name For Xml</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ABSTRACT_XML_TABLE__SPECIFIED_NAME_FOR_XML = eINSTANCE.getAbstractXmlTable_SpecifiedNameForXml();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Catalog For Xml</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ABSTRACT_XML_TABLE__SPECIFIED_CATALOG_FOR_XML = eINSTANCE.getAbstractXmlTable_SpecifiedCatalogForXml();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Schema For Xml</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ABSTRACT_XML_TABLE__SPECIFIED_SCHEMA_FOR_XML = eINSTANCE.getAbstractXmlTable_SpecifiedSchemaForXml();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlOverride <em>Xml Override</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlOverride
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlOverride()
+ * @generated
+ */
+ public static final EClass XML_OVERRIDE = eINSTANCE.getXmlOverride();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlAttributeOverride <em>Xml Attribute Override</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlAttributeOverride
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlAttributeOverride()
+ * @generated
+ */
+ public static final EClass XML_ATTRIBUTE_OVERRIDE = eINSTANCE.getXmlAttributeOverride();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlAssociationOverride <em>Xml Association Override</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlAssociationOverride
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlAssociationOverride()
+ * @generated
+ */
+ public static final EClass XML_ASSOCIATION_OVERRIDE = eINSTANCE.getXmlAssociationOverride();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlDiscriminatorColumn <em>Xml Discriminator Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlDiscriminatorColumn
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlDiscriminatorColumn()
+ * @generated
+ */
+ public static final EClass XML_DISCRIMINATOR_COLUMN = eINSTANCE.getXmlDiscriminatorColumn();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Name For Xml</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute XML_DISCRIMINATOR_COLUMN__SPECIFIED_NAME_FOR_XML = eINSTANCE.getXmlDiscriminatorColumn_SpecifiedNameForXml();
+
+ /**
+ * The meta object literal for the '<em><b>Discriminator Type For Xml</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute XML_DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE_FOR_XML = eINSTANCE.getXmlDiscriminatorColumn_DiscriminatorTypeForXml();
+
+ /**
+ * The meta object literal for the '<em><b>Column Definition For Xml</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute XML_DISCRIMINATOR_COLUMN__COLUMN_DEFINITION_FOR_XML = eINSTANCE.getXmlDiscriminatorColumn_ColumnDefinitionForXml();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Length For Xml</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute XML_DISCRIMINATOR_COLUMN__SPECIFIED_LENGTH_FOR_XML = eINSTANCE.getXmlDiscriminatorColumn_SpecifiedLengthForXml();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlSecondaryTable <em>Xml Secondary Table</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlSecondaryTable
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlSecondaryTable()
+ * @generated
+ */
+ public static final EClass XML_SECONDARY_TABLE = eINSTANCE.getXmlSecondaryTable();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlPrimaryKeyJoinColumn <em>Xml Primary Key Join Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlPrimaryKeyJoinColumn
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlPrimaryKeyJoinColumn()
+ * @generated
+ */
+ public static final EClass XML_PRIMARY_KEY_JOIN_COLUMN = eINSTANCE.getXmlPrimaryKeyJoinColumn();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Referenced Column Name For Xml</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute XML_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME_FOR_XML = eINSTANCE.getXmlPrimaryKeyJoinColumn_SpecifiedReferencedColumnNameForXml();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlGeneratedValue <em>Xml Generated Value</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlGeneratedValue
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlGeneratedValue()
+ * @generated
+ */
+ public static final EClass XML_GENERATED_VALUE = eINSTANCE.getXmlGeneratedValue();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlGenerator <em>Xml Generator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlGenerator
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlGenerator()
+ * @generated
+ */
+ public static final EClass XML_GENERATOR = eINSTANCE.getXmlGenerator();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlSequenceGenerator <em>Xml Sequence Generator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlSequenceGenerator
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlSequenceGenerator()
+ * @generated
+ */
+ public static final EClass XML_SEQUENCE_GENERATOR = eINSTANCE.getXmlSequenceGenerator();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlTableGenerator <em>Xml Table Generator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlTableGenerator
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlTableGenerator()
+ * @generated
+ */
+ public static final EClass XML_TABLE_GENERATOR = eINSTANCE.getXmlTableGenerator();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlOrderBy <em>Xml Order By</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlOrderBy
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlOrderBy()
+ * @generated
+ */
+ public static final EClass XML_ORDER_BY = eINSTANCE.getXmlOrderBy();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlQuery <em>Abstract Xml Query</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.AbstractXmlQuery
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getAbstractXmlQuery()
+ * @generated
+ */
+ public static final EClass ABSTRACT_XML_QUERY = eINSTANCE.getAbstractXmlQuery();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlNamedQuery <em>Xml Named Query</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlNamedQuery
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlNamedQuery()
+ * @generated
+ */
+ public static final EClass XML_NAMED_QUERY = eINSTANCE.getXmlNamedQuery();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlNamedNativeQuery <em>Xml Named Native Query</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlNamedNativeQuery
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlNamedNativeQuery()
+ * @generated
+ */
+ public static final EClass XML_NAMED_NATIVE_QUERY = eINSTANCE.getXmlNamedNativeQuery();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlQueryHint <em>Xml Query Hint</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlQueryHint
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlQueryHint()
+ * @generated
+ */
+ public static final EClass XML_QUERY_HINT = eINSTANCE.getXmlQueryHint();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlMappedSuperclass <em>Xml Mapped Superclass</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlMappedSuperclass
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlMappedSuperclass()
+ * @generated
+ */
+ public static final EClass XML_MAPPED_SUPERCLASS = eINSTANCE.getXmlMappedSuperclass();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlEntityInternal <em>Xml Entity Internal</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlEntityInternal
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlEntityInternal()
+ * @generated
+ */
+ public static final EClass XML_ENTITY_INTERNAL = eINSTANCE.getXmlEntityInternal();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.orm.XmlEntityForXml <em>Xml Entity For Xml</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.orm.XmlEntityForXml
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlEntityForXml()
+ * @generated
+ */
+ public static final EClass XML_ENTITY_FOR_XML = eINSTANCE.getXmlEntityForXml();
+
+ /**
+ * The meta object literal for the '<em><b>Table For Xml</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference XML_ENTITY_FOR_XML__TABLE_FOR_XML = eINSTANCE.getXmlEntityForXml_TableForXml();
+
+ /**
+ * The meta object literal for the '<em><b>Discriminator Column For Xml</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference XML_ENTITY_FOR_XML__DISCRIMINATOR_COLUMN_FOR_XML = eINSTANCE.getXmlEntityForXml_DiscriminatorColumnForXml();
+ }
+} //JpaCoreXmlPackage \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/OrmXmlJpaFileContentProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/OrmXmlJpaFileContentProvider.java
new file mode 100644
index 0000000000..e2831094d5
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/OrmXmlJpaFileContentProvider.java
@@ -0,0 +1,95 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import java.io.IOException;
+import java.util.Collections;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.jem.util.emf.workbench.WorkbenchResourceHelperBase;
+import org.eclipse.jpt.core.internal.IJpaFileContentProvider;
+import org.eclipse.jpt.core.internal.IJpaRootContentNode;
+import org.eclipse.jpt.core.internal.JpaCorePlugin;
+import org.eclipse.jpt.core.internal.content.orm.resource.OrmXmlResourceFactory;
+
+public class OrmXmlJpaFileContentProvider implements IJpaFileContentProvider
+{
+ public static OrmXmlJpaFileContentProvider INSTANCE = new OrmXmlJpaFileContentProvider();
+
+
+ /**
+ * Restrict access
+ */
+ private OrmXmlJpaFileContentProvider() {
+
+ }
+
+ public IJpaRootContentNode buildRootContent(IFile resourceFile) {
+ OrmXmlResourceFactory.register();
+
+ URI fileURI = URI.createPlatformResourceURI(resourceFile.getFullPath().toString());
+ OrmXmlResource resource = (OrmXmlResource) getResourceSet(resourceFile).getResource(fileURI, true);
+ XmlRootContentNode root = OrmFactory.eINSTANCE.createXmlRootContentNode();
+ root.setEntityMappings(resource.getXmlFileContent());
+ resource.eAdapters().add(buildRootNodeListener(root));
+ return root;
+ }
+
+ private Adapter buildRootNodeListener(XmlRootContentNode root) {
+ return new RootAdapter(root);
+ }
+
+ protected ResourceSet getResourceSet(IFile file) {
+ return WorkbenchResourceHelperBase.getResourceSet(file.getProject());
+ }
+
+ public String contentType() {
+ return JpaCorePlugin.ORM_XML_CONTENT_TYPE;
+ }
+
+
+ private class RootAdapter extends AdapterImpl
+ {
+ XmlRootContentNode root;
+
+ private RootAdapter(XmlRootContentNode rootContentNode) {
+ super();
+ root = rootContentNode;
+ }
+ public void notifyChanged(Notification notification) {
+ int featureId = notification.getFeatureID(Resource.class);
+ if (featureId == Resource.RESOURCE__CONTENTS) {
+ if (notification.getEventType() == Notification.ADD
+ || notification.getEventType() == Notification.REMOVE) {
+ OrmXmlResource resource = (OrmXmlResource) notification.getNotifier();
+ root.setEntityMappings(resource.getXmlFileContent());
+ }
+ }
+ else if (featureId == Resource.RESOURCE__IS_LOADED) {
+ // dumb translator is unloading my resource, reload it
+ if (notification.getNewBooleanValue() == false) {
+ OrmXmlResource resource = (OrmXmlResource) notification.getNotifier();
+ try {
+ resource.load(Collections.EMPTY_MAP);
+ }
+ catch (IOException ioe) {
+ // hmmm, log for now
+ JpaCorePlugin.log(ioe);
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/OrmXmlResource.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/OrmXmlResource.java
new file mode 100644
index 0000000000..393db5fb9a
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/OrmXmlResource.java
@@ -0,0 +1,20 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.wst.common.internal.emf.resource.TranslatorResource;
+
+
+public interface OrmXmlResource extends TranslatorResource
+{
+ /**
+ * Return the root object
+ */
+ EntityMappingsInternal getXmlFileContent();
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitDefaults.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitDefaults.java
new file mode 100644
index 0000000000..1d63547782
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitDefaults.java
@@ -0,0 +1,143 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.jpt.core.internal.AccessType;
+import org.eclipse.jpt.core.internal.IXmlEObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Persistence Unit Defaults</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaults#getSchema <em>Schema</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaults#getCatalog <em>Catalog</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaults#getAccess <em>Access</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaults#isCascadePersist <em>Cascade Persist</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitDefaults()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface PersistenceUnitDefaults extends IXmlEObject
+{
+ /**
+ * Returns the value of the '<em><b>Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Schema</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Schema</em>' attribute.
+ * @see #setSchema(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitDefaults_Schema()
+ * @model volatile="true"
+ * @generated
+ */
+ String getSchema();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaults#getSchema <em>Schema</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Schema</em>' attribute.
+ * @see #getSchema()
+ * @generated
+ */
+ void setSchema(String value);
+
+ /**
+ * Returns the value of the '<em><b>Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Catalog</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Catalog</em>' attribute.
+ * @see #setCatalog(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitDefaults_Catalog()
+ * @model volatile="true"
+ * @generated
+ */
+ String getCatalog();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaults#getCatalog <em>Catalog</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Catalog</em>' attribute.
+ * @see #getCatalog()
+ * @generated
+ */
+ void setCatalog(String value);
+
+ /**
+ * Returns the value of the '<em><b>Access</b></em>' attribute.
+ * The default value is <code>""</code>.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.AccessType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Access</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Access</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.AccessType
+ * @see #setAccess(AccessType)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitDefaults_Access()
+ * @model default="" volatile="true"
+ * @generated
+ */
+ AccessType getAccess();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaults#getAccess <em>Access</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Access</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.AccessType
+ * @see #getAccess()
+ * @generated
+ */
+ void setAccess(AccessType value);
+
+ /**
+ * Returns the value of the '<em><b>Cascade Persist</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Cascade Persist</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Cascade Persist</em>' attribute.
+ * @see #setCascadePersist(boolean)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitDefaults_CascadePersist()
+ * @model volatile="true"
+ * @generated
+ */
+ boolean isCascadePersist();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaults#isCascadePersist <em>Cascade Persist</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Cascade Persist</em>' attribute.
+ * @see #isCascadePersist()
+ * @generated
+ */
+ void setCascadePersist(boolean value);
+} // PersistenceUnitDefaults \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitDefaultsForXml.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitDefaultsForXml.java
new file mode 100644
index 0000000000..2a858d8edd
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitDefaultsForXml.java
@@ -0,0 +1,143 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.jpt.core.internal.AccessType;
+import org.eclipse.jpt.core.internal.IXmlEObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Persistence Unit Defaults For Xml</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsForXml#getSchemaForXml <em>Schema For Xml</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsForXml#getCatalogForXml <em>Catalog For Xml</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsForXml#getAccessForXml <em>Access For Xml</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsForXml#isCascadePersistForXml <em>Cascade Persist For Xml</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitDefaultsForXml()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface PersistenceUnitDefaultsForXml extends IXmlEObject
+{
+ /**
+ * Returns the value of the '<em><b>Schema For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Schema For Xml</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Schema For Xml</em>' attribute.
+ * @see #setSchemaForXml(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitDefaultsForXml_SchemaForXml()
+ * @model volatile="true"
+ * @generated
+ */
+ String getSchemaForXml();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsForXml#getSchemaForXml <em>Schema For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Schema For Xml</em>' attribute.
+ * @see #getSchemaForXml()
+ * @generated
+ */
+ void setSchemaForXml(String value);
+
+ /**
+ * Returns the value of the '<em><b>Catalog For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Catalog For Xml</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Catalog For Xml</em>' attribute.
+ * @see #setCatalogForXml(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitDefaultsForXml_CatalogForXml()
+ * @model volatile="true"
+ * @generated
+ */
+ String getCatalogForXml();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsForXml#getCatalogForXml <em>Catalog For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Catalog For Xml</em>' attribute.
+ * @see #getCatalogForXml()
+ * @generated
+ */
+ void setCatalogForXml(String value);
+
+ /**
+ * Returns the value of the '<em><b>Access For Xml</b></em>' attribute.
+ * The default value is <code>""</code>.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.AccessType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Access For Xml</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Access For Xml</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.AccessType
+ * @see #setAccessForXml(AccessType)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitDefaultsForXml_AccessForXml()
+ * @model default="" volatile="true"
+ * @generated
+ */
+ AccessType getAccessForXml();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsForXml#getAccessForXml <em>Access For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Access For Xml</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.AccessType
+ * @see #getAccessForXml()
+ * @generated
+ */
+ void setAccessForXml(AccessType value);
+
+ /**
+ * Returns the value of the '<em><b>Cascade Persist For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Cascade Persist For Xml</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Cascade Persist For Xml</em>' attribute.
+ * @see #setCascadePersistForXml(boolean)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitDefaultsForXml_CascadePersistForXml()
+ * @model volatile="true"
+ * @generated
+ */
+ boolean isCascadePersistForXml();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsForXml#isCascadePersistForXml <em>Cascade Persist For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Cascade Persist For Xml</em>' attribute.
+ * @see #isCascadePersistForXml()
+ * @generated
+ */
+ void setCascadePersistForXml(boolean value);
+} // PersistenceUnitDefaultsForXml
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitDefaultsInternal.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitDefaultsInternal.java
new file mode 100644
index 0000000000..09b504ba0c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitDefaultsInternal.java
@@ -0,0 +1,951 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jpt.core.internal.AccessType;
+import org.eclipse.jpt.core.internal.XmlEObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Persistence Unit Defaults Internal</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal#getSchemaInternal <em>Schema Internal</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal#getCatalogInternal <em>Catalog Internal</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal#getAccessInternal <em>Access Internal</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal#isCascadePersistInternal <em>Cascade Persist Internal</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitDefaultsInternal()
+ * @model kind="class"
+ * @generated
+ */
+public class PersistenceUnitDefaultsInternal extends XmlEObject
+ implements PersistenceUnitDefaults, PersistenceUnitDefaultsForXml
+{
+ /**
+ * The default value of the '{@link #getSchema() <em>Schema</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSchema()
+ * @generated
+ * @ordered
+ */
+ protected static final String SCHEMA_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getCatalog() <em>Catalog</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCatalog()
+ * @generated
+ * @ordered
+ */
+ protected static final String CATALOG_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getAccess() <em>Access</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAccess()
+ * @generated
+ * @ordered
+ */
+ protected static final AccessType ACCESS_EDEFAULT = AccessType.DEFAULT;
+
+ /**
+ * The default value of the '{@link #isCascadePersist() <em>Cascade Persist</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isCascadePersist()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean CASCADE_PERSIST_EDEFAULT = false;
+
+ /**
+ * The default value of the '{@link #getSchemaForXml() <em>Schema For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSchemaForXml()
+ * @generated
+ * @ordered
+ */
+ protected static final String SCHEMA_FOR_XML_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getCatalogForXml() <em>Catalog For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCatalogForXml()
+ * @generated
+ * @ordered
+ */
+ protected static final String CATALOG_FOR_XML_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getAccessForXml() <em>Access For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAccessForXml()
+ * @generated
+ * @ordered
+ */
+ protected static final AccessType ACCESS_FOR_XML_EDEFAULT = AccessType.DEFAULT;
+
+ /**
+ * The default value of the '{@link #isCascadePersistForXml() <em>Cascade Persist For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isCascadePersistForXml()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean CASCADE_PERSIST_FOR_XML_EDEFAULT = false;
+
+ /**
+ * The default value of the '{@link #getSchemaInternal() <em>Schema Internal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSchemaInternal()
+ * @generated
+ * @ordered
+ */
+ protected static final String SCHEMA_INTERNAL_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSchemaInternal() <em>Schema Internal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSchemaInternal()
+ * @generated
+ * @ordered
+ */
+ protected String schemaInternal = SCHEMA_INTERNAL_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getCatalogInternal() <em>Catalog Internal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCatalogInternal()
+ * @generated
+ * @ordered
+ */
+ protected static final String CATALOG_INTERNAL_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getCatalogInternal() <em>Catalog Internal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCatalogInternal()
+ * @generated
+ * @ordered
+ */
+ protected String catalogInternal = CATALOG_INTERNAL_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getAccessInternal() <em>Access Internal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAccessInternal()
+ * @generated
+ * @ordered
+ */
+ protected static final AccessType ACCESS_INTERNAL_EDEFAULT = AccessType.DEFAULT;
+
+ /**
+ * The cached value of the '{@link #getAccessInternal() <em>Access Internal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAccessInternal()
+ * @generated
+ * @ordered
+ */
+ protected AccessType accessInternal = ACCESS_INTERNAL_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #isCascadePersistInternal() <em>Cascade Persist Internal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isCascadePersistInternal()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean CASCADE_PERSIST_INTERNAL_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isCascadePersistInternal() <em>Cascade Persist Internal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isCascadePersistInternal()
+ * @generated
+ * @ordered
+ */
+ protected boolean cascadePersistInternal = CASCADE_PERSIST_INTERNAL_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PersistenceUnitDefaultsInternal() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.PERSISTENCE_UNIT_DEFAULTS_INTERNAL;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Access</b></em>' attribute.
+ * The default value is <code>""</code>.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.content.orm.AccessType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Access</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Access</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.AccessType
+ * @see #setAccess(AccessType)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getAccessHolder_Access()
+ * @model default="" volatile="true"
+ * @generated NOT
+ */
+ public AccessType getAccess() {
+ return getAccessInternal();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal#getAccess <em>Access</em>}' attribute.
+ * This api should be used by the UI. It calls the appropriate
+ * internal api for updating the xml. It also handles setting container
+ * objects to null for the xml. If access is set to the default, empty xml containment
+ * tags will be removed when they no longer contain any other xml tags.
+ * This is done in the UI method because we do not want the same behavior
+ * when setting the access from the xml, we never want to change the xml
+ * as the user is directly edting the xml.
+ *
+ * @param value the new value of the '<em>Access</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.AccessType
+ * @see #getAccess()
+ * @generated NOT
+ */
+ public void setAccess(AccessType newAccess) {
+ setAccessInternal(newAccess);
+ if (newAccess != ACCESS_EDEFAULT) {
+ getPersistenceUnitMetadata().makePersistenceUnitDefaultsForXmlNonNull();
+ }
+ setAccessForXml(newAccess);
+ if (isAllFeaturesUnset()) {
+ getPersistenceUnitMetadata().makePersistenceUnitDefaultsForXmlNull();
+ }
+ }
+
+ private PersistenceUnitMetadataInternal getPersistenceUnitMetadata() {
+ return (PersistenceUnitMetadataInternal) eContainer();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Catalog</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Catalog</em>' attribute.
+ * @see #setCatalog(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getCatalogHolder_Catalog()
+ * @model volatile="true"
+ * @generated NOT
+ */
+ public String getCatalog() {
+ return getCatalogInternal();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal#getCatalog <em>Catalog</em>}' attribute.
+ * This api should be used by the UI. It calls the appropriate
+ * internal api for updating the xml. It also handles setting container
+ * objects to null for the xml. If access is set to the default, empty xml containment
+ * tags will be removed when they no longer contain any other xml tags.
+ * This is done in the UI method because we do not want the same behavior
+ * when setting the access from the xml, we never want to change the xml
+ * as the user is directly edting the xml.
+ * @param value the new value of the '<em>Catalog</em>' attribute.
+ * @see #getCatalog()
+ * @generated NOT
+ */
+ public void setCatalog(String newCatalog) {
+ setCatalogInternal(newCatalog);
+ if (newCatalog != CATALOG_EDEFAULT) {
+ getPersistenceUnitMetadata().makePersistenceUnitDefaultsForXmlNonNull();
+ }
+ setCatalogForXml(newCatalog);
+ if (isAllFeaturesUnset()) {
+ getPersistenceUnitMetadata().makePersistenceUnitDefaultsForXmlNull();
+ }
+ }
+
+ /**
+ * Returns the value of the '<em><b>Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Schema</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Schema</em>' attribute.
+ * @see #setSchema(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getSchemaHolder_Schema()
+ * @model volatile="true"
+ * @generated NOT
+ */
+ public String getSchema() {
+ return getSchemaInternal();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal#getSchema <em>Schema</em>}' attribute.
+ * This api should be used by the UI. It calls the appropriate
+ * internal api for updating the xml. It also handles setting container
+ * objects to null for the xml. If access is set to the default, empty xml containment
+ * tags will be removed when they no longer contain any other xml tags.
+ * This is done in the UI method because we do not want the same behavior
+ * when setting the access from the xml, we never want to change the xml
+ * as the user is directly edting the xml.
+ * @param value the new value of the '<em>Schema</em>' attribute.
+ * @see #getSchema()
+ * @generated NOT
+ */
+ public void setSchema(String newSchema) {
+ setSchemaInternal(newSchema);
+ if (newSchema != SCHEMA_EDEFAULT) {
+ getPersistenceUnitMetadata().makePersistenceUnitDefaultsForXmlNonNull();
+ }
+ setSchemaForXml(newSchema);
+ if (isAllFeaturesUnset()) {
+ getPersistenceUnitMetadata().makePersistenceUnitDefaultsForXmlNull();
+ }
+ }
+
+ /**
+ * Returns the value of the '<em><b>Cascade Persist</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Cascade Persist</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Cascade Persist</em>' attribute.
+ * @see #setCascadePersist(boolean)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitDefaults_CascadePersist()
+ * @model volatile="true"
+ * @generated NOT
+ */
+ public boolean isCascadePersist() {
+ return isCascadePersistInternal();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal#isCascadePersist <em>Cascade Persist</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Cascade Persist</em>' attribute.
+ * @see #isCascadePersist()
+ * @generated NOT
+ */
+ public void setCascadePersist(boolean newCascadePersist) {
+ setCascadePersistInternal(newCascadePersist);
+ if (newCascadePersist != CASCADE_PERSIST_EDEFAULT) {
+ getPersistenceUnitMetadata().makePersistenceUnitDefaultsForXmlNonNull();
+ }
+ setCascadePersistForXml(newCascadePersist);
+ if (isAllFeaturesUnset()) {
+ getPersistenceUnitMetadata().makePersistenceUnitDefaultsForXmlNull();
+ }
+ }
+
+ /**
+ * Returns the value of the '<em><b>Schema For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Schema For Xml</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Schema For Xml</em>' attribute.
+ * @see #setSchemaForXml(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitDefaultsForXml_SchemaForXml()
+ * @model volatile="true"
+ * @generated NOT
+ */
+ public String getSchemaForXml() {
+ return getSchemaInternal();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal#getSchemaForXml <em>Schema For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Schema For Xml</em>' attribute.
+ * @see #getSchemaForXml()
+ * @generated NOT
+ */
+ public void setSchemaForXml(String newSchemaForXml) {
+ setSchemaInternal(newSchemaForXml);
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__SCHEMA_FOR_XML, newSchemaForXml + " ", newSchemaForXml));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Catalog For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Catalog For Xml</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Catalog For Xml</em>' attribute.
+ * @see #setCatalogForXml(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitDefaultsForXml_CatalogForXml()
+ * @model volatile="true"
+ * @generated NOT
+ */
+ public String getCatalogForXml() {
+ return getCatalogInternal();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal#getCatalogForXml <em>Catalog For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Catalog For Xml</em>' attribute.
+ * @see #getCatalogForXml()
+ * @generated NOT
+ */
+ public void setCatalogForXml(String newCatalogForXml) {
+ setCatalogInternal(newCatalogForXml);
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CATALOG_FOR_XML, newCatalogForXml + " ", newCatalogForXml));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Access For Xml</b></em>' attribute.
+ * The default value is <code>""</code>.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.content.orm.AccessType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Access For Xml</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Access For Xml</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.AccessType
+ * @see #setAccessForXml(AccessType)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitDefaultsForXml_AccessForXml()
+ * @model default="" volatile="true"
+ * @generated NOT
+ */
+ public AccessType getAccessForXml() {
+ return getAccessInternal();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal#getAccessForXml <em>Access For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Access For Xml</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.AccessType
+ * @see #getAccessForXml()
+ * @generated NOT
+ */
+ public void setAccessForXml(AccessType newAccessForXml) {
+ setAccessInternal(newAccessForXml);
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__ACCESS_FOR_XML, null, newAccessForXml));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Cascade Persist For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Cascade Persist For Xml</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Cascade Persist For Xml</em>' attribute.
+ * @see #setCascadePersistForXml(boolean)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitDefaultsForXml_CascadePersistForXml()
+ * @model volatile="true"
+ * @generated NOT
+ */
+ public boolean isCascadePersistForXml() {
+ return isCascadePersistInternal();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal#isCascadePersistForXml <em>Cascade Persist For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Cascade Persist For Xml</em>' attribute.
+ * @see #isCascadePersistForXml()
+ * @generated NOT
+ */
+ public void setCascadePersistForXml(boolean newCascadePersistForXml) {
+ setCascadePersistInternal(newCascadePersistForXml);
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CASCADE_PERSIST_FOR_XML, null, newCascadePersistForXml));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Schema Internal</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Schema Internal</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Schema Internal</em>' attribute.
+ * @see #setSchemaInternal(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitDefaultsInternal_SchemaInternal()
+ * @model
+ * @generated
+ */
+ public String getSchemaInternal() {
+ return schemaInternal;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal#getSchemaInternal <em>Schema Internal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Schema Internal</em>' attribute.
+ * @see #getSchemaInternal()
+ * @generated NOT
+ */
+ public void setSchemaInternal(String newSchemaInternal) {
+ String oldSchemaInternal = schemaInternal;
+ schemaInternal = newSchemaInternal;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__SCHEMA_INTERNAL, oldSchemaInternal, schemaInternal));
+ //notification so the UI is updated when the xml changes, can't call the UI api
+ //because it has other side effects
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__SCHEMA, oldSchemaInternal, schemaInternal));
+ }
+ }
+
+ /**
+ * Returns the value of the '<em><b>Catalog Internal</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Catalog Internal</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Catalog Internal</em>' attribute.
+ * @see #setCatalogInternal(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitDefaultsInternal_CatalogInternal()
+ * @model
+ * @generated
+ */
+ public String getCatalogInternal() {
+ return catalogInternal;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal#getCatalogInternal <em>Catalog Internal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Catalog Internal</em>' attribute.
+ * @see #getCatalogInternal()
+ * @generated NOT
+ */
+ public void setCatalogInternal(String newCatalogInternal) {
+ String oldCatalogInternal = catalogInternal;
+ catalogInternal = newCatalogInternal;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CATALOG_INTERNAL, oldCatalogInternal, catalogInternal));
+ //notification so the UI is updated when the xml changes, can't call the UI api
+ //because it has other side effects
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CATALOG, oldCatalogInternal, catalogInternal));
+ }
+ }
+
+ /**
+ * Returns the value of the '<em><b>Access Internal</b></em>' attribute.
+ * The default value is <code>""</code>.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.AccessType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Access Internal</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Access Internal</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.AccessType
+ * @see #setAccessInternal(AccessType)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitDefaultsInternal_AccessInternal()
+ * @model default=""
+ * @generated
+ */
+ public AccessType getAccessInternal() {
+ return accessInternal;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal#getAccessInternal <em>Access Internal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Access Internal</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.AccessType
+ * @see #getAccessInternal()
+ * @generated NOT
+ */
+ public void setAccessInternal(AccessType newAccessInternal) {
+ AccessType oldAccessInternal = accessInternal;
+ accessInternal = newAccessInternal == null ? ACCESS_INTERNAL_EDEFAULT : newAccessInternal;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__ACCESS_INTERNAL, oldAccessInternal, accessInternal));
+ //notification so the UI is updated when the xml changes, can't call the UI api
+ //because it has other side effects
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__ACCESS, oldAccessInternal, accessInternal));
+ }
+ }
+
+ /**
+ * Returns the value of the '<em><b>Cascade Persist Internal</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Cascade Persist Internal</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Cascade Persist Internal</em>' attribute.
+ * @see #setCascadePersistInternal(boolean)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitDefaultsInternal_CascadePersistInternal()
+ * @model
+ * @generated
+ */
+ public boolean isCascadePersistInternal() {
+ return cascadePersistInternal;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal#isCascadePersistInternal <em>Cascade Persist Internal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Cascade Persist Internal</em>' attribute.
+ * @see #isCascadePersistInternal()
+ * @generated NOT
+ */
+ public void setCascadePersistInternal(boolean newCascadePersistInternal) {
+ boolean oldCascadePersistInternal = cascadePersistInternal;
+ cascadePersistInternal = newCascadePersistInternal;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CASCADE_PERSIST_INTERNAL, oldCascadePersistInternal, cascadePersistInternal));
+ //notification so the UI is updated when the xml changes, can't call the UI api
+ //because it has other side effects
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CASCADE_PERSIST, newCascadePersistInternal, newCascadePersistInternal));
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__SCHEMA :
+ return getSchema();
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CATALOG :
+ return getCatalog();
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__ACCESS :
+ return getAccess();
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CASCADE_PERSIST :
+ return isCascadePersist() ? Boolean.TRUE : Boolean.FALSE;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__SCHEMA_FOR_XML :
+ return getSchemaForXml();
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CATALOG_FOR_XML :
+ return getCatalogForXml();
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__ACCESS_FOR_XML :
+ return getAccessForXml();
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CASCADE_PERSIST_FOR_XML :
+ return isCascadePersistForXml() ? Boolean.TRUE : Boolean.FALSE;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__SCHEMA_INTERNAL :
+ return getSchemaInternal();
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CATALOG_INTERNAL :
+ return getCatalogInternal();
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__ACCESS_INTERNAL :
+ return getAccessInternal();
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CASCADE_PERSIST_INTERNAL :
+ return isCascadePersistInternal() ? Boolean.TRUE : Boolean.FALSE;
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__SCHEMA :
+ setSchema((String) newValue);
+ return;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CATALOG :
+ setCatalog((String) newValue);
+ return;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__ACCESS :
+ setAccess((AccessType) newValue);
+ return;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CASCADE_PERSIST :
+ setCascadePersist(((Boolean) newValue).booleanValue());
+ return;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__SCHEMA_FOR_XML :
+ setSchemaForXml((String) newValue);
+ return;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CATALOG_FOR_XML :
+ setCatalogForXml((String) newValue);
+ return;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__ACCESS_FOR_XML :
+ setAccessForXml((AccessType) newValue);
+ return;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CASCADE_PERSIST_FOR_XML :
+ setCascadePersistForXml(((Boolean) newValue).booleanValue());
+ return;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__SCHEMA_INTERNAL :
+ setSchemaInternal((String) newValue);
+ return;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CATALOG_INTERNAL :
+ setCatalogInternal((String) newValue);
+ return;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__ACCESS_INTERNAL :
+ setAccessInternal((AccessType) newValue);
+ return;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CASCADE_PERSIST_INTERNAL :
+ setCascadePersistInternal(((Boolean) newValue).booleanValue());
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__SCHEMA :
+ setSchema(SCHEMA_EDEFAULT);
+ return;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CATALOG :
+ setCatalog(CATALOG_EDEFAULT);
+ return;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__ACCESS :
+ setAccess(ACCESS_EDEFAULT);
+ return;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CASCADE_PERSIST :
+ setCascadePersist(CASCADE_PERSIST_EDEFAULT);
+ return;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__SCHEMA_FOR_XML :
+ setSchemaForXml(SCHEMA_FOR_XML_EDEFAULT);
+ return;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CATALOG_FOR_XML :
+ setCatalogForXml(CATALOG_FOR_XML_EDEFAULT);
+ return;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__ACCESS_FOR_XML :
+ setAccessForXml(ACCESS_FOR_XML_EDEFAULT);
+ return;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CASCADE_PERSIST_FOR_XML :
+ setCascadePersistForXml(CASCADE_PERSIST_FOR_XML_EDEFAULT);
+ return;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__SCHEMA_INTERNAL :
+ setSchemaInternal(SCHEMA_INTERNAL_EDEFAULT);
+ return;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CATALOG_INTERNAL :
+ setCatalogInternal(CATALOG_INTERNAL_EDEFAULT);
+ return;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__ACCESS_INTERNAL :
+ setAccessInternal(ACCESS_INTERNAL_EDEFAULT);
+ return;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CASCADE_PERSIST_INTERNAL :
+ setCascadePersistInternal(CASCADE_PERSIST_INTERNAL_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__SCHEMA :
+ return SCHEMA_EDEFAULT == null ? getSchema() != null : !SCHEMA_EDEFAULT.equals(getSchema());
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CATALOG :
+ return CATALOG_EDEFAULT == null ? getCatalog() != null : !CATALOG_EDEFAULT.equals(getCatalog());
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__ACCESS :
+ return getAccess() != ACCESS_EDEFAULT;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CASCADE_PERSIST :
+ return isCascadePersist() != CASCADE_PERSIST_EDEFAULT;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__SCHEMA_FOR_XML :
+ return SCHEMA_FOR_XML_EDEFAULT == null ? getSchemaForXml() != null : !SCHEMA_FOR_XML_EDEFAULT.equals(getSchemaForXml());
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CATALOG_FOR_XML :
+ return CATALOG_FOR_XML_EDEFAULT == null ? getCatalogForXml() != null : !CATALOG_FOR_XML_EDEFAULT.equals(getCatalogForXml());
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__ACCESS_FOR_XML :
+ return getAccessForXml() != ACCESS_FOR_XML_EDEFAULT;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CASCADE_PERSIST_FOR_XML :
+ return isCascadePersistForXml() != CASCADE_PERSIST_FOR_XML_EDEFAULT;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__SCHEMA_INTERNAL :
+ return SCHEMA_INTERNAL_EDEFAULT == null ? schemaInternal != null : !SCHEMA_INTERNAL_EDEFAULT.equals(schemaInternal);
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CATALOG_INTERNAL :
+ return CATALOG_INTERNAL_EDEFAULT == null ? catalogInternal != null : !CATALOG_INTERNAL_EDEFAULT.equals(catalogInternal);
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__ACCESS_INTERNAL :
+ return accessInternal != ACCESS_INTERNAL_EDEFAULT;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CASCADE_PERSIST_INTERNAL :
+ return cascadePersistInternal != CASCADE_PERSIST_INTERNAL_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == PersistenceUnitDefaults.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__SCHEMA :
+ return OrmPackage.PERSISTENCE_UNIT_DEFAULTS__SCHEMA;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CATALOG :
+ return OrmPackage.PERSISTENCE_UNIT_DEFAULTS__CATALOG;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__ACCESS :
+ return OrmPackage.PERSISTENCE_UNIT_DEFAULTS__ACCESS;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CASCADE_PERSIST :
+ return OrmPackage.PERSISTENCE_UNIT_DEFAULTS__CASCADE_PERSIST;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == PersistenceUnitDefaultsForXml.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__SCHEMA_FOR_XML :
+ return OrmPackage.PERSISTENCE_UNIT_DEFAULTS_FOR_XML__SCHEMA_FOR_XML;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CATALOG_FOR_XML :
+ return OrmPackage.PERSISTENCE_UNIT_DEFAULTS_FOR_XML__CATALOG_FOR_XML;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__ACCESS_FOR_XML :
+ return OrmPackage.PERSISTENCE_UNIT_DEFAULTS_FOR_XML__ACCESS_FOR_XML;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CASCADE_PERSIST_FOR_XML :
+ return OrmPackage.PERSISTENCE_UNIT_DEFAULTS_FOR_XML__CASCADE_PERSIST_FOR_XML;
+ 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 == PersistenceUnitDefaults.class) {
+ switch (baseFeatureID) {
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS__SCHEMA :
+ return OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__SCHEMA;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS__CATALOG :
+ return OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CATALOG;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS__ACCESS :
+ return OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__ACCESS;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS__CASCADE_PERSIST :
+ return OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CASCADE_PERSIST;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == PersistenceUnitDefaultsForXml.class) {
+ switch (baseFeatureID) {
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_FOR_XML__SCHEMA_FOR_XML :
+ return OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__SCHEMA_FOR_XML;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_FOR_XML__CATALOG_FOR_XML :
+ return OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CATALOG_FOR_XML;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_FOR_XML__ACCESS_FOR_XML :
+ return OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__ACCESS_FOR_XML;
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_FOR_XML__CASCADE_PERSIST_FOR_XML :
+ return OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CASCADE_PERSIST_FOR_XML;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (schemaInternal: ");
+ result.append(schemaInternal);
+ result.append(", catalogInternal: ");
+ result.append(catalogInternal);
+ result.append(", accessInternal: ");
+ result.append(accessInternal);
+ result.append(", cascadePersistInternal: ");
+ result.append(cascadePersistInternal);
+ result.append(')');
+ return result.toString();
+ }
+
+ /**
+ * Call this when the persistence-unit-defaults tag is removed
+ * from the xml, need to make sure all the model attributes are set to the default
+ */
+ protected void unsetAllAttributes() {
+ eUnset(OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__ACCESS_INTERNAL);
+ eUnset(OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CATALOG_INTERNAL);
+ eUnset(OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__SCHEMA_INTERNAL);
+ eUnset(OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL__CASCADE_PERSIST_INTERNAL);
+ }
+} // PersistenceUnitDefaultsInternal \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitMetadata.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitMetadata.java
new file mode 100644
index 0000000000..0cbaae06ab
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitMetadata.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.jpt.core.internal.IXmlEObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Persistence Unit Metadata</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadata#isXmlMappingMetadataComplete <em>Xml Mapping Metadata Complete</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadata#getPersistenceUnitDefaults <em>Persistence Unit Defaults</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitMetadata()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface PersistenceUnitMetadata extends IXmlEObject
+{
+ /**
+ * Returns the value of the '<em><b>Xml Mapping Metadata Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Xml Mapping Metadata Complete</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Xml Mapping Metadata Complete</em>' attribute.
+ * @see #setXmlMappingMetadataComplete(boolean)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitMetadata_XmlMappingMetadataComplete()
+ * @model volatile="true"
+ * @generated
+ */
+ boolean isXmlMappingMetadataComplete();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadata#isXmlMappingMetadataComplete <em>Xml Mapping Metadata Complete</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Xml Mapping Metadata Complete</em>' attribute.
+ * @see #isXmlMappingMetadataComplete()
+ * @generated
+ */
+ void setXmlMappingMetadataComplete(boolean value);
+
+ /**
+ * Returns the value of the '<em><b>Persistence Unit Defaults</b></em>' reference.
+ * The default value is <code>""</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Persistence Unit Defaults</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Persistence Unit Defaults</em>' reference.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitMetadata_PersistenceUnitDefaults()
+ * @model resolveProxies="false" changeable="false" volatile="true"
+ * @generated
+ */
+ PersistenceUnitDefaults getPersistenceUnitDefaults();
+} // PersistenceUnitMetadata \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitMetadataForXml.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitMetadataForXml.java
new file mode 100644
index 0000000000..4f008c559d
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitMetadataForXml.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.jpt.core.internal.IXmlEObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Persistence Unit Metadata For Xml</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataForXml#isXmlMappingMetadataCompleteForXml <em>Xml Mapping Metadata Complete For Xml</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataForXml#getPersistenceUnitDefaultsForXml <em>Persistence Unit Defaults For Xml</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitMetadataForXml()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface PersistenceUnitMetadataForXml extends IXmlEObject
+{
+ /**
+ * Returns the value of the '<em><b>Xml Mapping Metadata Complete For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Xml Mapping Metadata Complete For Xml</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Xml Mapping Metadata Complete For Xml</em>' attribute.
+ * @see #setXmlMappingMetadataCompleteForXml(boolean)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitMetadataForXml_XmlMappingMetadataCompleteForXml()
+ * @model volatile="true"
+ * @generated
+ */
+ boolean isXmlMappingMetadataCompleteForXml();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataForXml#isXmlMappingMetadataCompleteForXml <em>Xml Mapping Metadata Complete For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Xml Mapping Metadata Complete For Xml</em>' attribute.
+ * @see #isXmlMappingMetadataCompleteForXml()
+ * @generated
+ */
+ void setXmlMappingMetadataCompleteForXml(boolean value);
+
+ /**
+ * Returns the value of the '<em><b>Persistence Unit Defaults For Xml</b></em>' reference.
+ * The default value is <code>""</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Persistence Unit Defaults For Xml</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Persistence Unit Defaults For Xml</em>' reference.
+ * @see #setPersistenceUnitDefaultsForXml(PersistenceUnitDefaultsForXml)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitMetadataForXml_PersistenceUnitDefaultsForXml()
+ * @model resolveProxies="false" volatile="true"
+ * @generated
+ */
+ PersistenceUnitDefaultsForXml getPersistenceUnitDefaultsForXml();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataForXml#getPersistenceUnitDefaultsForXml <em>Persistence Unit Defaults For Xml</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Persistence Unit Defaults For Xml</em>' reference.
+ * @see #getPersistenceUnitDefaultsForXml()
+ * @generated
+ */
+ void setPersistenceUnitDefaultsForXml(PersistenceUnitDefaultsForXml value);
+} // PersistenceUnitMetadataForXml
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitMetadataInternal.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitMetadataInternal.java
new file mode 100644
index 0000000000..bbb43300b1
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/PersistenceUnitMetadataInternal.java
@@ -0,0 +1,533 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+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.jpt.core.internal.XmlEObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Persistence Unit Metadata Internal</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataInternal#isXmlMappingMetadataCompleteInternal <em>Xml Mapping Metadata Complete Internal</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataInternal#getPersistenceUnitDefaultsInternal <em>Persistence Unit Defaults Internal</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitMetadataInternal()
+ * @model kind="class"
+ * @generated
+ */
+public class PersistenceUnitMetadataInternal extends XmlEObject
+ implements PersistenceUnitMetadataForXml, PersistenceUnitMetadata
+{
+ /**
+ * The default value of the '{@link #isXmlMappingMetadataCompleteForXml() <em>Xml Mapping Metadata Complete For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isXmlMappingMetadataCompleteForXml()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean XML_MAPPING_METADATA_COMPLETE_FOR_XML_EDEFAULT = false;
+
+ /**
+ * The default value of the '{@link #isXmlMappingMetadataComplete() <em>Xml Mapping Metadata Complete</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isXmlMappingMetadataComplete()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean XML_MAPPING_METADATA_COMPLETE_EDEFAULT = false;
+
+ /**
+ * The default value of the '{@link #isXmlMappingMetadataCompleteInternal() <em>Xml Mapping Metadata Complete Internal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isXmlMappingMetadataCompleteInternal()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean XML_MAPPING_METADATA_COMPLETE_INTERNAL_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isXmlMappingMetadataCompleteInternal() <em>Xml Mapping Metadata Complete Internal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isXmlMappingMetadataCompleteInternal()
+ * @generated
+ * @ordered
+ */
+ protected boolean xmlMappingMetadataCompleteInternal = XML_MAPPING_METADATA_COMPLETE_INTERNAL_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getPersistenceUnitDefaultsInternal() <em>Persistence Unit Defaults Internal</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPersistenceUnitDefaultsInternal()
+ * @generated
+ * @ordered
+ */
+ protected PersistenceUnitDefaultsInternal persistenceUnitDefaultsInternal;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected PersistenceUnitMetadataInternal() {
+ super();
+ //we don't want a setter for this object since it should never be null, but
+ //it must be initialized and is necessary for emf to call the eInverseAdd method
+ this.persistenceUnitDefaultsInternal = OrmFactory.eINSTANCE.createPersistenceUnitDefaultsInternal();
+ ((InternalEObject) this.persistenceUnitDefaultsInternal).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__PERSISTENCE_UNIT_DEFAULTS_INTERNAL, null, null);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.PERSISTENCE_UNIT_METADATA_INTERNAL;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Xml Mapping Metadata Complete For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * API used by the xml translator. Defers to the internal attribute, no actual
+ * xml attribute is stored in the model.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Xml Mapping Metadata Complete For Xml</em>' attribute.
+ * @see #setXmlMappingMetadataCompleteForXml(boolean)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitMetadataForXml_XmlMappingMetadataCompleteForXml()
+ * @model volatile="true"
+ * @generated NOT
+ */
+ public boolean isXmlMappingMetadataCompleteForXml() {
+ return isXmlMappingMetadataCompleteInternal();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataInternal#isXmlMappingMetadataCompleteForXml <em>Xml Mapping Metadata Complete For Xml</em>}' attribute.
+ * API used by the XML translator, sets the internal attribute and
+ * fires notification about the XML attribute changing.
+ * @param value the new value of the '<em>Xml Mapping Metadata Complete For Xml</em>' attribute.
+ * @see #isXmlMappingMetadataCompleteForXml()
+ * @generated NOT
+ */
+ public void setXmlMappingMetadataCompleteForXml(boolean newXmlMappingMetadataCompleteForXml) {
+ setXmlMappingMetadataCompleteInternal(newXmlMappingMetadataCompleteForXml);
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__XML_MAPPING_METADATA_COMPLETE_FOR_XML, null, newXmlMappingMetadataCompleteForXml));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Persistence Unit Defaults For Xml</b></em>' reference.
+ * The default value is <code>""</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * API just for the xml translators. Null in the model for a containment
+ * object corresponds to no persistence-unit-defaults xml tag in the xml file.
+ * We check for whether any features are set in the model and return null for
+ * persistenceUnitDefaultsForXml if there aren't any. Otherwise we return
+ * the persistenceUnitDefaultsInternal that has already been created.
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Persistence Unit Defaults For Xml</em>' reference.
+ * @see #setPersistenceUnitDefaultsForXml(PersistenceUnitDefaultsForXml)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitMetadataForXml_PersistenceUnitDefaultsForXml()
+ * @model resolveProxies="false" volatile="true"
+ * @generated NOT
+ */
+ public PersistenceUnitDefaultsForXml getPersistenceUnitDefaultsForXml() {
+ if (getPersistenceUnitDefaultsInternal().isAllFeaturesUnset()) {
+ return null;
+ }
+ return getPersistenceUnitDefaultsInternal();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataInternal#getPersistenceUnitDefaultsForXml <em>Persistence Unit Defaults For Xml</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Persistence Unit Defaults For Xml</em>' reference.
+ * @see #getPersistenceUnitDefaultsForXml()
+ * @generated NOT
+ */
+ public void setPersistenceUnitDefaultsForXmlGen(PersistenceUnitDefaultsForXml newPersistenceUnitDefaultsForXml) {
+ PersistenceUnitDefaultsForXml oldValue = newPersistenceUnitDefaultsForXml == null ? (PersistenceUnitDefaultsForXml) getPersistenceUnitDefaults() : null;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__PERSISTENCE_UNIT_DEFAULTS_FOR_XML, oldValue, newPersistenceUnitDefaultsForXml));
+ }
+
+ public void setPersistenceUnitDefaultsForXml(PersistenceUnitDefaultsForXml newPersistenceUnitDefaultsForXml) {
+ setPersistenceUnitDefaultsForXmlGen(newPersistenceUnitDefaultsForXml);
+ if (newPersistenceUnitDefaultsForXml == null) {
+ getPersistenceUnitDefaultsInternal().unsetAllAttributes();
+ }
+ }
+
+ public void makePersistenceUnitDefaultsForXmlNull() {
+ setPersistenceUnitDefaultsForXmlGen(null);
+ if (isAllFeaturesUnset()) {
+ getEntityMappings().makePersistenceUnitMetadataForXmlNull();
+ }
+ }
+
+ public void makePersistenceUnitDefaultsForXmlNonNull() {
+ setPersistenceUnitDefaultsForXmlGen(getPersistenceUnitDefaultsForXml());
+ getEntityMappings().makePersistenceUnitMetadataForXmlNonNull();
+ }
+
+ private EntityMappingsInternal getEntityMappings() {
+ return (EntityMappingsInternal) eContainer();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Xml Mapping Metadata Complete</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Xml Mapping Metadata Complete</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Xml Mapping Metadata Complete</em>' attribute.
+ * @see #setXmlMappingMetadataComplete(boolean)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitMetadata_XmlMappingMetadataComplete()
+ * @model volatile="true"
+ * @generated NOT
+ */
+ public boolean isXmlMappingMetadataComplete() {
+ return isXmlMappingMetadataCompleteInternal();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataInternal#isXmlMappingMetadataComplete <em>Xml Mapping Metadata Complete</em>}' attribute.
+ * This api should be used by the UI. It calls the appropriate
+ * internal api for updating the xml. It also handles setting container
+ * objects to null for the xml. If access is set to the default, empty xml containment
+ * tags will be removed when they no longer contain any other xml tags.
+ * This is done in the UI method because we do not want the same behavior
+ * when setting the access from the xml, we never want to change the xml
+ * as the user is directly edting the xml.
+ * @param value the new value of the '<em>Xml Mapping Metadata Complete</em>' attribute.
+ * @see #isXmlMappingMetadataComplete()
+ * @generated NOT
+ */
+ public void setXmlMappingMetadataComplete(boolean newXmlMappingMetadataComplete) {
+ setXmlMappingMetadataCompleteInternal(newXmlMappingMetadataComplete);
+ if (newXmlMappingMetadataComplete != XML_MAPPING_METADATA_COMPLETE_EDEFAULT) {
+ getEntityMappings().makePersistenceUnitMetadataForXmlNonNull();
+ }
+ setXmlMappingMetadataCompleteForXml(newXmlMappingMetadataComplete);
+ if (isAllFeaturesUnset()) {
+ getEntityMappings().makePersistenceUnitMetadataForXmlNull();
+ }
+ }
+
+ /**
+ * Returns the value of the '<em><b>Persistence Unit Defaults</b></em>' reference.
+ * The default value is <code>""</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Persistence Unit Defaults</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Persistence Unit Defaults</em>' reference.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitMetadata_PersistenceUnitDefaults()
+ * @model resolveProxies="false" changeable="false" volatile="true"
+ * @generated NOT
+ */
+ public PersistenceUnitDefaults getPersistenceUnitDefaults() {
+ return getPersistenceUnitDefaultsInternal();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Xml Mapping Metadata Complete Internal</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Xml Mapping Metadata Complete Internal</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Xml Mapping Metadata Complete Internal</em>' attribute.
+ * @see #setXmlMappingMetadataCompleteInternal(boolean)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitMetadataInternal_XmlMappingMetadataCompleteInternal()
+ * @model
+ * @generated
+ */
+ public boolean isXmlMappingMetadataCompleteInternal() {
+ return xmlMappingMetadataCompleteInternal;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataInternal#isXmlMappingMetadataCompleteInternal <em>Xml Mapping Metadata Complete Internal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Xml Mapping Metadata Complete Internal</em>' attribute.
+ * @see #isXmlMappingMetadataCompleteInternal()
+ * @generated NOT
+ */
+ public void setXmlMappingMetadataCompleteInternal(boolean newXmlMappingMetadataCompleteInternal) {
+ boolean oldXmlMappingMetadataCompleteInternal = xmlMappingMetadataCompleteInternal;
+ xmlMappingMetadataCompleteInternal = newXmlMappingMetadataCompleteInternal;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__XML_MAPPING_METADATA_COMPLETE_INTERNAL, oldXmlMappingMetadataCompleteInternal, xmlMappingMetadataCompleteInternal));
+ //notification so the UI is updated when the xml changes, can't call the UI api
+ //because it has other side effects
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__XML_MAPPING_METADATA_COMPLETE, oldXmlMappingMetadataCompleteInternal, xmlMappingMetadataCompleteInternal));
+ }
+ }
+
+ /**
+ * Returns the value of the '<em><b>Persistence Unit Defaults Internal</b></em>' containment reference.
+ * The default value is <code>""</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Persistence Unit Defaults Internal</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Persistence Unit Defaults Internal</em>' containment reference.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getPersistenceUnitMetadataInternal_PersistenceUnitDefaultsInternal()
+ * @model containment="true" required="true" changeable="false"
+ * @generated
+ */
+ public PersistenceUnitDefaultsInternal getPersistenceUnitDefaultsInternal() {
+ return persistenceUnitDefaultsInternal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetPersistenceUnitDefaultsInternal(PersistenceUnitDefaultsInternal newPersistenceUnitDefaultsInternal, NotificationChain msgs) {
+ PersistenceUnitDefaultsInternal oldPersistenceUnitDefaultsInternal = persistenceUnitDefaultsInternal;
+ persistenceUnitDefaultsInternal = newPersistenceUnitDefaultsInternal;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__PERSISTENCE_UNIT_DEFAULTS_INTERNAL, oldPersistenceUnitDefaultsInternal, newPersistenceUnitDefaultsInternal);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__PERSISTENCE_UNIT_DEFAULTS_INTERNAL :
+ return basicSetPersistenceUnitDefaultsInternal(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 OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__XML_MAPPING_METADATA_COMPLETE_FOR_XML :
+ return isXmlMappingMetadataCompleteForXml() ? Boolean.TRUE : Boolean.FALSE;
+ case OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__PERSISTENCE_UNIT_DEFAULTS_FOR_XML :
+ return getPersistenceUnitDefaultsForXml();
+ case OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__XML_MAPPING_METADATA_COMPLETE :
+ return isXmlMappingMetadataComplete() ? Boolean.TRUE : Boolean.FALSE;
+ case OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__PERSISTENCE_UNIT_DEFAULTS :
+ return getPersistenceUnitDefaults();
+ case OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__XML_MAPPING_METADATA_COMPLETE_INTERNAL :
+ return isXmlMappingMetadataCompleteInternal() ? Boolean.TRUE : Boolean.FALSE;
+ case OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__PERSISTENCE_UNIT_DEFAULTS_INTERNAL :
+ return getPersistenceUnitDefaultsInternal();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__XML_MAPPING_METADATA_COMPLETE_FOR_XML :
+ setXmlMappingMetadataCompleteForXml(((Boolean) newValue).booleanValue());
+ return;
+ case OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__PERSISTENCE_UNIT_DEFAULTS_FOR_XML :
+ setPersistenceUnitDefaultsForXml((PersistenceUnitDefaultsForXml) newValue);
+ return;
+ case OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__XML_MAPPING_METADATA_COMPLETE :
+ setXmlMappingMetadataComplete(((Boolean) newValue).booleanValue());
+ return;
+ case OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__XML_MAPPING_METADATA_COMPLETE_INTERNAL :
+ setXmlMappingMetadataCompleteInternal(((Boolean) newValue).booleanValue());
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__XML_MAPPING_METADATA_COMPLETE_FOR_XML :
+ setXmlMappingMetadataCompleteForXml(XML_MAPPING_METADATA_COMPLETE_FOR_XML_EDEFAULT);
+ return;
+ case OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__PERSISTENCE_UNIT_DEFAULTS_FOR_XML :
+ setPersistenceUnitDefaultsForXml((PersistenceUnitDefaultsForXml) null);
+ return;
+ case OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__XML_MAPPING_METADATA_COMPLETE :
+ setXmlMappingMetadataComplete(XML_MAPPING_METADATA_COMPLETE_EDEFAULT);
+ return;
+ case OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__XML_MAPPING_METADATA_COMPLETE_INTERNAL :
+ setXmlMappingMetadataCompleteInternal(XML_MAPPING_METADATA_COMPLETE_INTERNAL_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__XML_MAPPING_METADATA_COMPLETE_FOR_XML :
+ return isXmlMappingMetadataCompleteForXml() != XML_MAPPING_METADATA_COMPLETE_FOR_XML_EDEFAULT;
+ case OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__PERSISTENCE_UNIT_DEFAULTS_FOR_XML :
+ return getPersistenceUnitDefaultsForXml() != null;
+ case OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__XML_MAPPING_METADATA_COMPLETE :
+ return isXmlMappingMetadataComplete() != XML_MAPPING_METADATA_COMPLETE_EDEFAULT;
+ case OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__PERSISTENCE_UNIT_DEFAULTS :
+ return getPersistenceUnitDefaults() != null;
+ case OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__XML_MAPPING_METADATA_COMPLETE_INTERNAL :
+ return xmlMappingMetadataCompleteInternal != XML_MAPPING_METADATA_COMPLETE_INTERNAL_EDEFAULT;
+ case OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__PERSISTENCE_UNIT_DEFAULTS_INTERNAL :
+ return persistenceUnitDefaultsInternal != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == PersistenceUnitMetadataForXml.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__XML_MAPPING_METADATA_COMPLETE_FOR_XML :
+ return OrmPackage.PERSISTENCE_UNIT_METADATA_FOR_XML__XML_MAPPING_METADATA_COMPLETE_FOR_XML;
+ case OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__PERSISTENCE_UNIT_DEFAULTS_FOR_XML :
+ return OrmPackage.PERSISTENCE_UNIT_METADATA_FOR_XML__PERSISTENCE_UNIT_DEFAULTS_FOR_XML;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == PersistenceUnitMetadata.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__XML_MAPPING_METADATA_COMPLETE :
+ return OrmPackage.PERSISTENCE_UNIT_METADATA__XML_MAPPING_METADATA_COMPLETE;
+ case OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__PERSISTENCE_UNIT_DEFAULTS :
+ return OrmPackage.PERSISTENCE_UNIT_METADATA__PERSISTENCE_UNIT_DEFAULTS;
+ 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 == PersistenceUnitMetadataForXml.class) {
+ switch (baseFeatureID) {
+ case OrmPackage.PERSISTENCE_UNIT_METADATA_FOR_XML__XML_MAPPING_METADATA_COMPLETE_FOR_XML :
+ return OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__XML_MAPPING_METADATA_COMPLETE_FOR_XML;
+ case OrmPackage.PERSISTENCE_UNIT_METADATA_FOR_XML__PERSISTENCE_UNIT_DEFAULTS_FOR_XML :
+ return OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__PERSISTENCE_UNIT_DEFAULTS_FOR_XML;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == PersistenceUnitMetadata.class) {
+ switch (baseFeatureID) {
+ case OrmPackage.PERSISTENCE_UNIT_METADATA__XML_MAPPING_METADATA_COMPLETE :
+ return OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__XML_MAPPING_METADATA_COMPLETE;
+ case OrmPackage.PERSISTENCE_UNIT_METADATA__PERSISTENCE_UNIT_DEFAULTS :
+ return OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__PERSISTENCE_UNIT_DEFAULTS;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (xmlMappingMetadataCompleteInternal: ");
+ result.append(xmlMappingMetadataCompleteInternal);
+ result.append(')');
+ return result.toString();
+ }
+
+ /**
+ * Call this when the persistence-unit-metadata tag is removed
+ * from the xml, need to make sure all the model attributes are set to the default
+ */
+ protected void unsetAllAttributes() {
+ eUnset(OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL__XML_MAPPING_METADATA_COMPLETE_INTERNAL);
+ getPersistenceUnitDefaultsInternal().unsetAllAttributes();
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlAssociationOverride.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlAssociationOverride.java
new file mode 100644
index 0000000000..e890df0c3e
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlAssociationOverride.java
@@ -0,0 +1,281 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+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.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.mappings.IAssociationOverride;
+import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.IOverride;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Association Override</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlAssociationOverride()
+ * @model kind="class"
+ * @generated
+ */
+public class XmlAssociationOverride extends XmlOverride
+ implements IAssociationOverride
+{
+ /**
+ * The cached value of the '{@link #getSpecifiedJoinColumns() <em>Specified Join Columns</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedJoinColumns()
+ * @generated
+ * @ordered
+ */
+ protected EList<IJoinColumn> specifiedJoinColumns;
+
+ /**
+ * The cached value of the '{@link #getDefaultJoinColumns() <em>Default Join Columns</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultJoinColumns()
+ * @generated
+ * @ordered
+ */
+ protected EList<IJoinColumn> defaultJoinColumns;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XmlAssociationOverride() {
+ super();
+ }
+
+ protected XmlAssociationOverride(IOverride.Owner owner) {
+ super(owner);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_ASSOCIATION_OVERRIDE;
+ }
+
+ public EList<IJoinColumn> getJoinColumns() {
+ return this.getSpecifiedJoinColumns().isEmpty() ? this.getDefaultJoinColumns() : this.getSpecifiedJoinColumns();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Join Columns</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>Specified Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIAssociationOverride_SpecifiedJoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IJoinColumn" containment="true"
+ * @generated
+ */
+ public EList<IJoinColumn> getSpecifiedJoinColumns() {
+ if (specifiedJoinColumns == null) {
+ specifiedJoinColumns = new EObjectContainmentEList<IJoinColumn>(IJoinColumn.class, this, OrmPackage.XML_ASSOCIATION_OVERRIDE__SPECIFIED_JOIN_COLUMNS);
+ }
+ return specifiedJoinColumns;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Join Columns</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>Default Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIAssociationOverride_DefaultJoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IJoinColumn" containment="true"
+ * @generated
+ */
+ public EList<IJoinColumn> getDefaultJoinColumns() {
+ if (defaultJoinColumns == null) {
+ defaultJoinColumns = new EObjectContainmentEList<IJoinColumn>(IJoinColumn.class, this, OrmPackage.XML_ASSOCIATION_OVERRIDE__DEFAULT_JOIN_COLUMNS);
+ }
+ return defaultJoinColumns;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case OrmPackage.XML_ASSOCIATION_OVERRIDE__JOIN_COLUMNS :
+ return ((InternalEList<?>) getJoinColumns()).basicRemove(otherEnd, msgs);
+ case OrmPackage.XML_ASSOCIATION_OVERRIDE__SPECIFIED_JOIN_COLUMNS :
+ return ((InternalEList<?>) getSpecifiedJoinColumns()).basicRemove(otherEnd, msgs);
+ case OrmPackage.XML_ASSOCIATION_OVERRIDE__DEFAULT_JOIN_COLUMNS :
+ return ((InternalEList<?>) getDefaultJoinColumns()).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 OrmPackage.XML_ASSOCIATION_OVERRIDE__JOIN_COLUMNS :
+ return getJoinColumns();
+ case OrmPackage.XML_ASSOCIATION_OVERRIDE__SPECIFIED_JOIN_COLUMNS :
+ return getSpecifiedJoinColumns();
+ case OrmPackage.XML_ASSOCIATION_OVERRIDE__DEFAULT_JOIN_COLUMNS :
+ return getDefaultJoinColumns();
+ }
+ 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 OrmPackage.XML_ASSOCIATION_OVERRIDE__SPECIFIED_JOIN_COLUMNS :
+ getSpecifiedJoinColumns().clear();
+ getSpecifiedJoinColumns().addAll((Collection<? extends IJoinColumn>) newValue);
+ return;
+ case OrmPackage.XML_ASSOCIATION_OVERRIDE__DEFAULT_JOIN_COLUMNS :
+ getDefaultJoinColumns().clear();
+ getDefaultJoinColumns().addAll((Collection<? extends IJoinColumn>) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_ASSOCIATION_OVERRIDE__SPECIFIED_JOIN_COLUMNS :
+ getSpecifiedJoinColumns().clear();
+ return;
+ case OrmPackage.XML_ASSOCIATION_OVERRIDE__DEFAULT_JOIN_COLUMNS :
+ getDefaultJoinColumns().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_ASSOCIATION_OVERRIDE__JOIN_COLUMNS :
+ return !getJoinColumns().isEmpty();
+ case OrmPackage.XML_ASSOCIATION_OVERRIDE__SPECIFIED_JOIN_COLUMNS :
+ return specifiedJoinColumns != null && !specifiedJoinColumns.isEmpty();
+ case OrmPackage.XML_ASSOCIATION_OVERRIDE__DEFAULT_JOIN_COLUMNS :
+ return defaultJoinColumns != null && !defaultJoinColumns.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IAssociationOverride.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_ASSOCIATION_OVERRIDE__JOIN_COLUMNS :
+ return JpaCoreMappingsPackage.IASSOCIATION_OVERRIDE__JOIN_COLUMNS;
+ case OrmPackage.XML_ASSOCIATION_OVERRIDE__SPECIFIED_JOIN_COLUMNS :
+ return JpaCoreMappingsPackage.IASSOCIATION_OVERRIDE__SPECIFIED_JOIN_COLUMNS;
+ case OrmPackage.XML_ASSOCIATION_OVERRIDE__DEFAULT_JOIN_COLUMNS :
+ return JpaCoreMappingsPackage.IASSOCIATION_OVERRIDE__DEFAULT_JOIN_COLUMNS;
+ 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 == IAssociationOverride.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IASSOCIATION_OVERRIDE__JOIN_COLUMNS :
+ return OrmPackage.XML_ASSOCIATION_OVERRIDE__JOIN_COLUMNS;
+ case JpaCoreMappingsPackage.IASSOCIATION_OVERRIDE__SPECIFIED_JOIN_COLUMNS :
+ return OrmPackage.XML_ASSOCIATION_OVERRIDE__SPECIFIED_JOIN_COLUMNS;
+ case JpaCoreMappingsPackage.IASSOCIATION_OVERRIDE__DEFAULT_JOIN_COLUMNS :
+ return OrmPackage.XML_ASSOCIATION_OVERRIDE__DEFAULT_JOIN_COLUMNS;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ // ********** IAssociationOverride implementation **********
+ public IJoinColumn createJoinColumn(int index) {
+ return this.createXmlJoinColumn(index);
+ }
+
+ private XmlJoinColumn createXmlJoinColumn(int index) {
+ return OrmFactory.eINSTANCE.createXmlJoinColumn(new JoinColumnOwner(this));
+ //return XmlJoinColumn.createJoinTableJoinColumn(new JoinColumnOwner(), this.getMember(), index);
+ }
+
+ public boolean containsSpecifiedJoinColumns() {
+ return !this.getSpecifiedJoinColumns().isEmpty();
+ }
+
+ public ITypeMapping typeMapping() {
+ return (ITypeMapping) eContainer();
+ }
+} // XmlAssociationOverride
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlAttributeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlAttributeMapping.java
new file mode 100644
index 0000000000..dd7c123e60
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlAttributeMapping.java
@@ -0,0 +1,361 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+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.jpt.core.internal.IAttributeMapping;
+import org.eclipse.jpt.core.internal.IJpaContentNode;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.XmlEObject;
+import org.eclipse.jpt.core.internal.content.orm.resource.OrmXmlMapper;
+import org.eclipse.jpt.core.internal.emfutility.DOMUtilities;
+import org.eclipse.jpt.core.internal.mappings.INamedColumn;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+import org.eclipse.jpt.db.internal.Table;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Attribute Mapping</b></em>'.
+ * Discussion of morphing mappings:<ol>
+
+ * <li> Each concrete subclass must override the method initializeOn(MWMapping newMapping)
+ * and call the appropriate initializeFromMW___Mapping(MW___Mapping oldMapping).
+ * [This is call double-dispatching.]
+ * We could have overloaded the same method name (e.g. initializeFrom(MW___Mapping oldMapping))
+ * but the resulting confusion is not worth it. "Upcasting" just makes this really fuzzy....
+ *
+ * <il> If necessary, each subclass (concrete and abstract) should override
+ * the initializeFromMW___Mapping(MW___Mapping oldMapping) method. This override
+ * should first call super.initializeFromMW___Mapping(MW___Mapping oldMapping); then
+ * it should initialize only the properties that are defined by it that have
+ * corresponding properties in the oldMapping.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.XmlAttributeMapping#getPersistentAttribute <em>Persistent Attribute</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlAttributeMapping()
+ * @model kind="class" abstract="true"
+ * @generated
+ */
+public abstract class XmlAttributeMapping extends XmlEObject
+ implements IAttributeMapping
+{
+ /**
+ * The cached value of the '{@link #getPersistentAttribute() <em>Persistent Attribute</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPersistentAttribute()
+ * @generated
+ * @ordered
+ */
+ protected XmlPersistentAttribute persistentAttribute;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XmlAttributeMapping() {
+ super();
+ }
+
+ protected INamedColumn.Owner buildOwner() {
+ return new INamedColumn.Owner() {
+ public ITextRange getTextRange() {
+ return XmlAttributeMapping.this.getTextRange();
+ }
+
+ public ITypeMapping getTypeMapping() {
+ return XmlAttributeMapping.this.typeMapping();
+ }
+
+ public Table dbTable(String tableName) {
+ return getTypeMapping().dbTable(tableName);
+ }
+ };
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_ATTRIBUTE_MAPPING;
+ }
+
+ public XmlPersistentType getPersistentType() {
+ return (XmlPersistentType) eContainer();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Persistent Attribute</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Persistent Attribute</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Persistent Attribute</em>' containment reference.
+ * @see #setPersistentAttribute(XmlPersistentAttribute)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlAttributeMapping_PersistentAttribute()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ public XmlPersistentAttribute getPersistentAttribute() {
+ return persistentAttribute;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetPersistentAttribute(XmlPersistentAttribute newPersistentAttribute, NotificationChain msgs) {
+ XmlPersistentAttribute oldPersistentAttribute = persistentAttribute;
+ persistentAttribute = newPersistentAttribute;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OrmPackage.XML_ATTRIBUTE_MAPPING__PERSISTENT_ATTRIBUTE, oldPersistentAttribute, newPersistentAttribute);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlAttributeMapping#getPersistentAttribute <em>Persistent Attribute</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Persistent Attribute</em>' containment reference.
+ * @see #getPersistentAttribute()
+ * @generated
+ */
+ public void setPersistentAttribute(XmlPersistentAttribute newPersistentAttribute) {
+ if (newPersistentAttribute != persistentAttribute) {
+ NotificationChain msgs = null;
+ if (persistentAttribute != null)
+ msgs = ((InternalEObject) persistentAttribute).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OrmPackage.XML_ATTRIBUTE_MAPPING__PERSISTENT_ATTRIBUTE, null, msgs);
+ if (newPersistentAttribute != null)
+ msgs = ((InternalEObject) newPersistentAttribute).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OrmPackage.XML_ATTRIBUTE_MAPPING__PERSISTENT_ATTRIBUTE, null, msgs);
+ msgs = basicSetPersistentAttribute(newPersistentAttribute, msgs);
+ if (msgs != null)
+ msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_ATTRIBUTE_MAPPING__PERSISTENT_ATTRIBUTE, newPersistentAttribute, newPersistentAttribute));
+ }
+
+ public boolean isDefault() {
+ return false;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case OrmPackage.XML_ATTRIBUTE_MAPPING__PERSISTENT_ATTRIBUTE :
+ return basicSetPersistentAttribute(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 OrmPackage.XML_ATTRIBUTE_MAPPING__PERSISTENT_ATTRIBUTE :
+ return getPersistentAttribute();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case OrmPackage.XML_ATTRIBUTE_MAPPING__PERSISTENT_ATTRIBUTE :
+ setPersistentAttribute((XmlPersistentAttribute) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_ATTRIBUTE_MAPPING__PERSISTENT_ATTRIBUTE :
+ setPersistentAttribute((XmlPersistentAttribute) null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_ATTRIBUTE_MAPPING__PERSISTENT_ATTRIBUTE :
+ return persistentAttribute != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * IMPORTANT: See XmlAttributeMapping class comment.
+ * Subclasses should override this method to call the
+ * appropriate initializeFrom___Mapping() method.
+ */
+ protected abstract void initializeOn(XmlAttributeMapping newMapping);
+
+ public void initializeFromXmlAttributeMapping(XmlAttributeMapping oldMapping) {
+ setPersistentAttribute(oldMapping.getPersistentAttribute());
+ }
+
+ public void initializeFromXmlBasicMapping(XmlBasic oldMapping) {
+ initializeFromXmlAttributeMapping(oldMapping);
+ }
+
+ public void initializeFromXmlIdMapping(XmlId oldMapping) {
+ initializeFromXmlAttributeMapping(oldMapping);
+ }
+
+ public void initializeFromXmlTransientMapping(XmlTransient oldMapping) {
+ initializeFromXmlAttributeMapping(oldMapping);
+ }
+
+ public void initializeFromXmlEmbeddedMapping(XmlEmbedded oldMapping) {
+ initializeFromXmlAttributeMapping(oldMapping);
+ }
+
+ public void initializeFromXmlEmbeddedIdMapping(XmlEmbeddedId oldMapping) {
+ initializeFromXmlAttributeMapping(oldMapping);
+ }
+
+ public void initializeFromXmlVersionMapping(XmlVersion oldMapping) {
+ initializeFromXmlAttributeMapping(oldMapping);
+ }
+
+ public void initializeFromXmlRelationshipMapping(XmlRelationshipMapping oldMapping) {
+ initializeFromXmlAttributeMapping(oldMapping);
+ }
+
+ public void initializeFromXmlMulitRelationshipMapping(XmlMultiRelationshipMappingInternal oldMapping) {
+ initializeFromXmlRelationshipMapping(oldMapping);
+ }
+
+ public void initializeFromXmlSingleRelationshipMapping(XmlSingleRelationshipMapping oldMapping) {
+ initializeFromXmlRelationshipMapping(oldMapping);
+ }
+
+ public void initializeFromXmlOneToManyMapping(XmlOneToMany oldMapping) {
+ initializeFromXmlMulitRelationshipMapping(oldMapping);
+ }
+
+ public void initializeFromXmlManyToOneMapping(XmlManyToOne oldMapping) {
+ initializeFromXmlSingleRelationshipMapping(oldMapping);
+ }
+
+ public void initializeFromXmlOneToOneMapping(XmlOneToOne oldMapping) {
+ initializeFromXmlSingleRelationshipMapping(oldMapping);
+ }
+
+ public void initializeFromXmlManyToManyMapping(XmlManyToMany oldMapping) {
+ initializeFromXmlMulitRelationshipMapping(oldMapping);
+ }
+
+ public IJpaContentNode getContentNode(int offset) {
+ return getPersistentAttribute();
+ }
+
+ /**
+ * Attributes are a sequence in the orm schema. We must keep
+ * the list of attributes in the appropriate order so the wtp xml
+ * translators will write them to the xml in that order and they
+ * will adhere to the schema.
+ *
+ * Each concrete subclass of XmlAttributeMapping must implement this
+ * method and return an int that matches it's order in the schema
+ * @return
+ */
+ public abstract int xmlSequence();
+
+ public void initialize() {
+ //do nothing as this will be handle by the Xml Translators
+ }
+
+ public void refreshDefaults(DefaultsContext defaultsContext) {}
+
+ public String primaryKeyColumnName() {
+ return null;
+ }
+
+ public ITypeMapping typeMapping() {
+ return this.getPersistentType().getMapping();
+ }
+
+ public boolean isVirtual() {
+ return getPersistentType().getVirtualAttributeMappings().contains(this);
+ }
+
+ @Override
+ public ITextRange getTextRange() {
+ if (isVirtual()) {
+ return getPersistentType().getAttributesTextRange();
+ }
+ else {
+ return super.getTextRange();
+ }
+ }
+
+ public ITextRange getNameTextRange() {
+ IDOMNode nameNode = (IDOMNode) DOMUtilities.getChildAttributeNode(node, OrmXmlMapper.NAME);
+ if (nameNode != null) {
+ return getTextRange(nameNode);
+ }
+ else {
+ return getTextRange();
+ }
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlAttributeOverride.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlAttributeOverride.java
new file mode 100644
index 0000000000..377b40fa8e
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlAttributeOverride.java
@@ -0,0 +1,323 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+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.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.mappings.IAttributeOverride;
+import org.eclipse.jpt.core.internal.mappings.IColumn;
+import org.eclipse.jpt.core.internal.mappings.IColumnMapping;
+import org.eclipse.jpt.core.internal.mappings.INamedColumn;
+import org.eclipse.jpt.core.internal.mappings.IOverride;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.db.internal.Table;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Attribute Override</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlAttributeOverride()
+ * @model kind="class"
+ * @generated
+ */
+public class XmlAttributeOverride extends XmlOverride
+ implements IAttributeOverride, IXmlColumnMapping
+{
+ /**
+ * The cached value of the '{@link #getColumn() <em>Column</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getColumn()
+ * @generated
+ * @ordered
+ */
+ protected IColumn column;
+
+ protected XmlAttributeOverride() {
+ throw new UnsupportedOperationException();
+ }
+
+ protected XmlAttributeOverride(IOverride.Owner owner) {
+ super(owner);
+ this.column = OrmFactory.eINSTANCE.createXmlColumn(buildColumnOwner());
+ ((InternalEObject) this.column).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OrmPackage.XML_ATTRIBUTE_OVERRIDE__COLUMN, null, null);
+ }
+
+ protected INamedColumn.Owner buildColumnOwner() {
+ return new INamedColumn.Owner() {
+ public ITextRange getTextRange() {
+ return XmlAttributeOverride.this.getTextRange();
+ }
+
+ public ITypeMapping getTypeMapping() {
+ return XmlAttributeOverride.this.getOwner().getTypeMapping();
+ }
+
+ public Table dbTable(String tablename) {
+ return getTypeMapping().dbTable(column.getTable());
+ }
+ };
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_ATTRIBUTE_OVERRIDE;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Column</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Column</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Column</em>' containment reference.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIAttributeOverride_Column()
+ * @model containment="true" required="true" changeable="false"
+ * @generated
+ */
+ public IColumn getColumn() {
+ return column;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetColumn(IColumn newColumn, NotificationChain msgs) {
+ IColumn oldColumn = column;
+ column = newColumn;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OrmPackage.XML_ATTRIBUTE_OVERRIDE__COLUMN, oldColumn, newColumn);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Column For Xml</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Column For Xml</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Column For Xml</em>' reference.
+ * @see #setColumnForXml(XmlColumn)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIXmlColumnMapping_ColumnForXml()
+ * @model resolveProxies="false" volatile="true"
+ * @generated NOT
+ */
+ public XmlColumn getColumnForXml() {
+ if (((XmlColumn) getColumn()).isAllFeaturesUnset()) {
+ return null;
+ }
+ return (XmlColumn) getColumn();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlAttributeOverride#getColumnForXml <em>Column For Xml</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Column For Xml</em>' reference.
+ * @see #getColumnForXml()
+ * @generated NOT
+ */
+ public void setColumnForXmlGen(XmlColumn newColumnForXml) {
+ XmlColumn oldValue = newColumnForXml == null ? (XmlColumn) getColumn() : null;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_ATTRIBUTE_OVERRIDE__COLUMN_FOR_XML, oldValue, newColumnForXml));
+ }
+ }
+
+ public void setColumnForXml(XmlColumn newColumnForXml) {
+ setColumnForXmlGen(newColumnForXml);
+ if (newColumnForXml == null) {
+ ((XmlColumn) getColumn()).unsetAllAttributes();
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated NOT
+ */
+ public void makeColumnForXmlNonNull() {
+ setColumnForXmlGen(getColumnForXml());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated NOT
+ */
+ public void makeColumnForXmlNull() {
+ setColumnForXmlGen(null);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case OrmPackage.XML_ATTRIBUTE_OVERRIDE__COLUMN :
+ return basicSetColumn(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 OrmPackage.XML_ATTRIBUTE_OVERRIDE__COLUMN :
+ return getColumn();
+ case OrmPackage.XML_ATTRIBUTE_OVERRIDE__COLUMN_FOR_XML :
+ return getColumnForXml();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case OrmPackage.XML_ATTRIBUTE_OVERRIDE__COLUMN_FOR_XML :
+ setColumnForXml((XmlColumn) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_ATTRIBUTE_OVERRIDE__COLUMN_FOR_XML :
+ setColumnForXml((XmlColumn) null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_ATTRIBUTE_OVERRIDE__COLUMN :
+ return column != null;
+ case OrmPackage.XML_ATTRIBUTE_OVERRIDE__COLUMN_FOR_XML :
+ return getColumnForXml() != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IColumnMapping.class) {
+ switch (derivedFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IAttributeOverride.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_ATTRIBUTE_OVERRIDE__COLUMN :
+ return JpaCoreMappingsPackage.IATTRIBUTE_OVERRIDE__COLUMN;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IXmlColumnMapping.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_ATTRIBUTE_OVERRIDE__COLUMN_FOR_XML :
+ return OrmPackage.IXML_COLUMN_MAPPING__COLUMN_FOR_XML;
+ 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 == IColumnMapping.class) {
+ switch (baseFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IAttributeOverride.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IATTRIBUTE_OVERRIDE__COLUMN :
+ return OrmPackage.XML_ATTRIBUTE_OVERRIDE__COLUMN;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IXmlColumnMapping.class) {
+ switch (baseFeatureID) {
+ case OrmPackage.IXML_COLUMN_MAPPING__COLUMN_FOR_XML :
+ return OrmPackage.XML_ATTRIBUTE_OVERRIDE__COLUMN_FOR_XML;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlBasic.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlBasic.java
new file mode 100644
index 0000000000..99abe1af11
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlBasic.java
@@ -0,0 +1,699 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+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.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType;
+import org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean;
+import org.eclipse.jpt.core.internal.mappings.EnumType;
+import org.eclipse.jpt.core.internal.mappings.IBasic;
+import org.eclipse.jpt.core.internal.mappings.IColumn;
+import org.eclipse.jpt.core.internal.mappings.IColumnMapping;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.core.internal.mappings.TemporalType;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Basic</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlBasic()
+ * @model kind="class"
+ * @generated
+ */
+public class XmlBasic extends XmlAttributeMapping
+ implements IBasic, IXmlColumnMapping
+{
+ /**
+ * The default value of the '{@link #getFetch() <em>Fetch</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFetch()
+ * @generated
+ * @ordered
+ */
+ protected static final DefaultEagerFetchType FETCH_EDEFAULT = DefaultEagerFetchType.DEFAULT;
+
+ /**
+ * The cached value of the '{@link #getFetch() <em>Fetch</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFetch()
+ * @generated
+ * @ordered
+ */
+ protected DefaultEagerFetchType fetch = FETCH_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getOptional() <em>Optional</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOptional()
+ * @generated
+ * @ordered
+ */
+ protected static final DefaultTrueBoolean OPTIONAL_EDEFAULT = DefaultTrueBoolean.DEFAULT;
+
+ /**
+ * The cached value of the '{@link #getOptional() <em>Optional</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOptional()
+ * @generated
+ * @ordered
+ */
+ protected DefaultTrueBoolean optional = OPTIONAL_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getColumn() <em>Column</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getColumn()
+ * @generated
+ * @ordered
+ */
+ protected IColumn column;
+
+ /**
+ * The default value of the '{@link #isLob() <em>Lob</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isLob()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean LOB_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isLob() <em>Lob</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isLob()
+ * @generated
+ * @ordered
+ */
+ protected boolean lob = LOB_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getTemporal() <em>Temporal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTemporal()
+ * @generated
+ * @ordered
+ */
+ protected static final TemporalType TEMPORAL_EDEFAULT = TemporalType.NULL;
+
+ /**
+ * The cached value of the '{@link #getTemporal() <em>Temporal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTemporal()
+ * @generated
+ * @ordered
+ */
+ protected TemporalType temporal = TEMPORAL_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getEnumerated() <em>Enumerated</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getEnumerated()
+ * @generated
+ * @ordered
+ */
+ protected static final EnumType ENUMERATED_EDEFAULT = EnumType.DEFAULT;
+
+ /**
+ * The cached value of the '{@link #getEnumerated() <em>Enumerated</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getEnumerated()
+ * @generated
+ * @ordered
+ */
+ protected EnumType enumerated = ENUMERATED_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected XmlBasic() {
+ super();
+ this.column = OrmFactory.eINSTANCE.createXmlColumn(buildOwner());
+ ((InternalEObject) this.column).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OrmPackage.XML_BASIC__COLUMN, null, null);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_BASIC;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Column</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Column</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Column</em>' containment reference.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIBasic_Column()
+ * @model containment="true" required="true" changeable="false"
+ * @generated
+ */
+ public IColumn getColumn() {
+ return column;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetColumn(IColumn newColumn, NotificationChain msgs) {
+ IColumn oldColumn = column;
+ column = newColumn;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OrmPackage.XML_BASIC__COLUMN, oldColumn, newColumn);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Fetch</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Fetch</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Fetch</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType
+ * @see #setFetch(DefaultEagerFetchType)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIBasic_Fetch()
+ * @model
+ * @generated
+ */
+ public DefaultEagerFetchType getFetch() {
+ return fetch;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlBasic#getFetch <em>Fetch</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Fetch</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType
+ * @see #getFetch()
+ * @generated
+ */
+ public void setFetch(DefaultEagerFetchType newFetch) {
+ DefaultEagerFetchType oldFetch = fetch;
+ fetch = newFetch == null ? FETCH_EDEFAULT : newFetch;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_BASIC__FETCH, oldFetch, fetch));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Optional</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Optional</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Optional</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean
+ * @see #setOptional(DefaultTrueBoolean)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIBasic_Optional()
+ * @model
+ * @generated
+ */
+ public DefaultTrueBoolean getOptional() {
+ return optional;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlBasic#getOptional <em>Optional</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Optional</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean
+ * @see #getOptional()
+ * @generated
+ */
+ public void setOptional(DefaultTrueBoolean newOptional) {
+ DefaultTrueBoolean oldOptional = optional;
+ optional = newOptional == null ? OPTIONAL_EDEFAULT : newOptional;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_BASIC__OPTIONAL, oldOptional, optional));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Lob</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Lob</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Lob</em>' attribute.
+ * @see #setLob(boolean)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIBasic_Lob()
+ * @model
+ * @generated
+ */
+ public boolean isLob() {
+ return lob;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlBasic#isLob <em>Lob</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Lob</em>' attribute.
+ * @see #isLob()
+ * @generated
+ */
+ public void setLob(boolean newLob) {
+ boolean oldLob = lob;
+ lob = newLob;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_BASIC__LOB, oldLob, lob));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Temporal</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.TemporalType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Temporal</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Temporal</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.TemporalType
+ * @see #setTemporal(TemporalType)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIBasic_Temporal()
+ * @model
+ * @generated
+ */
+ public TemporalType getTemporal() {
+ return temporal;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlBasic#getTemporal <em>Temporal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Temporal</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.TemporalType
+ * @see #getTemporal()
+ * @generated
+ */
+ public void setTemporal(TemporalType newTemporal) {
+ TemporalType oldTemporal = temporal;
+ temporal = newTemporal == null ? TEMPORAL_EDEFAULT : newTemporal;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_BASIC__TEMPORAL, oldTemporal, temporal));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Enumerated</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.EnumType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Enumerated</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Enumerated</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.EnumType
+ * @see #setEnumerated(EnumType)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIBasic_Enumerated()
+ * @model
+ * @generated
+ */
+ public EnumType getEnumerated() {
+ return enumerated;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlBasic#getEnumerated <em>Enumerated</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Enumerated</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.EnumType
+ * @see #getEnumerated()
+ * @generated
+ */
+ public void setEnumerated(EnumType newEnumerated) {
+ EnumType oldEnumerated = enumerated;
+ enumerated = newEnumerated == null ? ENUMERATED_EDEFAULT : newEnumerated;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_BASIC__ENUMERATED, oldEnumerated, enumerated));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Column For Xml</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Column For Xml</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Column For Xml</em>' reference.
+ * @see #setColumnForXml(XmlColumn)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIXmlColumnMapping_ColumnForXml()
+ * @model resolveProxies="false" volatile="true"
+ * @generated NOT
+ */
+ public XmlColumn getColumnForXml() {
+ if (((XmlColumn) getColumn()).isAllFeaturesUnset()) {
+ return null;
+ }
+ return (XmlColumn) getColumn();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlBasic#getColumnForXml <em>Column For Xml</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Column For Xml</em>' reference.
+ * @see #getColumnForXml()
+ * @generated NOT
+ */
+ public void setColumnForXmlGen(XmlColumn newColumnForXml) {
+ XmlColumn oldValue = newColumnForXml == null ? (XmlColumn) getColumn() : null;
+ if (eNotificationRequired()) {
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_BASIC__COLUMN_FOR_XML, oldValue, newColumnForXml));
+ }
+ }
+
+ public void setColumnForXml(XmlColumn newColumnForXml) {
+ setColumnForXmlGen(newColumnForXml);
+ if (newColumnForXml == null) {
+ ((XmlColumn) getColumn()).unsetAllAttributes();
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated NOT
+ */
+ public void makeColumnForXmlNonNull() {
+ setColumnForXmlGen(getColumnForXml());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated NOT
+ */
+ public void makeColumnForXmlNull() {
+ setColumnForXmlGen(null);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case OrmPackage.XML_BASIC__COLUMN :
+ return basicSetColumn(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 OrmPackage.XML_BASIC__FETCH :
+ return getFetch();
+ case OrmPackage.XML_BASIC__OPTIONAL :
+ return getOptional();
+ case OrmPackage.XML_BASIC__COLUMN :
+ return getColumn();
+ case OrmPackage.XML_BASIC__LOB :
+ return isLob() ? Boolean.TRUE : Boolean.FALSE;
+ case OrmPackage.XML_BASIC__TEMPORAL :
+ return getTemporal();
+ case OrmPackage.XML_BASIC__ENUMERATED :
+ return getEnumerated();
+ case OrmPackage.XML_BASIC__COLUMN_FOR_XML :
+ return getColumnForXml();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case OrmPackage.XML_BASIC__FETCH :
+ setFetch((DefaultEagerFetchType) newValue);
+ return;
+ case OrmPackage.XML_BASIC__OPTIONAL :
+ setOptional((DefaultTrueBoolean) newValue);
+ return;
+ case OrmPackage.XML_BASIC__LOB :
+ setLob(((Boolean) newValue).booleanValue());
+ return;
+ case OrmPackage.XML_BASIC__TEMPORAL :
+ setTemporal((TemporalType) newValue);
+ return;
+ case OrmPackage.XML_BASIC__ENUMERATED :
+ setEnumerated((EnumType) newValue);
+ return;
+ case OrmPackage.XML_BASIC__COLUMN_FOR_XML :
+ setColumnForXml((XmlColumn) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_BASIC__FETCH :
+ setFetch(FETCH_EDEFAULT);
+ return;
+ case OrmPackage.XML_BASIC__OPTIONAL :
+ setOptional(OPTIONAL_EDEFAULT);
+ return;
+ case OrmPackage.XML_BASIC__LOB :
+ setLob(LOB_EDEFAULT);
+ return;
+ case OrmPackage.XML_BASIC__TEMPORAL :
+ setTemporal(TEMPORAL_EDEFAULT);
+ return;
+ case OrmPackage.XML_BASIC__ENUMERATED :
+ setEnumerated(ENUMERATED_EDEFAULT);
+ return;
+ case OrmPackage.XML_BASIC__COLUMN_FOR_XML :
+ setColumnForXml((XmlColumn) null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_BASIC__FETCH :
+ return fetch != FETCH_EDEFAULT;
+ case OrmPackage.XML_BASIC__OPTIONAL :
+ return optional != OPTIONAL_EDEFAULT;
+ case OrmPackage.XML_BASIC__COLUMN :
+ return column != null;
+ case OrmPackage.XML_BASIC__LOB :
+ return lob != LOB_EDEFAULT;
+ case OrmPackage.XML_BASIC__TEMPORAL :
+ return temporal != TEMPORAL_EDEFAULT;
+ case OrmPackage.XML_BASIC__ENUMERATED :
+ return enumerated != ENUMERATED_EDEFAULT;
+ case OrmPackage.XML_BASIC__COLUMN_FOR_XML :
+ return getColumnForXml() != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IColumnMapping.class) {
+ switch (derivedFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IBasic.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_BASIC__FETCH :
+ return JpaCoreMappingsPackage.IBASIC__FETCH;
+ case OrmPackage.XML_BASIC__OPTIONAL :
+ return JpaCoreMappingsPackage.IBASIC__OPTIONAL;
+ case OrmPackage.XML_BASIC__COLUMN :
+ return JpaCoreMappingsPackage.IBASIC__COLUMN;
+ case OrmPackage.XML_BASIC__LOB :
+ return JpaCoreMappingsPackage.IBASIC__LOB;
+ case OrmPackage.XML_BASIC__TEMPORAL :
+ return JpaCoreMappingsPackage.IBASIC__TEMPORAL;
+ case OrmPackage.XML_BASIC__ENUMERATED :
+ return JpaCoreMappingsPackage.IBASIC__ENUMERATED;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IXmlColumnMapping.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_BASIC__COLUMN_FOR_XML :
+ return OrmPackage.IXML_COLUMN_MAPPING__COLUMN_FOR_XML;
+ 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 == IColumnMapping.class) {
+ switch (baseFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IBasic.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IBASIC__FETCH :
+ return OrmPackage.XML_BASIC__FETCH;
+ case JpaCoreMappingsPackage.IBASIC__OPTIONAL :
+ return OrmPackage.XML_BASIC__OPTIONAL;
+ case JpaCoreMappingsPackage.IBASIC__COLUMN :
+ return OrmPackage.XML_BASIC__COLUMN;
+ case JpaCoreMappingsPackage.IBASIC__LOB :
+ return OrmPackage.XML_BASIC__LOB;
+ case JpaCoreMappingsPackage.IBASIC__TEMPORAL :
+ return OrmPackage.XML_BASIC__TEMPORAL;
+ case JpaCoreMappingsPackage.IBASIC__ENUMERATED :
+ return OrmPackage.XML_BASIC__ENUMERATED;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IXmlColumnMapping.class) {
+ switch (baseFeatureID) {
+ case OrmPackage.IXML_COLUMN_MAPPING__COLUMN_FOR_XML :
+ return OrmPackage.XML_BASIC__COLUMN_FOR_XML;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (fetch: ");
+ result.append(fetch);
+ result.append(", optional: ");
+ result.append(optional);
+ result.append(", lob: ");
+ result.append(lob);
+ result.append(", temporal: ");
+ result.append(temporal);
+ result.append(", enumerated: ");
+ result.append(enumerated);
+ result.append(')');
+ return result.toString();
+ }
+
+ public String getKey() {
+ return IMappingKeys.BASIC_ATTRIBUTE_MAPPING_KEY;
+ }
+
+ @Override
+ protected void initializeOn(XmlAttributeMapping newMapping) {
+ newMapping.initializeFromXmlBasicMapping(this);
+ }
+
+ @Override
+ public void initializeFromXmlIdMapping(XmlId oldMapping) {
+ super.initializeFromXmlIdMapping(oldMapping);
+ setTemporal(oldMapping.getTemporal());
+ }
+
+ @Override
+ public int xmlSequence() {
+ return 1;
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlBasicProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlBasicProvider.java
new file mode 100644
index 0000000000..5dc3701b62
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlBasicProvider.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.jpt.core.internal.IMappingKeys;
+
+public class XmlBasicProvider implements IXmlAttributeMappingProvider
+{
+ // singleton
+ private static final XmlBasicProvider INSTANCE = new XmlBasicProvider();
+
+ /**
+ * Return the singleton.
+ */
+ public static IXmlAttributeMappingProvider instance() {
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private XmlBasicProvider() {
+ super();
+ }
+
+ public XmlAttributeMapping buildAttributeMapping() {
+ return OrmFactory.eINSTANCE.createXmlBasic();
+ }
+
+ public String key() {
+ return IMappingKeys.BASIC_ATTRIBUTE_MAPPING_KEY;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlColumn.java
new file mode 100644
index 0000000000..e574403e5c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlColumn.java
@@ -0,0 +1,672 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import java.util.Set;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean;
+import org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean;
+import org.eclipse.jpt.core.internal.mappings.IColumn;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.core.internal.platform.BaseJpaPlatform;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Column</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.XmlColumn#getLengthForXml <em>Length For Xml</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.XmlColumn#getPrecisionForXml <em>Precision For Xml</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.XmlColumn#getScaleForXml <em>Scale For Xml</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlColumn()
+ * @model kind="class"
+ * @generated
+ */
+public class XmlColumn extends AbstractXmlColumn implements IColumn
+{
+ /**
+ * The default value of the '{@link #getLength() <em>Length</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLength()
+ * @generated
+ * @ordered
+ */
+ protected static final int LENGTH_EDEFAULT = 255;
+
+ /**
+ * The cached value of the '{@link #getLength() <em>Length</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLength()
+ * @generated
+ * @ordered
+ */
+ protected int length = LENGTH_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getPrecision() <em>Precision</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPrecision()
+ * @generated
+ * @ordered
+ */
+ protected static final int PRECISION_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getPrecision() <em>Precision</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPrecision()
+ * @generated
+ * @ordered
+ */
+ protected int precision = PRECISION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getScale() <em>Scale</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getScale()
+ * @generated
+ * @ordered
+ */
+ protected static final int SCALE_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getScale() <em>Scale</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getScale()
+ * @generated
+ * @ordered
+ */
+ protected int scale = SCALE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getLengthForXml() <em>Length For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLengthForXml()
+ * @generated
+ * @ordered
+ */
+ protected static final int LENGTH_FOR_XML_EDEFAULT = 255;
+
+ /**
+ * The default value of the '{@link #getPrecisionForXml() <em>Precision For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPrecisionForXml()
+ * @generated
+ * @ordered
+ */
+ protected static final int PRECISION_FOR_XML_EDEFAULT = 0;
+
+ /**
+ * The default value of the '{@link #getScaleForXml() <em>Scale For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getScaleForXml()
+ * @generated
+ * @ordered
+ */
+ protected static final int SCALE_FOR_XML_EDEFAULT = 0;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XmlColumn() {
+ super();
+ }
+
+ protected XmlColumn(IColumn.Owner owner) {
+ super(owner);
+ }
+
+ @Override
+ protected void addInsignificantXmlFeatureIdsTo(Set<Integer> insignificantXmlFeatureIds) {
+ super.addInsignificantXmlFeatureIdsTo(insignificantXmlFeatureIds);
+ insignificantXmlFeatureIds.add(OrmPackage.XML_COLUMN__NAME);
+ insignificantXmlFeatureIds.add(OrmPackage.XML_COLUMN__DEFAULT_NAME);
+ insignificantXmlFeatureIds.add(OrmPackage.XML_COLUMN__TABLE);
+ insignificantXmlFeatureIds.add(OrmPackage.XML_COLUMN__DEFAULT_TABLE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_COLUMN;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Length</b></em>' attribute.
+ * The default value is <code>"255"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Length</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Length</em>' attribute.
+ * @see #setLength(int)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIColumn_Length()
+ * @model default="255"
+ * @generated
+ */
+ public int getLength() {
+ return length;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlColumn#getLength <em>Length</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Length</em>' attribute.
+ * @see #getLength()
+ * @generated
+ */
+ public void setLengthGen(int newLength) {
+ int oldLength = length;
+ length = newLength;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_COLUMN__LENGTH, oldLength, length));
+ }
+
+ public void setLength(int newLength) {
+ setLengthGen(newLength);
+ if (newLength != LENGTH_EDEFAULT) {
+ getColumnMapping().makeColumnForXmlNonNull();
+ }
+ setLengthForXml(newLength);
+ if (isAllFeaturesUnset()) {
+ getColumnMapping().makeColumnForXmlNull();
+ }
+ }
+
+ /**
+ * Returns the value of the '<em><b>Precision</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Precision</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Precision</em>' attribute.
+ * @see #setPrecision(int)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIColumn_Precision()
+ * @model
+ * @generated
+ */
+ public int getPrecision() {
+ return precision;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlColumn#getPrecision <em>Precision</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Precision</em>' attribute.
+ * @see #getPrecision()
+ * @generated
+ */
+ public void setPrecisionGen(int newPrecision) {
+ int oldPrecision = precision;
+ precision = newPrecision;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_COLUMN__PRECISION, oldPrecision, precision));
+ }
+
+ public void setPrecision(int newPrecision) {
+ setPrecisionGen(newPrecision);
+ if (newPrecision != PRECISION_EDEFAULT) {
+ getColumnMapping().makeColumnForXmlNonNull();
+ }
+ setPrecisionForXml(newPrecision);
+ if (isAllFeaturesUnset()) {
+ getColumnMapping().makeColumnForXmlNull();
+ }
+ }
+
+ /**
+ * Returns the value of the '<em><b>Scale</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Scale</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Scale</em>' attribute.
+ * @see #setScale(int)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIColumn_Scale()
+ * @model
+ * @generated
+ */
+ public int getScale() {
+ return scale;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlColumn#getScale <em>Scale</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Scale</em>' attribute.
+ * @see #getScale()
+ * @generated
+ */
+ public void setScaleGen(int newScale) {
+ int oldScale = scale;
+ scale = newScale;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_COLUMN__SCALE, oldScale, scale));
+ }
+
+ public void setScale(int newScale) {
+ setScaleGen(newScale);
+ if (newScale != SCALE_EDEFAULT) {
+ getColumnMapping().makeColumnForXmlNonNull();
+ }
+ setScaleForXml(newScale);
+ if (isAllFeaturesUnset()) {
+ getColumnMapping().makeColumnForXmlNull();
+ }
+ }
+
+ /**
+ * Returns the value of the '<em><b>Length For Xml</b></em>' attribute.
+ * The default value is <code>"255"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Length For Xml</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Length For Xml</em>' attribute.
+ * @see #setLengthForXml(int)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlColumn_LengthForXml()
+ * @model default="255" volatile="true"
+ * @generated NOT
+ */
+ public int getLengthForXml() {
+ return getLength();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlColumn#getLengthForXml <em>Length For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Length For Xml</em>' attribute.
+ * @see #getLengthForXml()
+ * @generated NOT
+ */
+ public void setLengthForXml(int newLengthForXml) {
+ setLengthGen(newLengthForXml);
+ if (eNotificationRequired())
+ //pass in oldValue of null because we don't store the value from the xml, see super.eNotify()
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_COLUMN__LENGTH_FOR_XML, null, newLengthForXml));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Precision For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Precision For Xml</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Precision For Xml</em>' attribute.
+ * @see #setPrecisionForXml(int)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlColumn_PrecisionForXml()
+ * @model volatile="true"
+ * @generated NOT
+ */
+ public int getPrecisionForXml() {
+ return getPrecision();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlColumn#getPrecisionForXml <em>Precision For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Precision For Xml</em>' attribute.
+ * @see #getPrecisionForXml()
+ * @generated NOT
+ */
+ public void setPrecisionForXml(int newPrecisionForXml) {
+ setPrecisionGen(newPrecisionForXml);
+ if (eNotificationRequired())
+ //pass in oldValue of null because we don't store the value from the xml, see super.eNotify()
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_COLUMN__PRECISION_FOR_XML, null, newPrecisionForXml));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Scale For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Scale For Xml</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Scale For Xml</em>' attribute.
+ * @see #setScaleForXml(int)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlColumn_ScaleForXml()
+ * @model volatile="true"
+ * @generated NOT
+ */
+ public int getScaleForXml() {
+ return getScale();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlColumn#getScaleForXml <em>Scale For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Scale For Xml</em>' attribute.
+ * @see #getScaleForXml()
+ * @generated NOT
+ */
+ public void setScaleForXml(int newScaleForXml) {
+ setScaleGen(newScaleForXml);
+ if (eNotificationRequired())
+ //pass in oldValue of null because we don't store the value from the xml, see super.eNotify()
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_COLUMN__SCALE_FOR_XML, null, newScaleForXml));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case OrmPackage.XML_COLUMN__LENGTH :
+ return new Integer(getLength());
+ case OrmPackage.XML_COLUMN__PRECISION :
+ return new Integer(getPrecision());
+ case OrmPackage.XML_COLUMN__SCALE :
+ return new Integer(getScale());
+ case OrmPackage.XML_COLUMN__LENGTH_FOR_XML :
+ return new Integer(getLengthForXml());
+ case OrmPackage.XML_COLUMN__PRECISION_FOR_XML :
+ return new Integer(getPrecisionForXml());
+ case OrmPackage.XML_COLUMN__SCALE_FOR_XML :
+ return new Integer(getScaleForXml());
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case OrmPackage.XML_COLUMN__LENGTH :
+ setLength(((Integer) newValue).intValue());
+ return;
+ case OrmPackage.XML_COLUMN__PRECISION :
+ setPrecision(((Integer) newValue).intValue());
+ return;
+ case OrmPackage.XML_COLUMN__SCALE :
+ setScale(((Integer) newValue).intValue());
+ return;
+ case OrmPackage.XML_COLUMN__LENGTH_FOR_XML :
+ setLengthForXml(((Integer) newValue).intValue());
+ return;
+ case OrmPackage.XML_COLUMN__PRECISION_FOR_XML :
+ setPrecisionForXml(((Integer) newValue).intValue());
+ return;
+ case OrmPackage.XML_COLUMN__SCALE_FOR_XML :
+ setScaleForXml(((Integer) newValue).intValue());
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_COLUMN__LENGTH :
+ setLength(LENGTH_EDEFAULT);
+ return;
+ case OrmPackage.XML_COLUMN__PRECISION :
+ setPrecision(PRECISION_EDEFAULT);
+ return;
+ case OrmPackage.XML_COLUMN__SCALE :
+ setScale(SCALE_EDEFAULT);
+ return;
+ case OrmPackage.XML_COLUMN__LENGTH_FOR_XML :
+ setLengthForXml(LENGTH_FOR_XML_EDEFAULT);
+ return;
+ case OrmPackage.XML_COLUMN__PRECISION_FOR_XML :
+ setPrecisionForXml(PRECISION_FOR_XML_EDEFAULT);
+ return;
+ case OrmPackage.XML_COLUMN__SCALE_FOR_XML :
+ setScaleForXml(SCALE_FOR_XML_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_COLUMN__LENGTH :
+ return length != LENGTH_EDEFAULT;
+ case OrmPackage.XML_COLUMN__PRECISION :
+ return precision != PRECISION_EDEFAULT;
+ case OrmPackage.XML_COLUMN__SCALE :
+ return scale != SCALE_EDEFAULT;
+ case OrmPackage.XML_COLUMN__LENGTH_FOR_XML :
+ return getLengthForXml() != LENGTH_FOR_XML_EDEFAULT;
+ case OrmPackage.XML_COLUMN__PRECISION_FOR_XML :
+ return getPrecisionForXml() != PRECISION_FOR_XML_EDEFAULT;
+ case OrmPackage.XML_COLUMN__SCALE_FOR_XML :
+ return getScaleForXml() != SCALE_FOR_XML_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IColumn.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_COLUMN__LENGTH :
+ return JpaCoreMappingsPackage.ICOLUMN__LENGTH;
+ case OrmPackage.XML_COLUMN__PRECISION :
+ return JpaCoreMappingsPackage.ICOLUMN__PRECISION;
+ case OrmPackage.XML_COLUMN__SCALE :
+ return JpaCoreMappingsPackage.ICOLUMN__SCALE;
+ 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 == IColumn.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.ICOLUMN__LENGTH :
+ return OrmPackage.XML_COLUMN__LENGTH;
+ case JpaCoreMappingsPackage.ICOLUMN__PRECISION :
+ return OrmPackage.XML_COLUMN__PRECISION;
+ case JpaCoreMappingsPackage.ICOLUMN__SCALE :
+ return OrmPackage.XML_COLUMN__SCALE;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (length: ");
+ result.append(length);
+ result.append(", precision: ");
+ result.append(precision);
+ result.append(", scale: ");
+ result.append(scale);
+ result.append(')');
+ return result.toString();
+ }
+
+ /**
+ * Call this when the table tag is removed from the xml,
+ * need to make sure all the model attributes are set to the default
+ */
+ protected void unsetAllAttributes() {
+ eUnset(OrmPackage.XML_COLUMN__SPECIFIED_NAME);
+ eUnset(OrmPackage.XML_COLUMN__SPECIFIED_TABLE);
+ eUnset(OrmPackage.XML_COLUMN__COLUMN_DEFINITION);
+ eUnset(OrmPackage.XML_COLUMN__INSERTABLE);
+ eUnset(OrmPackage.XML_COLUMN__LENGTH);
+ eUnset(OrmPackage.XML_COLUMN__NULLABLE);
+ eUnset(OrmPackage.XML_COLUMN__PRECISION);
+ eUnset(OrmPackage.XML_COLUMN__SCALE);
+ eUnset(OrmPackage.XML_COLUMN__UNIQUE);
+ eUnset(OrmPackage.XML_COLUMN__UPDATABLE);
+ }
+
+ public void setSpecifiedName(String newSpecifiedName) {
+ setSpecifiedNameGen(newSpecifiedName);
+ if (newSpecifiedName != SPECIFIED_NAME_EDEFAULT) {
+ getColumnMapping().makeColumnForXmlNonNull();
+ }
+ setSpecifiedNameForXml(newSpecifiedName);
+ if (isAllFeaturesUnset()) {
+ getColumnMapping().makeColumnForXmlNull();
+ }
+ }
+
+ public void setUnique(DefaultFalseBoolean newUnique) {
+ setUniqueGen(newUnique);
+ if (newUnique != UNIQUE_EDEFAULT) {
+ getColumnMapping().makeColumnForXmlNonNull();
+ }
+ setUniqueForXml(newUnique);
+ if (isAllFeaturesUnset()) {
+ getColumnMapping().makeColumnForXmlNull();
+ }
+ }
+
+ public void setNullable(DefaultTrueBoolean newNullable) {
+ setNullableGen(newNullable);
+ if (newNullable != NULLABLE_EDEFAULT) {
+ getColumnMapping().makeColumnForXmlNonNull();
+ }
+ setNullableForXml(newNullable);
+ if (isAllFeaturesUnset()) {
+ getColumnMapping().makeColumnForXmlNull();
+ }
+ }
+
+ public void setInsertable(DefaultTrueBoolean newInsertable) {
+ setInsertableGen(newInsertable);
+ if (newInsertable != INSERTABLE_EDEFAULT) {
+ getColumnMapping().makeColumnForXmlNonNull();
+ }
+ setInsertableForXml(newInsertable);
+ if (isAllFeaturesUnset()) {
+ getColumnMapping().makeColumnForXmlNull();
+ }
+ }
+
+ public void setUpdatable(DefaultTrueBoolean newUpdatable) {
+ setUpdatableGen(newUpdatable);
+ if (newUpdatable != UPDATABLE_EDEFAULT) {
+ getColumnMapping().makeColumnForXmlNonNull();
+ }
+ setUpdatableForXml(newUpdatable);
+ if (isAllFeaturesUnset()) {
+ getColumnMapping().makeColumnForXmlNull();
+ }
+ }
+
+ public void setColumnDefinition(String newColumnDefinition) {
+ setColumnDefinitionGen(newColumnDefinition);
+ if (newColumnDefinition != COLUMN_DEFINITION_EDEFAULT) {
+ getColumnMapping().makeColumnForXmlNonNull();
+ }
+ setColumnDefinitionForXml(newColumnDefinition);
+ if (isAllFeaturesUnset()) {
+ getColumnMapping().makeColumnForXmlNull();
+ }
+ }
+
+ public void setSpecifiedTable(String newSpecifiedTable) {
+ setSpecifiedTableGen(newSpecifiedTable);
+ if (newSpecifiedTable != SPECIFIED_TABLE_EDEFAULT) {
+ getColumnMapping().makeColumnForXmlNonNull();
+ }
+ setSpecifiedTableForXml(newSpecifiedTable);
+ if (isAllFeaturesUnset()) {
+ getColumnMapping().makeColumnForXmlNull();
+ }
+ }
+
+ protected IXmlColumnMapping getColumnMapping() {
+ return (IXmlColumnMapping) eContainer();
+ }
+
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ setDefaultTable((String) defaultsContext.getDefault(BaseJpaPlatform.DEFAULT_COLUMN_TABLE_KEY));
+ setDefaultName((String) defaultsContext.getDefault(BaseJpaPlatform.DEFAULT_COLUMN_NAME_KEY));
+ }
+} // XmlColumn \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlDiscriminatorColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlDiscriminatorColumn.java
new file mode 100644
index 0000000000..2cb70e7d0b
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlDiscriminatorColumn.java
@@ -0,0 +1,922 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jpt.core.internal.XmlEObject;
+import org.eclipse.jpt.core.internal.mappings.DiscriminatorType;
+import org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.db.internal.Table;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Discriminator Column</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.XmlDiscriminatorColumn#getSpecifiedNameForXml <em>Specified Name For Xml</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.XmlDiscriminatorColumn#getDiscriminatorTypeForXml <em>Discriminator Type For Xml</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.XmlDiscriminatorColumn#getColumnDefinitionForXml <em>Column Definition For Xml</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.XmlDiscriminatorColumn#getSpecifiedLengthForXml <em>Specified Length For Xml</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlDiscriminatorColumn()
+ * @model kind="class"
+ * @generated
+ */
+public class XmlDiscriminatorColumn extends XmlEObject
+ implements IDiscriminatorColumn
+{
+ /**
+ * The default value of the '{@link #getDefaultName() <em>Default Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultName()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultName() <em>Default Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultName()
+ * @generated
+ * @ordered
+ */
+ protected String defaultName = DEFAULT_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getSpecifiedName() <em>Specified Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedName()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedName() <em>Specified Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedName()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedName = SPECIFIED_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getDiscriminatorType() <em>Discriminator Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDiscriminatorType()
+ * @generated
+ * @ordered
+ */
+ protected static final DiscriminatorType DISCRIMINATOR_TYPE_EDEFAULT = DiscriminatorType.DEFAULT;
+
+ /**
+ * The cached value of the '{@link #getDiscriminatorType() <em>Discriminator Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDiscriminatorType()
+ * @generated
+ * @ordered
+ */
+ protected DiscriminatorType discriminatorType = DISCRIMINATOR_TYPE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getColumnDefinition() <em>Column Definition</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getColumnDefinition()
+ * @generated
+ * @ordered
+ */
+ protected static final String COLUMN_DEFINITION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getColumnDefinition() <em>Column Definition</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getColumnDefinition()
+ * @generated
+ * @ordered
+ */
+ protected String columnDefinition = COLUMN_DEFINITION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultLength() <em>Default Length</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultLength()
+ * @generated
+ * @ordered
+ */
+ protected static final int DEFAULT_LENGTH_EDEFAULT = 31;
+
+ /**
+ * The cached value of the '{@link #getDefaultLength() <em>Default Length</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultLength()
+ * @generated
+ * @ordered
+ */
+ protected int defaultLength = DEFAULT_LENGTH_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getSpecifiedLength() <em>Specified Length</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedLength()
+ * @generated
+ * @ordered
+ */
+ protected static final int SPECIFIED_LENGTH_EDEFAULT = -1;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedLength() <em>Specified Length</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedLength()
+ * @generated
+ * @ordered
+ */
+ protected int specifiedLength = SPECIFIED_LENGTH_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getLength() <em>Length</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLength()
+ * @generated
+ * @ordered
+ */
+ protected static final int LENGTH_EDEFAULT = 0;
+
+ /**
+ * The default value of the '{@link #getSpecifiedNameForXml() <em>Specified Name For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedNameForXml()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_NAME_FOR_XML_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getDiscriminatorTypeForXml() <em>Discriminator Type For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDiscriminatorTypeForXml()
+ * @generated
+ * @ordered
+ */
+ protected static final DiscriminatorType DISCRIMINATOR_TYPE_FOR_XML_EDEFAULT = DiscriminatorType.DEFAULT;
+
+ /**
+ * The default value of the '{@link #getColumnDefinitionForXml() <em>Column Definition For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getColumnDefinitionForXml()
+ * @generated
+ * @ordered
+ */
+ protected static final String COLUMN_DEFINITION_FOR_XML_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getSpecifiedLengthForXml() <em>Specified Length For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedLengthForXml()
+ * @generated
+ * @ordered
+ */
+ protected static final int SPECIFIED_LENGTH_FOR_XML_EDEFAULT = 0;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XmlDiscriminatorColumn() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_DISCRIMINATOR_COLUMN;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Name</em>' attribute.
+ * @see #setDefaultName(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIDiscriminatorColumn_DefaultName()
+ * @model
+ * @generated
+ */
+ public String getDefaultName() {
+ return defaultName;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlDiscriminatorColumn#getDefaultName <em>Default Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Default Name</em>' attribute.
+ * @see #getDefaultName()
+ * @generated
+ */
+ public void setDefaultName(String newDefaultName) {
+ String oldDefaultName = defaultName;
+ defaultName = newDefaultName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_DISCRIMINATOR_COLUMN__DEFAULT_NAME, oldDefaultName, defaultName));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Name</em>' attribute.
+ * @see #setSpecifiedName(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIDiscriminatorColumn_SpecifiedName()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedName() {
+ return specifiedName;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlDiscriminatorColumn#getSpecifiedName <em>Specified Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Name</em>' attribute.
+ * @see #getSpecifiedName()
+ * @generated
+ */
+ public void setSpecifiedNameGen(String newSpecifiedName) {
+ String oldSpecifiedName = specifiedName;
+ specifiedName = newSpecifiedName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_DISCRIMINATOR_COLUMN__SPECIFIED_NAME, oldSpecifiedName, specifiedName));
+ }
+
+ public void setSpecifiedName(String newSpecifiedName) {
+ setSpecifiedNameGen(newSpecifiedName);
+ if (newSpecifiedName != SPECIFIED_NAME_EDEFAULT) {
+ entity().makeDiscriminatorColumnForXmlNonNull();
+ }
+ setSpecifiedNameForXml(newSpecifiedName);
+ if (isAllFeaturesUnset()) {
+ entity().makeDiscriminatorColumnForXmlNull();
+ }
+ }
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIDiscriminatorColumn_Name()
+ * @model transient="true" changeable="false" volatile="true" derived="true"
+ * @generated NOT
+ */
+ public String getName() {
+ return (this.getSpecifiedName() == null) ? getDefaultName() : this.getSpecifiedName();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Discriminator Type</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DiscriminatorType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Discriminator 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>Discriminator Type</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DiscriminatorType
+ * @see #setDiscriminatorType(DiscriminatorType)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIDiscriminatorColumn_DiscriminatorType()
+ * @model
+ * @generated
+ */
+ public DiscriminatorType getDiscriminatorType() {
+ return discriminatorType;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlDiscriminatorColumn#getDiscriminatorType <em>Discriminator Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Discriminator Type</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DiscriminatorType
+ * @see #getDiscriminatorType()
+ * @generated
+ */
+ public void setDiscriminatorTypeGen(DiscriminatorType newDiscriminatorType) {
+ DiscriminatorType oldDiscriminatorType = discriminatorType;
+ discriminatorType = newDiscriminatorType == null ? DISCRIMINATOR_TYPE_EDEFAULT : newDiscriminatorType;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE, oldDiscriminatorType, discriminatorType));
+ }
+
+ public void setDiscriminatorType(DiscriminatorType newDiscriminatorType) {
+ setDiscriminatorTypeGen(newDiscriminatorType);
+ if (newDiscriminatorType != DISCRIMINATOR_TYPE_EDEFAULT) {
+ entity().makeDiscriminatorColumnForXmlNonNull();
+ }
+ setDiscriminatorTypeForXml(newDiscriminatorType);
+ if (isAllFeaturesUnset()) {
+ entity().makeDiscriminatorColumnForXmlNull();
+ }
+ }
+
+ /**
+ * Returns the value of the '<em><b>Column Definition</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Column Definition</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Column Definition</em>' attribute.
+ * @see #setColumnDefinition(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIDiscriminatorColumn_ColumnDefinition()
+ * @model
+ * @generated
+ */
+ public String getColumnDefinition() {
+ return columnDefinition;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlDiscriminatorColumn#getColumnDefinition <em>Column Definition</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Column Definition</em>' attribute.
+ * @see #getColumnDefinition()
+ * @generated
+ */
+ public void setColumnDefinitionGen(String newColumnDefinition) {
+ String oldColumnDefinition = columnDefinition;
+ columnDefinition = newColumnDefinition;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_DISCRIMINATOR_COLUMN__COLUMN_DEFINITION, oldColumnDefinition, columnDefinition));
+ }
+
+ public void setColumnDefinition(String newColumnDefinition) {
+ setColumnDefinitionGen(newColumnDefinition);
+ if (newColumnDefinition != COLUMN_DEFINITION_EDEFAULT) {
+ entity().makeDiscriminatorColumnForXmlNonNull();
+ }
+ setColumnDefinitionForXml(newColumnDefinition);
+ if (isAllFeaturesUnset()) {
+ entity().makeDiscriminatorColumnForXmlNull();
+ }
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Length</b></em>' attribute.
+ * The default value is <code>"31"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Length</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Length</em>' attribute.
+ * @see #setDefaultLength(int)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIDiscriminatorColumn_DefaultLength()
+ * @model default="31"
+ * @generated
+ */
+ public int getDefaultLength() {
+ return defaultLength;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlDiscriminatorColumn#getDefaultLength <em>Default Length</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Default Length</em>' attribute.
+ * @see #getDefaultLength()
+ * @generated
+ */
+ public void setDefaultLength(int newDefaultLength) {
+ int oldDefaultLength = defaultLength;
+ defaultLength = newDefaultLength;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_DISCRIMINATOR_COLUMN__DEFAULT_LENGTH, oldDefaultLength, defaultLength));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Length</b></em>' attribute.
+ * The default value is <code>"-1"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Length</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Length</em>' attribute.
+ * @see #setSpecifiedLength(int)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIDiscriminatorColumn_SpecifiedLength()
+ * @model default="-1"
+ * @generated
+ */
+ public int getSpecifiedLength() {
+ return specifiedLength;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlDiscriminatorColumn#getSpecifiedLength <em>Specified Length</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Length</em>' attribute.
+ * @see #getSpecifiedLength()
+ * @generated
+ */
+ public void setSpecifiedLengthGen(int newSpecifiedLength) {
+ int oldSpecifiedLength = specifiedLength;
+ specifiedLength = newSpecifiedLength;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_DISCRIMINATOR_COLUMN__SPECIFIED_LENGTH, oldSpecifiedLength, specifiedLength));
+ }
+
+ public void setSpecifiedLength(int newSpecifiedLength) {
+ setSpecifiedLengthGen(newSpecifiedLength);
+ if (newSpecifiedLength != SPECIFIED_LENGTH_EDEFAULT) {
+ entity().makeDiscriminatorColumnForXmlNonNull();
+ }
+ setSpecifiedLengthForXml(newSpecifiedLength);
+ if (isAllFeaturesUnset()) {
+ entity().makeDiscriminatorColumnForXmlNull();
+ }
+ }
+
+ /**
+ * Returns the value of the '<em><b>Length</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Length</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Length</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIDiscriminatorColumn_Length()
+ * @model transient="true" changeable="false" volatile="true" derived="true"
+ * @generated NOT
+ */
+ public int getLength() {
+ return (this.getSpecifiedLength() == -1) ? this.getDefaultLength() : this.getSpecifiedLength();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Name For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Name For Xml</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Name For Xml</em>' attribute.
+ * @see #setSpecifiedNameForXml(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlDiscriminatorColumn_SpecifiedNameForXml()
+ * @model volatile="true"
+ * @generated NOT
+ */
+ public String getSpecifiedNameForXml() {
+ return getSpecifiedName();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlDiscriminatorColumn#getSpecifiedNameForXml <em>Specified Name For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Name For Xml</em>' attribute.
+ * @see #getSpecifiedNameForXml()
+ * @generated NOT
+ */
+ public void setSpecifiedNameForXml(String newSpecifiedNameForXml) {
+ setSpecifiedNameGen(newSpecifiedNameForXml);
+ if (eNotificationRequired())
+ //pass in oldValue of null because we don't store the value from the xml, see super.eNotify()
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_DISCRIMINATOR_COLUMN__SPECIFIED_NAME_FOR_XML, newSpecifiedNameForXml + " ", newSpecifiedNameForXml));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Discriminator Type For Xml</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DiscriminatorType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Discriminator Type For Xml</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Discriminator Type For Xml</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DiscriminatorType
+ * @see #setDiscriminatorTypeForXml(DiscriminatorType)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlDiscriminatorColumn_DiscriminatorTypeForXml()
+ * @model volatile="true"
+ * @generated NOT
+ */
+ public DiscriminatorType getDiscriminatorTypeForXml() {
+ return getDiscriminatorType();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlDiscriminatorColumn#getDiscriminatorTypeForXml <em>Discriminator Type For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Discriminator Type For Xml</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DiscriminatorType
+ * @see #getDiscriminatorTypeForXml()
+ * @generated NOT
+ */
+ public void setDiscriminatorTypeForXml(DiscriminatorType newDiscriminatorTypeForXml) {
+ setDiscriminatorTypeGen(newDiscriminatorTypeForXml);
+ if (eNotificationRequired())
+ //pass in oldValue of null because we don't store the value from the xml, see super.eNotify()
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE_FOR_XML, null, newDiscriminatorTypeForXml));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Column Definition For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Column Definition For Xml</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Column Definition For Xml</em>' attribute.
+ * @see #setColumnDefinitionForXml(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlDiscriminatorColumn_ColumnDefinitionForXml()
+ * @model volatile="true"
+ * @generated NOT
+ */
+ public String getColumnDefinitionForXml() {
+ return getColumnDefinition();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlDiscriminatorColumn#getColumnDefinitionForXml <em>Column Definition For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Column Definition For Xml</em>' attribute.
+ * @see #getColumnDefinitionForXml()
+ * @generated NOT
+ */
+ public void setColumnDefinitionForXml(String newColumnDefinitionForXml) {
+ setColumnDefinitionGen(newColumnDefinitionForXml);
+ if (eNotificationRequired())
+ //pass in oldValue of null because we don't store the value from the xml, see super.eNotify()
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_DISCRIMINATOR_COLUMN__COLUMN_DEFINITION_FOR_XML, newColumnDefinitionForXml + " ", newColumnDefinitionForXml));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Length For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Length For Xml</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Length For Xml</em>' attribute.
+ * @see #setSpecifiedLengthForXml(int)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlDiscriminatorColumn_SpecifiedLengthForXml()
+ * @model volatile="true"
+ * @generated NOT
+ */
+ public int getSpecifiedLengthForXml() {
+ return getSpecifiedLength();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlDiscriminatorColumn#getSpecifiedLengthForXml <em>Specified Length For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Length For Xml</em>' attribute.
+ * @see #getSpecifiedLengthForXml()
+ * @generated NOT
+ */
+ public void setSpecifiedLengthForXml(int newSpecifiedLengthForXml) {
+ setSpecifiedLengthGen(newSpecifiedLengthForXml);
+ if (eNotificationRequired())
+ //pass in oldValue of null because we don't store the value from the xml, see super.eNotify()
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_DISCRIMINATOR_COLUMN__SPECIFIED_LENGTH_FOR_XML, -1, newSpecifiedLengthForXml));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__DEFAULT_NAME :
+ return getDefaultName();
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__SPECIFIED_NAME :
+ return getSpecifiedName();
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__NAME :
+ return getName();
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE :
+ return getDiscriminatorType();
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__COLUMN_DEFINITION :
+ return getColumnDefinition();
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__DEFAULT_LENGTH :
+ return new Integer(getDefaultLength());
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__SPECIFIED_LENGTH :
+ return new Integer(getSpecifiedLength());
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__LENGTH :
+ return new Integer(getLength());
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__SPECIFIED_NAME_FOR_XML :
+ return getSpecifiedNameForXml();
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE_FOR_XML :
+ return getDiscriminatorTypeForXml();
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__COLUMN_DEFINITION_FOR_XML :
+ return getColumnDefinitionForXml();
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__SPECIFIED_LENGTH_FOR_XML :
+ return new Integer(getSpecifiedLengthForXml());
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__DEFAULT_NAME :
+ setDefaultName((String) newValue);
+ return;
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__SPECIFIED_NAME :
+ setSpecifiedName((String) newValue);
+ return;
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE :
+ setDiscriminatorType((DiscriminatorType) newValue);
+ return;
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__COLUMN_DEFINITION :
+ setColumnDefinition((String) newValue);
+ return;
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__DEFAULT_LENGTH :
+ setDefaultLength(((Integer) newValue).intValue());
+ return;
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__SPECIFIED_LENGTH :
+ setSpecifiedLength(((Integer) newValue).intValue());
+ return;
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__SPECIFIED_NAME_FOR_XML :
+ setSpecifiedNameForXml((String) newValue);
+ return;
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE_FOR_XML :
+ setDiscriminatorTypeForXml((DiscriminatorType) newValue);
+ return;
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__COLUMN_DEFINITION_FOR_XML :
+ setColumnDefinitionForXml((String) newValue);
+ return;
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__SPECIFIED_LENGTH_FOR_XML :
+ setSpecifiedLengthForXml(((Integer) newValue).intValue());
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__DEFAULT_NAME :
+ setDefaultName(DEFAULT_NAME_EDEFAULT);
+ return;
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__SPECIFIED_NAME :
+ setSpecifiedName(SPECIFIED_NAME_EDEFAULT);
+ return;
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE :
+ setDiscriminatorType(DISCRIMINATOR_TYPE_EDEFAULT);
+ return;
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__COLUMN_DEFINITION :
+ setColumnDefinition(COLUMN_DEFINITION_EDEFAULT);
+ return;
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__DEFAULT_LENGTH :
+ setDefaultLength(DEFAULT_LENGTH_EDEFAULT);
+ return;
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__SPECIFIED_LENGTH :
+ setSpecifiedLength(SPECIFIED_LENGTH_EDEFAULT);
+ return;
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__SPECIFIED_NAME_FOR_XML :
+ setSpecifiedNameForXml(SPECIFIED_NAME_FOR_XML_EDEFAULT);
+ return;
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE_FOR_XML :
+ setDiscriminatorTypeForXml(DISCRIMINATOR_TYPE_FOR_XML_EDEFAULT);
+ return;
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__COLUMN_DEFINITION_FOR_XML :
+ setColumnDefinitionForXml(COLUMN_DEFINITION_FOR_XML_EDEFAULT);
+ return;
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__SPECIFIED_LENGTH_FOR_XML :
+ setSpecifiedLengthForXml(SPECIFIED_LENGTH_FOR_XML_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__DEFAULT_NAME :
+ return DEFAULT_NAME_EDEFAULT == null ? defaultName != null : !DEFAULT_NAME_EDEFAULT.equals(defaultName);
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__SPECIFIED_NAME :
+ return SPECIFIED_NAME_EDEFAULT == null ? specifiedName != null : !SPECIFIED_NAME_EDEFAULT.equals(specifiedName);
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__NAME :
+ return NAME_EDEFAULT == null ? getName() != null : !NAME_EDEFAULT.equals(getName());
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE :
+ return discriminatorType != DISCRIMINATOR_TYPE_EDEFAULT;
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__COLUMN_DEFINITION :
+ return COLUMN_DEFINITION_EDEFAULT == null ? columnDefinition != null : !COLUMN_DEFINITION_EDEFAULT.equals(columnDefinition);
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__DEFAULT_LENGTH :
+ return defaultLength != DEFAULT_LENGTH_EDEFAULT;
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__SPECIFIED_LENGTH :
+ return specifiedLength != SPECIFIED_LENGTH_EDEFAULT;
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__LENGTH :
+ return getLength() != LENGTH_EDEFAULT;
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__SPECIFIED_NAME_FOR_XML :
+ return SPECIFIED_NAME_FOR_XML_EDEFAULT == null ? getSpecifiedNameForXml() != null : !SPECIFIED_NAME_FOR_XML_EDEFAULT.equals(getSpecifiedNameForXml());
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE_FOR_XML :
+ return getDiscriminatorTypeForXml() != DISCRIMINATOR_TYPE_FOR_XML_EDEFAULT;
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__COLUMN_DEFINITION_FOR_XML :
+ return COLUMN_DEFINITION_FOR_XML_EDEFAULT == null ? getColumnDefinitionForXml() != null : !COLUMN_DEFINITION_FOR_XML_EDEFAULT.equals(getColumnDefinitionForXml());
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__SPECIFIED_LENGTH_FOR_XML :
+ return getSpecifiedLengthForXml() != SPECIFIED_LENGTH_FOR_XML_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IDiscriminatorColumn.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__DEFAULT_NAME :
+ return JpaCoreMappingsPackage.IDISCRIMINATOR_COLUMN__DEFAULT_NAME;
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__SPECIFIED_NAME :
+ return JpaCoreMappingsPackage.IDISCRIMINATOR_COLUMN__SPECIFIED_NAME;
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__NAME :
+ return JpaCoreMappingsPackage.IDISCRIMINATOR_COLUMN__NAME;
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE :
+ return JpaCoreMappingsPackage.IDISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE;
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__COLUMN_DEFINITION :
+ return JpaCoreMappingsPackage.IDISCRIMINATOR_COLUMN__COLUMN_DEFINITION;
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__DEFAULT_LENGTH :
+ return JpaCoreMappingsPackage.IDISCRIMINATOR_COLUMN__DEFAULT_LENGTH;
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__SPECIFIED_LENGTH :
+ return JpaCoreMappingsPackage.IDISCRIMINATOR_COLUMN__SPECIFIED_LENGTH;
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN__LENGTH :
+ return JpaCoreMappingsPackage.IDISCRIMINATOR_COLUMN__LENGTH;
+ 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 == IDiscriminatorColumn.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IDISCRIMINATOR_COLUMN__DEFAULT_NAME :
+ return OrmPackage.XML_DISCRIMINATOR_COLUMN__DEFAULT_NAME;
+ case JpaCoreMappingsPackage.IDISCRIMINATOR_COLUMN__SPECIFIED_NAME :
+ return OrmPackage.XML_DISCRIMINATOR_COLUMN__SPECIFIED_NAME;
+ case JpaCoreMappingsPackage.IDISCRIMINATOR_COLUMN__NAME :
+ return OrmPackage.XML_DISCRIMINATOR_COLUMN__NAME;
+ case JpaCoreMappingsPackage.IDISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE :
+ return OrmPackage.XML_DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE;
+ case JpaCoreMappingsPackage.IDISCRIMINATOR_COLUMN__COLUMN_DEFINITION :
+ return OrmPackage.XML_DISCRIMINATOR_COLUMN__COLUMN_DEFINITION;
+ case JpaCoreMappingsPackage.IDISCRIMINATOR_COLUMN__DEFAULT_LENGTH :
+ return OrmPackage.XML_DISCRIMINATOR_COLUMN__DEFAULT_LENGTH;
+ case JpaCoreMappingsPackage.IDISCRIMINATOR_COLUMN__SPECIFIED_LENGTH :
+ return OrmPackage.XML_DISCRIMINATOR_COLUMN__SPECIFIED_LENGTH;
+ case JpaCoreMappingsPackage.IDISCRIMINATOR_COLUMN__LENGTH :
+ return OrmPackage.XML_DISCRIMINATOR_COLUMN__LENGTH;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (defaultName: ");
+ result.append(defaultName);
+ result.append(", specifiedName: ");
+ result.append(specifiedName);
+ result.append(", discriminatorType: ");
+ result.append(discriminatorType);
+ result.append(", columnDefinition: ");
+ result.append(columnDefinition);
+ result.append(", defaultLength: ");
+ result.append(defaultLength);
+ result.append(", specifiedLength: ");
+ result.append(specifiedLength);
+ result.append(')');
+ return result.toString();
+ }
+
+ public Table dbTable() {
+ return entity().primaryDbTable();
+ }
+
+ private XmlEntityInternal entity() {
+ return (XmlEntityInternal) eContainer();
+ }
+
+ /**
+ * Call this when the table tag is removed from the xml,
+ * need to make sure all the model attributes are set to the default
+ */
+ protected void unsetAllAttributes() {
+ eUnset(OrmPackage.XML_DISCRIMINATOR_COLUMN__SPECIFIED_LENGTH);
+ eUnset(OrmPackage.XML_DISCRIMINATOR_COLUMN__SPECIFIED_NAME);
+ eUnset(OrmPackage.XML_DISCRIMINATOR_COLUMN__COLUMN_DEFINITION);
+ eUnset(OrmPackage.XML_DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE);
+ }
+} // XmlDiscriminatorColumn
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbeddable.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbeddable.java
new file mode 100644
index 0000000000..682483beab
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbeddable.java
@@ -0,0 +1,88 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import java.util.Iterator;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.mappings.IEmbeddable;
+import org.eclipse.jpt.utility.internal.iterators.EmptyIterator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Embeddable</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlEmbeddable()
+ * @model kind="class"
+ * @generated
+ */
+public class XmlEmbeddable extends XmlTypeMapping implements IEmbeddable
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XmlEmbeddable() {
+ super();
+ }
+
+ public String getKey() {
+ return IMappingKeys.EMBEDDABLE_TYPE_MAPPING_KEY;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_EMBEDDABLE;
+ }
+
+ public boolean tableNameIsInvalid(String tableName) {
+ return false;
+ }
+
+ public Iterator associatedTableNamesIncludingInherited() {
+ // TODO Auto-generated method stub
+ return EmptyIterator.instance();
+ }
+
+ public Iterator associatedTables() {
+ // TODO Auto-generated method stub
+ return EmptyIterator.instance();
+ }
+
+ public Iterator associatedTablesIncludingInherited() {
+ // TODO Auto-generated method stub
+ return EmptyIterator.instance();
+ }
+
+ public Iterator<String> overridableAssociationNames() {
+ return EmptyIterator.instance();
+ }
+
+ public Iterator<String> overridableAttributeNames() {
+ return EmptyIterator.instance();
+ }
+
+ @Override
+ public int xmlSequence() {
+ return 2;
+ }
+
+ @Override
+ public boolean attributeMappingKeyAllowed(String attributeMappingKey) {
+ return attributeMappingKey == IMappingKeys.BASIC_ATTRIBUTE_MAPPING_KEY || attributeMappingKey == IMappingKeys.TRANSIENT_ATTRIBUTE_MAPPING_KEY;
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbeddableProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbeddableProvider.java
new file mode 100644
index 0000000000..e6956df26c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbeddableProvider.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.jpt.core.internal.IMappingKeys;
+
+
+public class XmlEmbeddableProvider implements IXmlTypeMappingProvider
+{
+
+ public XmlTypeMapping buildTypeMapping() {
+ return OrmFactory.eINSTANCE.createXmlEmbeddable();
+ }
+
+ public String key() {
+ return IMappingKeys.EMBEDDABLE_TYPE_MAPPING_KEY;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbedded.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbedded.java
new file mode 100644
index 0000000000..5615c83c2c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbedded.java
@@ -0,0 +1,354 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.emf.common.notify.NotificationChain;
+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.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.IPersistentAttribute;
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.mappings.IAttributeOverride;
+import org.eclipse.jpt.core.internal.mappings.IEmbeddable;
+import org.eclipse.jpt.core.internal.mappings.IEmbedded;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+import org.eclipse.jpt.utility.internal.iterators.EmptyIterator;
+import org.eclipse.jpt.utility.internal.iterators.FilteringIterator;
+import org.eclipse.jpt.utility.internal.iterators.TransformationIterator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Embedded</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlEmbedded()
+ * @model kind="class"
+ * @generated
+ */
+public class XmlEmbedded extends XmlAttributeMapping implements IEmbedded
+{
+ /**
+ * The cached value of the '{@link #getSpecifiedAttributeOverrides() <em>Specified Attribute Overrides</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedAttributeOverrides()
+ * @generated
+ * @ordered
+ */
+ protected EList<IAttributeOverride> specifiedAttributeOverrides;
+
+ /**
+ * The cached value of the '{@link #getDefaultAttributeOverrides() <em>Default Attribute Overrides</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultAttributeOverrides()
+ * @generated
+ * @ordered
+ */
+ protected EList<IAttributeOverride> defaultAttributeOverrides;
+
+ private IEmbeddable embeddable;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XmlEmbedded() {
+ super();
+ }
+
+ @Override
+ protected void initializeOn(XmlAttributeMapping newMapping) {
+ newMapping.initializeFromXmlEmbeddedMapping(this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_EMBEDDED;
+ }
+
+ public EList<IAttributeOverride> getAttributeOverrides() {
+ EList<IAttributeOverride> list = new BasicEList<IAttributeOverride>();
+ list.addAll(getSpecifiedAttributeOverrides());
+ list.addAll(getDefaultAttributeOverrides());
+ return list;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Attribute Overrides</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Attribute Overrides</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>Specified Attribute Overrides</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIEmbedded_SpecifiedAttributeOverrides()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IAttributeOverride" containment="true"
+ * @generated
+ */
+ public EList<IAttributeOverride> getSpecifiedAttributeOverrides() {
+ if (specifiedAttributeOverrides == null) {
+ specifiedAttributeOverrides = new EObjectContainmentEList<IAttributeOverride>(IAttributeOverride.class, this, OrmPackage.XML_EMBEDDED__SPECIFIED_ATTRIBUTE_OVERRIDES);
+ }
+ return specifiedAttributeOverrides;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Attribute Overrides</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Attribute Overrides</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>Default Attribute Overrides</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIEmbedded_DefaultAttributeOverrides()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IAttributeOverride" containment="true"
+ * @generated
+ */
+ public EList<IAttributeOverride> getDefaultAttributeOverrides() {
+ if (defaultAttributeOverrides == null) {
+ defaultAttributeOverrides = new EObjectContainmentEList<IAttributeOverride>(IAttributeOverride.class, this, OrmPackage.XML_EMBEDDED__DEFAULT_ATTRIBUTE_OVERRIDES);
+ }
+ return defaultAttributeOverrides;
+ }
+
+ public IEmbeddable embeddable() {
+ return this.embeddable;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case OrmPackage.XML_EMBEDDED__ATTRIBUTE_OVERRIDES :
+ return ((InternalEList<?>) getAttributeOverrides()).basicRemove(otherEnd, msgs);
+ case OrmPackage.XML_EMBEDDED__SPECIFIED_ATTRIBUTE_OVERRIDES :
+ return ((InternalEList<?>) getSpecifiedAttributeOverrides()).basicRemove(otherEnd, msgs);
+ case OrmPackage.XML_EMBEDDED__DEFAULT_ATTRIBUTE_OVERRIDES :
+ return ((InternalEList<?>) getDefaultAttributeOverrides()).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 OrmPackage.XML_EMBEDDED__ATTRIBUTE_OVERRIDES :
+ return getAttributeOverrides();
+ case OrmPackage.XML_EMBEDDED__SPECIFIED_ATTRIBUTE_OVERRIDES :
+ return getSpecifiedAttributeOverrides();
+ case OrmPackage.XML_EMBEDDED__DEFAULT_ATTRIBUTE_OVERRIDES :
+ return getDefaultAttributeOverrides();
+ }
+ 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 OrmPackage.XML_EMBEDDED__SPECIFIED_ATTRIBUTE_OVERRIDES :
+ getSpecifiedAttributeOverrides().clear();
+ getSpecifiedAttributeOverrides().addAll((Collection<? extends IAttributeOverride>) newValue);
+ return;
+ case OrmPackage.XML_EMBEDDED__DEFAULT_ATTRIBUTE_OVERRIDES :
+ getDefaultAttributeOverrides().clear();
+ getDefaultAttributeOverrides().addAll((Collection<? extends IAttributeOverride>) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_EMBEDDED__SPECIFIED_ATTRIBUTE_OVERRIDES :
+ getSpecifiedAttributeOverrides().clear();
+ return;
+ case OrmPackage.XML_EMBEDDED__DEFAULT_ATTRIBUTE_OVERRIDES :
+ getDefaultAttributeOverrides().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_EMBEDDED__ATTRIBUTE_OVERRIDES :
+ return !getAttributeOverrides().isEmpty();
+ case OrmPackage.XML_EMBEDDED__SPECIFIED_ATTRIBUTE_OVERRIDES :
+ return specifiedAttributeOverrides != null && !specifiedAttributeOverrides.isEmpty();
+ case OrmPackage.XML_EMBEDDED__DEFAULT_ATTRIBUTE_OVERRIDES :
+ return defaultAttributeOverrides != null && !defaultAttributeOverrides.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IEmbedded.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_EMBEDDED__ATTRIBUTE_OVERRIDES :
+ return JpaCoreMappingsPackage.IEMBEDDED__ATTRIBUTE_OVERRIDES;
+ case OrmPackage.XML_EMBEDDED__SPECIFIED_ATTRIBUTE_OVERRIDES :
+ return JpaCoreMappingsPackage.IEMBEDDED__SPECIFIED_ATTRIBUTE_OVERRIDES;
+ case OrmPackage.XML_EMBEDDED__DEFAULT_ATTRIBUTE_OVERRIDES :
+ return JpaCoreMappingsPackage.IEMBEDDED__DEFAULT_ATTRIBUTE_OVERRIDES;
+ 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 == IEmbedded.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IEMBEDDED__ATTRIBUTE_OVERRIDES :
+ return OrmPackage.XML_EMBEDDED__ATTRIBUTE_OVERRIDES;
+ case JpaCoreMappingsPackage.IEMBEDDED__SPECIFIED_ATTRIBUTE_OVERRIDES :
+ return OrmPackage.XML_EMBEDDED__SPECIFIED_ATTRIBUTE_OVERRIDES;
+ case JpaCoreMappingsPackage.IEMBEDDED__DEFAULT_ATTRIBUTE_OVERRIDES :
+ return OrmPackage.XML_EMBEDDED__DEFAULT_ATTRIBUTE_OVERRIDES;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ @Override
+ public int xmlSequence() {
+ return 7;
+ }
+
+ public String getKey() {
+ return IMappingKeys.EMBEDDED_ATTRIBUTE_MAPPING_KEY;
+ }
+
+ public boolean containsAttributeOverride(String name) {
+ return containsAttributeOverride(name, getAttributeOverrides());
+ }
+
+ public boolean containsSpecifiedAttributeOverride(String name) {
+ return containsAttributeOverride(name, getSpecifiedAttributeOverrides());
+ }
+
+ private boolean containsAttributeOverride(String name, List<IAttributeOverride> attributeOverrides) {
+ for (IAttributeOverride attributeOverride : attributeOverrides) {
+ String attributeOverrideName = attributeOverride.getName();
+ if (attributeOverrideName != null && attributeOverrideName.equals(name)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public Iterator<String> allOverridableAttributeNames() {
+ if (embeddable() != null) {
+ return new TransformationIterator(new FilteringIterator(embeddable().getPersistentType().attributes()) {
+ protected boolean accept(Object o) {
+ String key = ((IPersistentAttribute) o).getMappingKey();
+ return key == IMappingKeys.BASIC_ATTRIBUTE_MAPPING_KEY || key == IMappingKeys.ID_ATTRIBUTE_MAPPING_KEY;
+ }
+ }) {
+ protected Object transform(Object next) {
+ return ((IPersistentAttribute) next).getName();
+ }
+ };
+ }
+ return EmptyIterator.instance();
+ }
+
+ public IAttributeOverride createAttributeOverride(int index) {
+ return OrmFactory.eINSTANCE.createXmlAttributeOverride(new AttributeOverrideOwner(this));
+ }
+
+ @Override
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ super.refreshDefaults(defaultsContext);
+ refreshEmbeddable(defaultsContext);
+ }
+
+ private void refreshEmbeddable(DefaultsContext defaultsContext) {
+ this.embeddable = embeddableFor(getPersistentAttribute().getAttribute(), defaultsContext);
+ }
+
+ //******* static methods *********
+ public static IEmbeddable embeddableFor(Attribute attribute, DefaultsContext defaultsContext) {
+ String resolvedTypeName = attribute.resolvedTypeName();
+ if (resolvedTypeName == null) {
+ return null;
+ }
+ IPersistentType persistentType = defaultsContext.persistentType(resolvedTypeName);
+ if (persistentType != null) {
+ if (persistentType.getMapping() instanceof IEmbeddable) {
+ return (IEmbeddable) persistentType.getMapping();
+ }
+ }
+ return null;
+ }
+} // XmlEmbedded
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbeddedId.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbeddedId.java
new file mode 100644
index 0000000000..e518537664
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbeddedId.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.mappings.IEmbeddedId;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Embedded Id</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlEmbeddedId()
+ * @model kind="class"
+ * @generated
+ */
+public class XmlEmbeddedId extends XmlAttributeMapping implements IEmbeddedId
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XmlEmbeddedId() {
+ super();
+ }
+
+ @Override
+ protected void initializeOn(XmlAttributeMapping newMapping) {
+ newMapping.initializeFromXmlEmbeddedIdMapping(this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_EMBEDDED_ID;
+ }
+
+ @Override
+ public int xmlSequence() {
+ return 0;
+ }
+
+ public String getKey() {
+ return IMappingKeys.EMBEDDED_ID_ATTRIBUTE_MAPPING_KEY;
+ }
+} // XmlEmbeddedId
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbeddedIdProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbeddedIdProvider.java
new file mode 100644
index 0000000000..3327620b6a
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbeddedIdProvider.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.jpt.core.internal.IMappingKeys;
+
+public class XmlEmbeddedIdProvider implements IXmlAttributeMappingProvider
+{
+ // singleton
+ private static final XmlEmbeddedIdProvider INSTANCE = new XmlEmbeddedIdProvider();
+
+ /**
+ * Return the singleton.
+ */
+ public static IXmlAttributeMappingProvider instance() {
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private XmlEmbeddedIdProvider() {
+ super();
+ }
+
+ public XmlAttributeMapping buildAttributeMapping() {
+ return OrmFactory.eINSTANCE.createXmlEmbeddedId();
+ }
+
+ public String key() {
+ return IMappingKeys.EMBEDDED_ID_ATTRIBUTE_MAPPING_KEY;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbeddedProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbeddedProvider.java
new file mode 100644
index 0000000000..a2423e70d0
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEmbeddedProvider.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.jpt.core.internal.IMappingKeys;
+
+public class XmlEmbeddedProvider implements IXmlAttributeMappingProvider
+{
+ // singleton
+ private static final XmlEmbeddedProvider INSTANCE = new XmlEmbeddedProvider();
+
+ /**
+ * Return the singleton.
+ */
+ public static IXmlAttributeMappingProvider instance() {
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private XmlEmbeddedProvider() {
+ super();
+ }
+
+ public XmlAttributeMapping buildAttributeMapping() {
+ return OrmFactory.eINSTANCE.createXmlEmbedded();
+ }
+
+ public String key() {
+ return IMappingKeys.EMBEDDED_ATTRIBUTE_MAPPING_KEY;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEntity.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEntity.java
new file mode 100644
index 0000000000..fb0ed643cc
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEntity.java
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.jpt.core.internal.mappings.IEntity;
+import org.eclipse.jpt.core.internal.mappings.ISecondaryTable;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Entity</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.XmlEntity#getSecondaryTables <em>Secondary Tables</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.XmlEntity#getSpecifiedSecondaryTables <em>Specified Secondary Tables</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.XmlEntity#getDefaultSecondaryTables <em>Default Secondary Tables</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlEntity()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface XmlEntity extends IEntity
+{
+ /**
+ * Returns the value of the '<em><b>Secondary Tables</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.ISecondaryTable}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Secondary Tables</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>Secondary Tables</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlEntity_SecondaryTables()
+ * @model type="org.eclipse.jpt.core.internal.mappings.ISecondaryTable" containment="true" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ EList<ISecondaryTable> getSecondaryTables();
+
+ /**
+ * Returns the value of the '<em><b>Specified Secondary Tables</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.ISecondaryTable}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Secondary Tables</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>Specified Secondary Tables</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlEntity_SpecifiedSecondaryTables()
+ * @model type="org.eclipse.jpt.core.internal.mappings.ISecondaryTable" containment="true"
+ * @generated
+ */
+ EList<ISecondaryTable> getSpecifiedSecondaryTables();
+
+ /**
+ * Returns the value of the '<em><b>Default Secondary Tables</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.ISecondaryTable}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Secondary Tables</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>Default Secondary Tables</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlEntity_DefaultSecondaryTables()
+ * @model type="org.eclipse.jpt.core.internal.mappings.ISecondaryTable" containment="true"
+ * @generated
+ */
+ EList<ISecondaryTable> getDefaultSecondaryTables();
+} // XmlEntity \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEntityForXml.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEntityForXml.java
new file mode 100644
index 0000000000..06acba2f2a
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEntityForXml.java
@@ -0,0 +1,84 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Entity For Xml</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.XmlEntityForXml#getTableForXml <em>Table For Xml</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.XmlEntityForXml#getDiscriminatorColumnForXml <em>Discriminator Column For Xml</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlEntityForXml()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface XmlEntityForXml extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Table For Xml</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Table For Xml</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Table For Xml</em>' reference.
+ * @see #setTableForXml(XmlTable)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlEntityForXml_TableForXml()
+ * @model resolveProxies="false" volatile="true"
+ * @generated
+ */
+ XmlTable getTableForXml();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlEntityForXml#getTableForXml <em>Table For Xml</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Table For Xml</em>' reference.
+ * @see #getTableForXml()
+ * @generated
+ */
+ void setTableForXml(XmlTable value);
+
+ /**
+ * Returns the value of the '<em><b>Discriminator Column For Xml</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Discriminator Column For Xml</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Discriminator Column For Xml</em>' reference.
+ * @see #setDiscriminatorColumnForXml(XmlDiscriminatorColumn)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlEntityForXml_DiscriminatorColumnForXml()
+ * @model resolveProxies="false" volatile="true"
+ * @generated
+ */
+ XmlDiscriminatorColumn getDiscriminatorColumnForXml();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlEntityForXml#getDiscriminatorColumnForXml <em>Discriminator Column For Xml</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Discriminator Column For Xml</em>' reference.
+ * @see #getDiscriminatorColumnForXml()
+ * @generated
+ */
+ void setDiscriminatorColumnForXml(XmlDiscriminatorColumn value);
+} // XmlEntityForXml \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEntityInternal.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEntityInternal.java
new file mode 100644
index 0000000000..94cfe00378
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEntityInternal.java
@@ -0,0 +1,1857 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+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.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.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.IPersistentAttribute;
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.jdtutility.Type;
+import org.eclipse.jpt.core.internal.mappings.IAssociationOverride;
+import org.eclipse.jpt.core.internal.mappings.IAttributeOverride;
+import org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn;
+import org.eclipse.jpt.core.internal.mappings.IEntity;
+import org.eclipse.jpt.core.internal.mappings.INamedNativeQuery;
+import org.eclipse.jpt.core.internal.mappings.INamedQuery;
+import org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.ISecondaryTable;
+import org.eclipse.jpt.core.internal.mappings.ISequenceGenerator;
+import org.eclipse.jpt.core.internal.mappings.ITable;
+import org.eclipse.jpt.core.internal.mappings.ITableGenerator;
+import org.eclipse.jpt.core.internal.mappings.InheritanceType;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.core.internal.platform.BaseJpaPlatform;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+import org.eclipse.jpt.db.internal.Table;
+import org.eclipse.jpt.utility.internal.CollectionTools;
+import org.eclipse.jpt.utility.internal.iterators.CompositeIterator;
+import org.eclipse.jpt.utility.internal.iterators.EmptyIterator;
+import org.eclipse.jpt.utility.internal.iterators.FilteringIterator;
+import org.eclipse.jpt.utility.internal.iterators.TransformationIterator;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Xml Entity</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlEntityInternal()
+ * @model kind="class"
+ * @generated
+ */
+public class XmlEntityInternal extends XmlTypeMapping
+ implements XmlEntityForXml, XmlEntity
+{
+ /**
+ * The default value of the '{@link #getSpecifiedName() <em>Specified Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedName()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedName() <em>Specified Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedName()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedName = SPECIFIED_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultName() <em>Default Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultName()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultName() <em>Default Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultName()
+ * @generated
+ * @ordered
+ */
+ protected String defaultName = DEFAULT_NAME_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getTable() <em>Table</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTable()
+ * @generated
+ * @ordered
+ */
+ protected ITable table;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedPrimaryKeyJoinColumns() <em>Specified Primary Key Join Columns</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedPrimaryKeyJoinColumns()
+ * @generated
+ * @ordered
+ */
+ protected EList<IPrimaryKeyJoinColumn> specifiedPrimaryKeyJoinColumns;
+
+ /**
+ * The cached value of the '{@link #getDefaultPrimaryKeyJoinColumns() <em>Default Primary Key Join Columns</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultPrimaryKeyJoinColumns()
+ * @generated
+ * @ordered
+ */
+ protected EList<IPrimaryKeyJoinColumn> defaultPrimaryKeyJoinColumns;
+
+ /**
+ * The default value of the '{@link #getInheritanceStrategy() <em>Inheritance Strategy</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getInheritanceStrategy()
+ * @generated
+ * @ordered
+ */
+ protected static final InheritanceType INHERITANCE_STRATEGY_EDEFAULT = InheritanceType.DEFAULT;
+
+ /**
+ * The cached value of the '{@link #getInheritanceStrategy() <em>Inheritance Strategy</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getInheritanceStrategy()
+ * @generated
+ * @ordered
+ */
+ protected InheritanceType inheritanceStrategy = INHERITANCE_STRATEGY_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultDiscriminatorValue() <em>Default Discriminator Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultDiscriminatorValue()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_DISCRIMINATOR_VALUE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultDiscriminatorValue() <em>Default Discriminator Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultDiscriminatorValue()
+ * @generated
+ * @ordered
+ */
+ protected String defaultDiscriminatorValue = DEFAULT_DISCRIMINATOR_VALUE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getSpecifiedDiscriminatorValue() <em>Specified Discriminator Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedDiscriminatorValue()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_DISCRIMINATOR_VALUE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedDiscriminatorValue() <em>Specified Discriminator Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedDiscriminatorValue()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedDiscriminatorValue = SPECIFIED_DISCRIMINATOR_VALUE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDiscriminatorValue() <em>Discriminator Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDiscriminatorValue()
+ * @generated
+ * @ordered
+ */
+ protected static final String DISCRIMINATOR_VALUE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDiscriminatorColumn() <em>Discriminator Column</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDiscriminatorColumn()
+ * @generated
+ * @ordered
+ */
+ protected IDiscriminatorColumn discriminatorColumn;
+
+ /**
+ * The cached value of the '{@link #getSequenceGenerator() <em>Sequence Generator</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSequenceGenerator()
+ * @generated
+ * @ordered
+ */
+ protected ISequenceGenerator sequenceGenerator;
+
+ /**
+ * The cached value of the '{@link #getTableGenerator() <em>Table Generator</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTableGenerator()
+ * @generated
+ * @ordered
+ */
+ protected ITableGenerator tableGenerator;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedAttributeOverrides() <em>Specified Attribute Overrides</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedAttributeOverrides()
+ * @generated
+ * @ordered
+ */
+ protected EList<IAttributeOverride> specifiedAttributeOverrides;
+
+ /**
+ * The cached value of the '{@link #getDefaultAttributeOverrides() <em>Default Attribute Overrides</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultAttributeOverrides()
+ * @generated
+ * @ordered
+ */
+ protected EList<IAttributeOverride> defaultAttributeOverrides;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedAssociationOverrides() <em>Specified Association Overrides</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedAssociationOverrides()
+ * @generated
+ * @ordered
+ */
+ protected EList<IAssociationOverride> specifiedAssociationOverrides;
+
+ /**
+ * The cached value of the '{@link #getDefaultAssociationOverrides() <em>Default Association Overrides</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultAssociationOverrides()
+ * @generated
+ * @ordered
+ */
+ protected EList<IAssociationOverride> defaultAssociationOverrides;
+
+ /**
+ * The cached value of the '{@link #getNamedQueries() <em>Named Queries</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNamedQueries()
+ * @generated
+ * @ordered
+ */
+ protected EList<INamedQuery> namedQueries;
+
+ /**
+ * The cached value of the '{@link #getNamedNativeQueries() <em>Named Native Queries</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNamedNativeQueries()
+ * @generated
+ * @ordered
+ */
+ protected EList<INamedNativeQuery> namedNativeQueries;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedSecondaryTables() <em>Specified Secondary Tables</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedSecondaryTables()
+ * @generated
+ * @ordered
+ */
+ protected EList<ISecondaryTable> specifiedSecondaryTables;
+
+ /**
+ * The cached value of the '{@link #getDefaultSecondaryTables() <em>Default Secondary Tables</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultSecondaryTables()
+ * @generated
+ * @ordered
+ */
+ protected EList<ISecondaryTable> defaultSecondaryTables;
+
+ protected XmlEntityInternal() {
+ super();
+ this.table = OrmFactory.eINSTANCE.createXmlTable(buildTableOwner());
+ ((InternalEObject) this.table).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OrmPackage.XML_ENTITY_INTERNAL__TABLE, null, null);
+ this.discriminatorColumn = OrmFactory.eINSTANCE.createXmlDiscriminatorColumn();
+ ((InternalEObject) this.discriminatorColumn).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OrmPackage.XML_ENTITY_INTERNAL__DISCRIMINATOR_COLUMN, null, null);
+ this.getDefaultPrimaryKeyJoinColumns().add(this.createPrimaryKeyJoinColumn(0));
+ }
+
+ private ITable.Owner buildTableOwner() {
+ return new ITable.Owner() {
+ public ITextRange getTextRange() {
+ return XmlEntityInternal.this.getTextRange();
+ }
+
+ public ITypeMapping getTypeMapping() {
+ return XmlEntityInternal.this;
+ }
+ };
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_ENTITY_INTERNAL;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ public String getName() {
+ return (this.getSpecifiedName() == null) ? getDefaultName() : this.getSpecifiedName();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Name</em>' attribute.
+ * @see #setSpecifiedName(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIEntity_SpecifiedName()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedName() {
+ return specifiedName;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlEntityInternal#getSpecifiedName <em>Specified Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Name</em>' attribute.
+ * @see #getSpecifiedName()
+ * @generated
+ */
+ public void setSpecifiedName(String newSpecifiedName) {
+ String oldSpecifiedName = specifiedName;
+ specifiedName = newSpecifiedName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_NAME, oldSpecifiedName, specifiedName));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIEntity_DefaultName()
+ * @model changeable="false"
+ * @generated
+ */
+ public String getDefaultName() {
+ return defaultName;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Table</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Table</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Table</em>' containment reference.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIEntity_Table()
+ * @model containment="true" required="true" changeable="false"
+ * @generated
+ */
+ public ITable getTable() {
+ return table;
+ }
+
+ private XmlTable getTableInternal() {
+ return (XmlTable) getTable();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetTable(ITable newTable, NotificationChain msgs) {
+ ITable oldTable = table;
+ table = newTable;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OrmPackage.XML_ENTITY_INTERNAL__TABLE, oldTable, newTable);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Secondary Tables</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.ISecondaryTable}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Secondary Tables</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>Secondary Tables</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlEntity_SecondaryTables()
+ * @model type="org.eclipse.jpt.core.internal.mappings.ISecondaryTable" containment="true" transient="true" changeable="false" volatile="true"
+ * @generated NOT
+ */
+ public EList<ISecondaryTable> getSecondaryTables() {
+ EList<ISecondaryTable> list = new BasicEList<ISecondaryTable>();
+ list.addAll(getSpecifiedSecondaryTables());
+ list.addAll(getDefaultSecondaryTables());
+ return list;
+ }
+
+ public boolean containsSecondaryTable(String name) {
+ for (ISecondaryTable secondaryTable : getSecondaryTables()) {
+ String secondaryTableName = secondaryTable.getName();
+ if (secondaryTableName != null && secondaryTableName.equals(name)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Secondary Tables</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.ISecondaryTable}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Secondary Tables</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>Specified Secondary Tables</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlEntity_SpecifiedSecondaryTables()
+ * @model type="org.eclipse.jpt.core.internal.mappings.ISecondaryTable" containment="true"
+ * @generated
+ */
+ public EList<ISecondaryTable> getSpecifiedSecondaryTables() {
+ if (specifiedSecondaryTables == null) {
+ specifiedSecondaryTables = new EObjectContainmentEList<ISecondaryTable>(ISecondaryTable.class, this, OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_SECONDARY_TABLES);
+ }
+ return specifiedSecondaryTables;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Secondary Tables</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.ISecondaryTable}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Secondary Tables</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>Default Secondary Tables</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlEntity_DefaultSecondaryTables()
+ * @model type="org.eclipse.jpt.core.internal.mappings.ISecondaryTable" containment="true"
+ * @generated
+ */
+ public EList<ISecondaryTable> getDefaultSecondaryTables() {
+ if (defaultSecondaryTables == null) {
+ defaultSecondaryTables = new EObjectContainmentEList<ISecondaryTable>(ISecondaryTable.class, this, OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_SECONDARY_TABLES);
+ }
+ return defaultSecondaryTables;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Inheritance Strategy</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.InheritanceType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Inheritance Strategy</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Inheritance Strategy</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.InheritanceType
+ * @see #setInheritanceStrategy(InheritanceType)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIEntity_InheritanceStrategy()
+ * @model
+ * @generated
+ */
+ public InheritanceType getInheritanceStrategy() {
+ return inheritanceStrategy;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlEntityInternal#getInheritanceStrategy <em>Inheritance Strategy</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Inheritance Strategy</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.InheritanceType
+ * @see #getInheritanceStrategy()
+ * @generated
+ */
+ public void setInheritanceStrategy(InheritanceType newInheritanceStrategy) {
+ InheritanceType oldInheritanceStrategy = inheritanceStrategy;
+ inheritanceStrategy = newInheritanceStrategy == null ? INHERITANCE_STRATEGY_EDEFAULT : newInheritanceStrategy;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_ENTITY_INTERNAL__INHERITANCE_STRATEGY, oldInheritanceStrategy, inheritanceStrategy));
+ }
+
+ // public void setInheritanceStrategy(InheritanceType newInheritanceStrategy) {
+ // setInheritanceStrategyGen(newInheritanceStrategy);
+ // if (newInheritanceStrategy != INHERITANCE_STRATEGY_EDEFAULT) {
+ // //makeInheritanceForXmlNonNull();
+ // }
+ // setInheritanceStrategyForXml(newInheritanceStrategy);
+ // if (isAllFeaturesUnset()) {
+ // //makeInheritanceForXmlNull();
+ // }
+ // }
+ /**
+ * Returns the value of the '<em><b>Discriminator Column</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Discriminator Column</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Discriminator Column</em>' containment reference.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIEntity_DiscriminatorColumn()
+ * @model containment="true" changeable="false"
+ * @generated
+ */
+ public IDiscriminatorColumn getDiscriminatorColumn() {
+ return discriminatorColumn;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetDiscriminatorColumn(IDiscriminatorColumn newDiscriminatorColumn, NotificationChain msgs) {
+ IDiscriminatorColumn oldDiscriminatorColumn = discriminatorColumn;
+ discriminatorColumn = newDiscriminatorColumn;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OrmPackage.XML_ENTITY_INTERNAL__DISCRIMINATOR_COLUMN, oldDiscriminatorColumn, newDiscriminatorColumn);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Sequence Generator</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Sequence Generator</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Sequence Generator</em>' containment reference.
+ * @see #setSequenceGenerator(ISequenceGenerator)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIEntity_SequenceGenerator()
+ * @model containment="true"
+ * @generated
+ */
+ public ISequenceGenerator getSequenceGenerator() {
+ return sequenceGenerator;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetSequenceGenerator(ISequenceGenerator newSequenceGenerator, NotificationChain msgs) {
+ ISequenceGenerator oldSequenceGenerator = sequenceGenerator;
+ sequenceGenerator = newSequenceGenerator;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OrmPackage.XML_ENTITY_INTERNAL__SEQUENCE_GENERATOR, oldSequenceGenerator, newSequenceGenerator);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlEntityInternal#getSequenceGenerator <em>Sequence Generator</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Sequence Generator</em>' containment reference.
+ * @see #getSequenceGenerator()
+ * @generated
+ */
+ public void setSequenceGenerator(ISequenceGenerator newSequenceGenerator) {
+ if (newSequenceGenerator != sequenceGenerator) {
+ NotificationChain msgs = null;
+ if (sequenceGenerator != null)
+ msgs = ((InternalEObject) sequenceGenerator).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OrmPackage.XML_ENTITY_INTERNAL__SEQUENCE_GENERATOR, null, msgs);
+ if (newSequenceGenerator != null)
+ msgs = ((InternalEObject) newSequenceGenerator).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OrmPackage.XML_ENTITY_INTERNAL__SEQUENCE_GENERATOR, null, msgs);
+ msgs = basicSetSequenceGenerator(newSequenceGenerator, msgs);
+ if (msgs != null)
+ msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_ENTITY_INTERNAL__SEQUENCE_GENERATOR, newSequenceGenerator, newSequenceGenerator));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Table Generator</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Table Generator</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Table Generator</em>' containment reference.
+ * @see #setTableGenerator(ITableGenerator)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIEntity_TableGenerator()
+ * @model containment="true"
+ * @generated
+ */
+ public ITableGenerator getTableGenerator() {
+ return tableGenerator;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetTableGenerator(ITableGenerator newTableGenerator, NotificationChain msgs) {
+ ITableGenerator oldTableGenerator = tableGenerator;
+ tableGenerator = newTableGenerator;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OrmPackage.XML_ENTITY_INTERNAL__TABLE_GENERATOR, oldTableGenerator, newTableGenerator);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlEntityInternal#getTableGenerator <em>Table Generator</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Table Generator</em>' containment reference.
+ * @see #getTableGenerator()
+ * @generated
+ */
+ public void setTableGenerator(ITableGenerator newTableGenerator) {
+ if (newTableGenerator != tableGenerator) {
+ NotificationChain msgs = null;
+ if (tableGenerator != null)
+ msgs = ((InternalEObject) tableGenerator).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OrmPackage.XML_ENTITY_INTERNAL__TABLE_GENERATOR, null, msgs);
+ if (newTableGenerator != null)
+ msgs = ((InternalEObject) newTableGenerator).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OrmPackage.XML_ENTITY_INTERNAL__TABLE_GENERATOR, null, msgs);
+ msgs = basicSetTableGenerator(newTableGenerator, msgs);
+ if (msgs != null)
+ msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_ENTITY_INTERNAL__TABLE_GENERATOR, newTableGenerator, newTableGenerator));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Discriminator Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Discriminator 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>Default Discriminator Value</em>' attribute.
+ * @see #setDefaultDiscriminatorValue(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIEntity_DefaultDiscriminatorValue()
+ * @model
+ * @generated
+ */
+ public String getDefaultDiscriminatorValue() {
+ return defaultDiscriminatorValue;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlEntityInternal#getDefaultDiscriminatorValue <em>Default Discriminator Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Default Discriminator Value</em>' attribute.
+ * @see #getDefaultDiscriminatorValue()
+ * @generated
+ */
+ public void setDefaultDiscriminatorValue(String newDefaultDiscriminatorValue) {
+ String oldDefaultDiscriminatorValue = defaultDiscriminatorValue;
+ defaultDiscriminatorValue = newDefaultDiscriminatorValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_DISCRIMINATOR_VALUE, oldDefaultDiscriminatorValue, defaultDiscriminatorValue));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Discriminator Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Discriminator 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>Specified Discriminator Value</em>' attribute.
+ * @see #setSpecifiedDiscriminatorValue(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIEntity_SpecifiedDiscriminatorValue()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedDiscriminatorValue() {
+ return specifiedDiscriminatorValue;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlEntityInternal#getSpecifiedDiscriminatorValue <em>Specified Discriminator Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Discriminator Value</em>' attribute.
+ * @see #getSpecifiedDiscriminatorValue()
+ * @generated
+ */
+ public void setSpecifiedDiscriminatorValue(String newSpecifiedDiscriminatorValue) {
+ String oldSpecifiedDiscriminatorValue = specifiedDiscriminatorValue;
+ specifiedDiscriminatorValue = newSpecifiedDiscriminatorValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_DISCRIMINATOR_VALUE, oldSpecifiedDiscriminatorValue, specifiedDiscriminatorValue));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Discriminator Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Discriminator 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>Discriminator Value</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIEntity_DiscriminatorValue()
+ * @model transient="true" changeable="false" volatile="true" derived="true"
+ * @generated NOT
+ */
+ public String getDiscriminatorValue() {
+ return (this.getSpecifiedDiscriminatorValue() == null) ? getDefaultDiscriminatorValue() : this.getSpecifiedDiscriminatorValue();
+ }
+
+ public EList<IPrimaryKeyJoinColumn> getPrimaryKeyJoinColumns() {
+ return this.getSpecifiedPrimaryKeyJoinColumns().isEmpty() ? this.getDefaultPrimaryKeyJoinColumns() : this.getSpecifiedPrimaryKeyJoinColumns();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Primary Key Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Primary Key Join Columns</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>Specified Primary Key Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIEntity_SpecifiedPrimaryKeyJoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn" containment="true"
+ * @generated
+ */
+ public EList<IPrimaryKeyJoinColumn> getSpecifiedPrimaryKeyJoinColumns() {
+ if (specifiedPrimaryKeyJoinColumns == null) {
+ specifiedPrimaryKeyJoinColumns = new EObjectContainmentEList<IPrimaryKeyJoinColumn>(IPrimaryKeyJoinColumn.class, this, OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS);
+ }
+ return specifiedPrimaryKeyJoinColumns;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Primary Key Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Primary Key Join Columns</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>Default Primary Key Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIEntity_DefaultPrimaryKeyJoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn" containment="true"
+ * @generated
+ */
+ public EList<IPrimaryKeyJoinColumn> getDefaultPrimaryKeyJoinColumns() {
+ if (defaultPrimaryKeyJoinColumns == null) {
+ defaultPrimaryKeyJoinColumns = new EObjectContainmentEList<IPrimaryKeyJoinColumn>(IPrimaryKeyJoinColumn.class, this, OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_PRIMARY_KEY_JOIN_COLUMNS);
+ }
+ return defaultPrimaryKeyJoinColumns;
+ }
+
+ public EList<IAttributeOverride> getAttributeOverrides() {
+ EList<IAttributeOverride> list = new BasicEList<IAttributeOverride>();
+ list.addAll(getSpecifiedAttributeOverrides());
+ list.addAll(getDefaultAttributeOverrides());
+ return list;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Attribute Overrides</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Attribute Overrides</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>Specified Attribute Overrides</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIEntity_SpecifiedAttributeOverrides()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IAttributeOverride" containment="true"
+ * @generated
+ */
+ public EList<IAttributeOverride> getSpecifiedAttributeOverrides() {
+ if (specifiedAttributeOverrides == null) {
+ specifiedAttributeOverrides = new EObjectContainmentEList<IAttributeOverride>(IAttributeOverride.class, this, OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_ATTRIBUTE_OVERRIDES);
+ }
+ return specifiedAttributeOverrides;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Attribute Overrides</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Attribute Overrides</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>Default Attribute Overrides</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIEntity_DefaultAttributeOverrides()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IAttributeOverride" containment="true"
+ * @generated
+ */
+ public EList<IAttributeOverride> getDefaultAttributeOverrides() {
+ if (defaultAttributeOverrides == null) {
+ defaultAttributeOverrides = new EObjectContainmentEList<IAttributeOverride>(IAttributeOverride.class, this, OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_ATTRIBUTE_OVERRIDES);
+ }
+ return defaultAttributeOverrides;
+ }
+
+ public EList<IAssociationOverride> getAssociationOverrides() {
+ EList<IAssociationOverride> list = new BasicEList<IAssociationOverride>();
+ list.addAll(getSpecifiedAssociationOverrides());
+ list.addAll(getDefaultAssociationOverrides());
+ return list;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Association Overrides</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAssociationOverride}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Association Overrides</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>Specified Association Overrides</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIEntity_SpecifiedAssociationOverrides()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IAssociationOverride" containment="true"
+ * @generated
+ */
+ public EList<IAssociationOverride> getSpecifiedAssociationOverrides() {
+ if (specifiedAssociationOverrides == null) {
+ specifiedAssociationOverrides = new EObjectContainmentEList<IAssociationOverride>(IAssociationOverride.class, this, OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_ASSOCIATION_OVERRIDES);
+ }
+ return specifiedAssociationOverrides;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Association Overrides</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAssociationOverride}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Association Overrides</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>Default Association Overrides</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIEntity_DefaultAssociationOverrides()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IAssociationOverride" containment="true"
+ * @generated
+ */
+ public EList<IAssociationOverride> getDefaultAssociationOverrides() {
+ if (defaultAssociationOverrides == null) {
+ defaultAssociationOverrides = new EObjectContainmentEList<IAssociationOverride>(IAssociationOverride.class, this, OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_ASSOCIATION_OVERRIDES);
+ }
+ return defaultAssociationOverrides;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Named Queries</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.INamedQuery}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Named Queries</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>Named Queries</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIEntity_NamedQueries()
+ * @model type="org.eclipse.jpt.core.internal.mappings.INamedQuery" containment="true"
+ * @generated
+ */
+ public EList<INamedQuery> getNamedQueries() {
+ if (namedQueries == null) {
+ namedQueries = new EObjectContainmentEList<INamedQuery>(INamedQuery.class, this, OrmPackage.XML_ENTITY_INTERNAL__NAMED_QUERIES);
+ }
+ return namedQueries;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Named Native Queries</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.INamedNativeQuery}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Named Native Queries</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>Named Native Queries</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIEntity_NamedNativeQueries()
+ * @model type="org.eclipse.jpt.core.internal.mappings.INamedNativeQuery" containment="true"
+ * @generated
+ */
+ public EList<INamedNativeQuery> getNamedNativeQueries() {
+ if (namedNativeQueries == null) {
+ namedNativeQueries = new EObjectContainmentEList<INamedNativeQuery>(INamedNativeQuery.class, this, OrmPackage.XML_ENTITY_INTERNAL__NAMED_NATIVE_QUERIES);
+ }
+ return namedNativeQueries;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated NOT
+ */
+ public boolean discriminatorValueIsAllowed() {
+ Type type = getPersistentType().findType();
+ return (type == null) ? false : type.isAbstract();
+ }
+
+ public IEntity parentEntity() {
+ for (Iterator<IPersistentType> i = getPersistentType().inheritanceHierarchy(); i.hasNext();) {
+ ITypeMapping typeMapping = i.next().getMapping();
+ if (typeMapping != this && typeMapping instanceof IEntity) {
+ return (IEntity) typeMapping;
+ }
+ }
+ return this;
+ }
+
+ public IEntity rootEntity() {
+ IEntity rootEntity = null;
+ for (Iterator<IPersistentType> i = getPersistentType().inheritanceHierarchy(); i.hasNext();) {
+ IPersistentType persistentType = i.next();
+ if (persistentType.getMapping() instanceof IEntity) {
+ rootEntity = (IEntity) persistentType.getMapping();
+ }
+ }
+ return rootEntity;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Table For Xml</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Table For Xml</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Table For Xml</em>' reference.
+ * @see #setTableForXml(XmlTable)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlEntityForXml_TableForXml()
+ * @model resolveProxies="false" volatile="true"
+ * @generated NOT
+ */
+ public XmlTable getTableForXml() {
+ if (getTableInternal().isAllFeaturesUnset()) {
+ return null;
+ }
+ return getTableInternal();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlEntityInternal#getTableForXml <em>Table For Xml</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Table For Xml</em>' reference.
+ * @see #getTableForXml()
+ * @generated NOT
+ */
+ public void setTableForXmlGen(XmlTable newTableForXml) {
+ XmlTable oldValue = newTableForXml == null ? (XmlTable) getTable() : null;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_ENTITY_INTERNAL__TABLE_FOR_XML, oldValue, newTableForXml));
+ }
+
+ public void setTableForXml(XmlTable newTableForXml) {
+ setTableForXmlGen(newTableForXml);
+ if (newTableForXml == null) {
+ getTableInternal().unsetAllAttributes();
+ }
+ }
+
+ /**
+ * Returns the value of the '<em><b>Discriminator Column For Xml</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Discriminator Column For Xml</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Discriminator Column For Xml</em>' reference.
+ * @see #setDiscriminatorColumnForXml(XmlDiscriminatorColumn)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlEntityForXml_DiscriminatorColumnForXml()
+ * @model resolveProxies="false" volatile="true"
+ * @generated NOT
+ */
+ public XmlDiscriminatorColumn getDiscriminatorColumnForXml() {
+ if (getDiscriminatorColumnInternal().isAllFeaturesUnset()) {
+ return null;
+ }
+ return getDiscriminatorColumnInternal();
+ }
+
+ private XmlDiscriminatorColumn getDiscriminatorColumnInternal() {
+ return (XmlDiscriminatorColumn) getDiscriminatorColumn();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlEntityInternal#getDiscriminatorColumnForXml <em>Discriminator Column For Xml</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Discriminator Column For Xml</em>' reference.
+ * @see #getDiscriminatorColumnForXml()
+ * @generated NOT
+ */
+ public void setDiscriminatorColumnForXmlGen(XmlDiscriminatorColumn newDiscriminatorColumnForXml) {
+ XmlDiscriminatorColumn oldValue = newDiscriminatorColumnForXml == null ? (XmlDiscriminatorColumn) getDiscriminatorColumn() : null;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_ENTITY_INTERNAL__DISCRIMINATOR_COLUMN_FOR_XML, oldValue, newDiscriminatorColumnForXml));
+ }
+
+ public void setDiscriminatorColumnForXml(XmlDiscriminatorColumn newDiscriminatorColumnForXml) {
+ setDiscriminatorColumnForXmlGen(newDiscriminatorColumnForXml);
+ if (newDiscriminatorColumnForXml == null) {
+ getDiscriminatorColumnInternal().unsetAllAttributes();
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case OrmPackage.XML_ENTITY_INTERNAL__TABLE :
+ return basicSetTable(null, msgs);
+ case OrmPackage.XML_ENTITY_INTERNAL__PRIMARY_KEY_JOIN_COLUMNS :
+ return ((InternalEList<?>) getPrimaryKeyJoinColumns()).basicRemove(otherEnd, msgs);
+ case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS :
+ return ((InternalEList<?>) getSpecifiedPrimaryKeyJoinColumns()).basicRemove(otherEnd, msgs);
+ case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_PRIMARY_KEY_JOIN_COLUMNS :
+ return ((InternalEList<?>) getDefaultPrimaryKeyJoinColumns()).basicRemove(otherEnd, msgs);
+ case OrmPackage.XML_ENTITY_INTERNAL__DISCRIMINATOR_COLUMN :
+ return basicSetDiscriminatorColumn(null, msgs);
+ case OrmPackage.XML_ENTITY_INTERNAL__SEQUENCE_GENERATOR :
+ return basicSetSequenceGenerator(null, msgs);
+ case OrmPackage.XML_ENTITY_INTERNAL__TABLE_GENERATOR :
+ return basicSetTableGenerator(null, msgs);
+ case OrmPackage.XML_ENTITY_INTERNAL__ATTRIBUTE_OVERRIDES :
+ return ((InternalEList<?>) getAttributeOverrides()).basicRemove(otherEnd, msgs);
+ case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_ATTRIBUTE_OVERRIDES :
+ return ((InternalEList<?>) getSpecifiedAttributeOverrides()).basicRemove(otherEnd, msgs);
+ case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_ATTRIBUTE_OVERRIDES :
+ return ((InternalEList<?>) getDefaultAttributeOverrides()).basicRemove(otherEnd, msgs);
+ case OrmPackage.XML_ENTITY_INTERNAL__ASSOCIATION_OVERRIDES :
+ return ((InternalEList<?>) getAssociationOverrides()).basicRemove(otherEnd, msgs);
+ case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_ASSOCIATION_OVERRIDES :
+ return ((InternalEList<?>) getSpecifiedAssociationOverrides()).basicRemove(otherEnd, msgs);
+ case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_ASSOCIATION_OVERRIDES :
+ return ((InternalEList<?>) getDefaultAssociationOverrides()).basicRemove(otherEnd, msgs);
+ case OrmPackage.XML_ENTITY_INTERNAL__NAMED_QUERIES :
+ return ((InternalEList<?>) getNamedQueries()).basicRemove(otherEnd, msgs);
+ case OrmPackage.XML_ENTITY_INTERNAL__NAMED_NATIVE_QUERIES :
+ return ((InternalEList<?>) getNamedNativeQueries()).basicRemove(otherEnd, msgs);
+ case OrmPackage.XML_ENTITY_INTERNAL__SECONDARY_TABLES :
+ return ((InternalEList<?>) getSecondaryTables()).basicRemove(otherEnd, msgs);
+ case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_SECONDARY_TABLES :
+ return ((InternalEList<?>) getSpecifiedSecondaryTables()).basicRemove(otherEnd, msgs);
+ case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_SECONDARY_TABLES :
+ return ((InternalEList<?>) getDefaultSecondaryTables()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ protected void setDefaultName(String newDefaultName) {
+ String oldDefaultName = this.defaultName;
+ this.defaultName = newDefaultName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_NAME, oldDefaultName, defaultName));
+ }
+
+ @Override
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ super.refreshDefaults(defaultsContext);
+ setDefaultName((String) defaultsContext.getDefault(BaseJpaPlatform.DEFAULT_ENTITY_NAME_KEY));
+ }
+
+ public String getKey() {
+ return IMappingKeys.ENTITY_TYPE_MAPPING_KEY;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case OrmPackage.XML_ENTITY_INTERNAL__TABLE_FOR_XML :
+ return getTableForXml();
+ case OrmPackage.XML_ENTITY_INTERNAL__DISCRIMINATOR_COLUMN_FOR_XML :
+ return getDiscriminatorColumnForXml();
+ case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_NAME :
+ return getSpecifiedName();
+ case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_NAME :
+ return getDefaultName();
+ case OrmPackage.XML_ENTITY_INTERNAL__TABLE :
+ return getTable();
+ case OrmPackage.XML_ENTITY_INTERNAL__PRIMARY_KEY_JOIN_COLUMNS :
+ return getPrimaryKeyJoinColumns();
+ case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS :
+ return getSpecifiedPrimaryKeyJoinColumns();
+ case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_PRIMARY_KEY_JOIN_COLUMNS :
+ return getDefaultPrimaryKeyJoinColumns();
+ case OrmPackage.XML_ENTITY_INTERNAL__INHERITANCE_STRATEGY :
+ return getInheritanceStrategy();
+ case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_DISCRIMINATOR_VALUE :
+ return getDefaultDiscriminatorValue();
+ case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_DISCRIMINATOR_VALUE :
+ return getSpecifiedDiscriminatorValue();
+ case OrmPackage.XML_ENTITY_INTERNAL__DISCRIMINATOR_VALUE :
+ return getDiscriminatorValue();
+ case OrmPackage.XML_ENTITY_INTERNAL__DISCRIMINATOR_COLUMN :
+ return getDiscriminatorColumn();
+ case OrmPackage.XML_ENTITY_INTERNAL__SEQUENCE_GENERATOR :
+ return getSequenceGenerator();
+ case OrmPackage.XML_ENTITY_INTERNAL__TABLE_GENERATOR :
+ return getTableGenerator();
+ case OrmPackage.XML_ENTITY_INTERNAL__ATTRIBUTE_OVERRIDES :
+ return getAttributeOverrides();
+ case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_ATTRIBUTE_OVERRIDES :
+ return getSpecifiedAttributeOverrides();
+ case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_ATTRIBUTE_OVERRIDES :
+ return getDefaultAttributeOverrides();
+ case OrmPackage.XML_ENTITY_INTERNAL__ASSOCIATION_OVERRIDES :
+ return getAssociationOverrides();
+ case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_ASSOCIATION_OVERRIDES :
+ return getSpecifiedAssociationOverrides();
+ case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_ASSOCIATION_OVERRIDES :
+ return getDefaultAssociationOverrides();
+ case OrmPackage.XML_ENTITY_INTERNAL__NAMED_QUERIES :
+ return getNamedQueries();
+ case OrmPackage.XML_ENTITY_INTERNAL__NAMED_NATIVE_QUERIES :
+ return getNamedNativeQueries();
+ case OrmPackage.XML_ENTITY_INTERNAL__SECONDARY_TABLES :
+ return getSecondaryTables();
+ case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_SECONDARY_TABLES :
+ return getSpecifiedSecondaryTables();
+ case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_SECONDARY_TABLES :
+ return getDefaultSecondaryTables();
+ }
+ 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 OrmPackage.XML_ENTITY_INTERNAL__TABLE_FOR_XML :
+ setTableForXml((XmlTable) newValue);
+ return;
+ case OrmPackage.XML_ENTITY_INTERNAL__DISCRIMINATOR_COLUMN_FOR_XML :
+ setDiscriminatorColumnForXml((XmlDiscriminatorColumn) newValue);
+ return;
+ case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_NAME :
+ setSpecifiedName((String) newValue);
+ return;
+ case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS :
+ getSpecifiedPrimaryKeyJoinColumns().clear();
+ getSpecifiedPrimaryKeyJoinColumns().addAll((Collection<? extends IPrimaryKeyJoinColumn>) newValue);
+ return;
+ case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_PRIMARY_KEY_JOIN_COLUMNS :
+ getDefaultPrimaryKeyJoinColumns().clear();
+ getDefaultPrimaryKeyJoinColumns().addAll((Collection<? extends IPrimaryKeyJoinColumn>) newValue);
+ return;
+ case OrmPackage.XML_ENTITY_INTERNAL__INHERITANCE_STRATEGY :
+ setInheritanceStrategy((InheritanceType) newValue);
+ return;
+ case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_DISCRIMINATOR_VALUE :
+ setDefaultDiscriminatorValue((String) newValue);
+ return;
+ case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_DISCRIMINATOR_VALUE :
+ setSpecifiedDiscriminatorValue((String) newValue);
+ return;
+ case OrmPackage.XML_ENTITY_INTERNAL__SEQUENCE_GENERATOR :
+ setSequenceGenerator((ISequenceGenerator) newValue);
+ return;
+ case OrmPackage.XML_ENTITY_INTERNAL__TABLE_GENERATOR :
+ setTableGenerator((ITableGenerator) newValue);
+ return;
+ case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_ATTRIBUTE_OVERRIDES :
+ getSpecifiedAttributeOverrides().clear();
+ getSpecifiedAttributeOverrides().addAll((Collection<? extends IAttributeOverride>) newValue);
+ return;
+ case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_ATTRIBUTE_OVERRIDES :
+ getDefaultAttributeOverrides().clear();
+ getDefaultAttributeOverrides().addAll((Collection<? extends IAttributeOverride>) newValue);
+ return;
+ case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_ASSOCIATION_OVERRIDES :
+ getSpecifiedAssociationOverrides().clear();
+ getSpecifiedAssociationOverrides().addAll((Collection<? extends IAssociationOverride>) newValue);
+ return;
+ case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_ASSOCIATION_OVERRIDES :
+ getDefaultAssociationOverrides().clear();
+ getDefaultAssociationOverrides().addAll((Collection<? extends IAssociationOverride>) newValue);
+ return;
+ case OrmPackage.XML_ENTITY_INTERNAL__NAMED_QUERIES :
+ getNamedQueries().clear();
+ getNamedQueries().addAll((Collection<? extends INamedQuery>) newValue);
+ return;
+ case OrmPackage.XML_ENTITY_INTERNAL__NAMED_NATIVE_QUERIES :
+ getNamedNativeQueries().clear();
+ getNamedNativeQueries().addAll((Collection<? extends INamedNativeQuery>) newValue);
+ return;
+ case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_SECONDARY_TABLES :
+ getSpecifiedSecondaryTables().clear();
+ getSpecifiedSecondaryTables().addAll((Collection<? extends ISecondaryTable>) newValue);
+ return;
+ case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_SECONDARY_TABLES :
+ getDefaultSecondaryTables().clear();
+ getDefaultSecondaryTables().addAll((Collection<? extends ISecondaryTable>) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_ENTITY_INTERNAL__TABLE_FOR_XML :
+ setTableForXml((XmlTable) null);
+ return;
+ case OrmPackage.XML_ENTITY_INTERNAL__DISCRIMINATOR_COLUMN_FOR_XML :
+ setDiscriminatorColumnForXml((XmlDiscriminatorColumn) null);
+ return;
+ case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_NAME :
+ setSpecifiedName(SPECIFIED_NAME_EDEFAULT);
+ return;
+ case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS :
+ getSpecifiedPrimaryKeyJoinColumns().clear();
+ return;
+ case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_PRIMARY_KEY_JOIN_COLUMNS :
+ getDefaultPrimaryKeyJoinColumns().clear();
+ return;
+ case OrmPackage.XML_ENTITY_INTERNAL__INHERITANCE_STRATEGY :
+ setInheritanceStrategy(INHERITANCE_STRATEGY_EDEFAULT);
+ return;
+ case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_DISCRIMINATOR_VALUE :
+ setDefaultDiscriminatorValue(DEFAULT_DISCRIMINATOR_VALUE_EDEFAULT);
+ return;
+ case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_DISCRIMINATOR_VALUE :
+ setSpecifiedDiscriminatorValue(SPECIFIED_DISCRIMINATOR_VALUE_EDEFAULT);
+ return;
+ case OrmPackage.XML_ENTITY_INTERNAL__SEQUENCE_GENERATOR :
+ setSequenceGenerator((ISequenceGenerator) null);
+ return;
+ case OrmPackage.XML_ENTITY_INTERNAL__TABLE_GENERATOR :
+ setTableGenerator((ITableGenerator) null);
+ return;
+ case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_ATTRIBUTE_OVERRIDES :
+ getSpecifiedAttributeOverrides().clear();
+ return;
+ case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_ATTRIBUTE_OVERRIDES :
+ getDefaultAttributeOverrides().clear();
+ return;
+ case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_ASSOCIATION_OVERRIDES :
+ getSpecifiedAssociationOverrides().clear();
+ return;
+ case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_ASSOCIATION_OVERRIDES :
+ getDefaultAssociationOverrides().clear();
+ return;
+ case OrmPackage.XML_ENTITY_INTERNAL__NAMED_QUERIES :
+ getNamedQueries().clear();
+ return;
+ case OrmPackage.XML_ENTITY_INTERNAL__NAMED_NATIVE_QUERIES :
+ getNamedNativeQueries().clear();
+ return;
+ case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_SECONDARY_TABLES :
+ getSpecifiedSecondaryTables().clear();
+ return;
+ case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_SECONDARY_TABLES :
+ getDefaultSecondaryTables().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_ENTITY_INTERNAL__TABLE_FOR_XML :
+ return getTableForXml() != null;
+ case OrmPackage.XML_ENTITY_INTERNAL__DISCRIMINATOR_COLUMN_FOR_XML :
+ return getDiscriminatorColumnForXml() != null;
+ case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_NAME :
+ return SPECIFIED_NAME_EDEFAULT == null ? specifiedName != null : !SPECIFIED_NAME_EDEFAULT.equals(specifiedName);
+ case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_NAME :
+ return DEFAULT_NAME_EDEFAULT == null ? defaultName != null : !DEFAULT_NAME_EDEFAULT.equals(defaultName);
+ case OrmPackage.XML_ENTITY_INTERNAL__TABLE :
+ return table != null;
+ case OrmPackage.XML_ENTITY_INTERNAL__PRIMARY_KEY_JOIN_COLUMNS :
+ return !getPrimaryKeyJoinColumns().isEmpty();
+ case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS :
+ return specifiedPrimaryKeyJoinColumns != null && !specifiedPrimaryKeyJoinColumns.isEmpty();
+ case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_PRIMARY_KEY_JOIN_COLUMNS :
+ return defaultPrimaryKeyJoinColumns != null && !defaultPrimaryKeyJoinColumns.isEmpty();
+ case OrmPackage.XML_ENTITY_INTERNAL__INHERITANCE_STRATEGY :
+ return inheritanceStrategy != INHERITANCE_STRATEGY_EDEFAULT;
+ case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_DISCRIMINATOR_VALUE :
+ return DEFAULT_DISCRIMINATOR_VALUE_EDEFAULT == null ? defaultDiscriminatorValue != null : !DEFAULT_DISCRIMINATOR_VALUE_EDEFAULT.equals(defaultDiscriminatorValue);
+ case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_DISCRIMINATOR_VALUE :
+ return SPECIFIED_DISCRIMINATOR_VALUE_EDEFAULT == null ? specifiedDiscriminatorValue != null : !SPECIFIED_DISCRIMINATOR_VALUE_EDEFAULT.equals(specifiedDiscriminatorValue);
+ case OrmPackage.XML_ENTITY_INTERNAL__DISCRIMINATOR_VALUE :
+ return DISCRIMINATOR_VALUE_EDEFAULT == null ? getDiscriminatorValue() != null : !DISCRIMINATOR_VALUE_EDEFAULT.equals(getDiscriminatorValue());
+ case OrmPackage.XML_ENTITY_INTERNAL__DISCRIMINATOR_COLUMN :
+ return discriminatorColumn != null;
+ case OrmPackage.XML_ENTITY_INTERNAL__SEQUENCE_GENERATOR :
+ return sequenceGenerator != null;
+ case OrmPackage.XML_ENTITY_INTERNAL__TABLE_GENERATOR :
+ return tableGenerator != null;
+ case OrmPackage.XML_ENTITY_INTERNAL__ATTRIBUTE_OVERRIDES :
+ return !getAttributeOverrides().isEmpty();
+ case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_ATTRIBUTE_OVERRIDES :
+ return specifiedAttributeOverrides != null && !specifiedAttributeOverrides.isEmpty();
+ case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_ATTRIBUTE_OVERRIDES :
+ return defaultAttributeOverrides != null && !defaultAttributeOverrides.isEmpty();
+ case OrmPackage.XML_ENTITY_INTERNAL__ASSOCIATION_OVERRIDES :
+ return !getAssociationOverrides().isEmpty();
+ case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_ASSOCIATION_OVERRIDES :
+ return specifiedAssociationOverrides != null && !specifiedAssociationOverrides.isEmpty();
+ case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_ASSOCIATION_OVERRIDES :
+ return defaultAssociationOverrides != null && !defaultAssociationOverrides.isEmpty();
+ case OrmPackage.XML_ENTITY_INTERNAL__NAMED_QUERIES :
+ return namedQueries != null && !namedQueries.isEmpty();
+ case OrmPackage.XML_ENTITY_INTERNAL__NAMED_NATIVE_QUERIES :
+ return namedNativeQueries != null && !namedNativeQueries.isEmpty();
+ case OrmPackage.XML_ENTITY_INTERNAL__SECONDARY_TABLES :
+ return !getSecondaryTables().isEmpty();
+ case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_SECONDARY_TABLES :
+ return specifiedSecondaryTables != null && !specifiedSecondaryTables.isEmpty();
+ case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_SECONDARY_TABLES :
+ return defaultSecondaryTables != null && !defaultSecondaryTables.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == XmlEntityForXml.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_ENTITY_INTERNAL__TABLE_FOR_XML :
+ return OrmPackage.XML_ENTITY_FOR_XML__TABLE_FOR_XML;
+ case OrmPackage.XML_ENTITY_INTERNAL__DISCRIMINATOR_COLUMN_FOR_XML :
+ return OrmPackage.XML_ENTITY_FOR_XML__DISCRIMINATOR_COLUMN_FOR_XML;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IEntity.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_NAME :
+ return JpaCoreMappingsPackage.IENTITY__SPECIFIED_NAME;
+ case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_NAME :
+ return JpaCoreMappingsPackage.IENTITY__DEFAULT_NAME;
+ case OrmPackage.XML_ENTITY_INTERNAL__TABLE :
+ return JpaCoreMappingsPackage.IENTITY__TABLE;
+ case OrmPackage.XML_ENTITY_INTERNAL__PRIMARY_KEY_JOIN_COLUMNS :
+ return JpaCoreMappingsPackage.IENTITY__PRIMARY_KEY_JOIN_COLUMNS;
+ case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS :
+ return JpaCoreMappingsPackage.IENTITY__SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS;
+ case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_PRIMARY_KEY_JOIN_COLUMNS :
+ return JpaCoreMappingsPackage.IENTITY__DEFAULT_PRIMARY_KEY_JOIN_COLUMNS;
+ case OrmPackage.XML_ENTITY_INTERNAL__INHERITANCE_STRATEGY :
+ return JpaCoreMappingsPackage.IENTITY__INHERITANCE_STRATEGY;
+ case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_DISCRIMINATOR_VALUE :
+ return JpaCoreMappingsPackage.IENTITY__DEFAULT_DISCRIMINATOR_VALUE;
+ case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_DISCRIMINATOR_VALUE :
+ return JpaCoreMappingsPackage.IENTITY__SPECIFIED_DISCRIMINATOR_VALUE;
+ case OrmPackage.XML_ENTITY_INTERNAL__DISCRIMINATOR_VALUE :
+ return JpaCoreMappingsPackage.IENTITY__DISCRIMINATOR_VALUE;
+ case OrmPackage.XML_ENTITY_INTERNAL__DISCRIMINATOR_COLUMN :
+ return JpaCoreMappingsPackage.IENTITY__DISCRIMINATOR_COLUMN;
+ case OrmPackage.XML_ENTITY_INTERNAL__SEQUENCE_GENERATOR :
+ return JpaCoreMappingsPackage.IENTITY__SEQUENCE_GENERATOR;
+ case OrmPackage.XML_ENTITY_INTERNAL__TABLE_GENERATOR :
+ return JpaCoreMappingsPackage.IENTITY__TABLE_GENERATOR;
+ case OrmPackage.XML_ENTITY_INTERNAL__ATTRIBUTE_OVERRIDES :
+ return JpaCoreMappingsPackage.IENTITY__ATTRIBUTE_OVERRIDES;
+ case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_ATTRIBUTE_OVERRIDES :
+ return JpaCoreMappingsPackage.IENTITY__SPECIFIED_ATTRIBUTE_OVERRIDES;
+ case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_ATTRIBUTE_OVERRIDES :
+ return JpaCoreMappingsPackage.IENTITY__DEFAULT_ATTRIBUTE_OVERRIDES;
+ case OrmPackage.XML_ENTITY_INTERNAL__ASSOCIATION_OVERRIDES :
+ return JpaCoreMappingsPackage.IENTITY__ASSOCIATION_OVERRIDES;
+ case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_ASSOCIATION_OVERRIDES :
+ return JpaCoreMappingsPackage.IENTITY__SPECIFIED_ASSOCIATION_OVERRIDES;
+ case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_ASSOCIATION_OVERRIDES :
+ return JpaCoreMappingsPackage.IENTITY__DEFAULT_ASSOCIATION_OVERRIDES;
+ case OrmPackage.XML_ENTITY_INTERNAL__NAMED_QUERIES :
+ return JpaCoreMappingsPackage.IENTITY__NAMED_QUERIES;
+ case OrmPackage.XML_ENTITY_INTERNAL__NAMED_NATIVE_QUERIES :
+ return JpaCoreMappingsPackage.IENTITY__NAMED_NATIVE_QUERIES;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == XmlEntity.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_ENTITY_INTERNAL__SECONDARY_TABLES :
+ return OrmPackage.XML_ENTITY__SECONDARY_TABLES;
+ case OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_SECONDARY_TABLES :
+ return OrmPackage.XML_ENTITY__SPECIFIED_SECONDARY_TABLES;
+ case OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_SECONDARY_TABLES :
+ return OrmPackage.XML_ENTITY__DEFAULT_SECONDARY_TABLES;
+ 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 == XmlEntityForXml.class) {
+ switch (baseFeatureID) {
+ case OrmPackage.XML_ENTITY_FOR_XML__TABLE_FOR_XML :
+ return OrmPackage.XML_ENTITY_INTERNAL__TABLE_FOR_XML;
+ case OrmPackage.XML_ENTITY_FOR_XML__DISCRIMINATOR_COLUMN_FOR_XML :
+ return OrmPackage.XML_ENTITY_INTERNAL__DISCRIMINATOR_COLUMN_FOR_XML;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IEntity.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IENTITY__SPECIFIED_NAME :
+ return OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_NAME;
+ case JpaCoreMappingsPackage.IENTITY__DEFAULT_NAME :
+ return OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_NAME;
+ case JpaCoreMappingsPackage.IENTITY__TABLE :
+ return OrmPackage.XML_ENTITY_INTERNAL__TABLE;
+ case JpaCoreMappingsPackage.IENTITY__PRIMARY_KEY_JOIN_COLUMNS :
+ return OrmPackage.XML_ENTITY_INTERNAL__PRIMARY_KEY_JOIN_COLUMNS;
+ case JpaCoreMappingsPackage.IENTITY__SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS :
+ return OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS;
+ case JpaCoreMappingsPackage.IENTITY__DEFAULT_PRIMARY_KEY_JOIN_COLUMNS :
+ return OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_PRIMARY_KEY_JOIN_COLUMNS;
+ case JpaCoreMappingsPackage.IENTITY__INHERITANCE_STRATEGY :
+ return OrmPackage.XML_ENTITY_INTERNAL__INHERITANCE_STRATEGY;
+ case JpaCoreMappingsPackage.IENTITY__DEFAULT_DISCRIMINATOR_VALUE :
+ return OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_DISCRIMINATOR_VALUE;
+ case JpaCoreMappingsPackage.IENTITY__SPECIFIED_DISCRIMINATOR_VALUE :
+ return OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_DISCRIMINATOR_VALUE;
+ case JpaCoreMappingsPackage.IENTITY__DISCRIMINATOR_VALUE :
+ return OrmPackage.XML_ENTITY_INTERNAL__DISCRIMINATOR_VALUE;
+ case JpaCoreMappingsPackage.IENTITY__DISCRIMINATOR_COLUMN :
+ return OrmPackage.XML_ENTITY_INTERNAL__DISCRIMINATOR_COLUMN;
+ case JpaCoreMappingsPackage.IENTITY__SEQUENCE_GENERATOR :
+ return OrmPackage.XML_ENTITY_INTERNAL__SEQUENCE_GENERATOR;
+ case JpaCoreMappingsPackage.IENTITY__TABLE_GENERATOR :
+ return OrmPackage.XML_ENTITY_INTERNAL__TABLE_GENERATOR;
+ case JpaCoreMappingsPackage.IENTITY__ATTRIBUTE_OVERRIDES :
+ return OrmPackage.XML_ENTITY_INTERNAL__ATTRIBUTE_OVERRIDES;
+ case JpaCoreMappingsPackage.IENTITY__SPECIFIED_ATTRIBUTE_OVERRIDES :
+ return OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_ATTRIBUTE_OVERRIDES;
+ case JpaCoreMappingsPackage.IENTITY__DEFAULT_ATTRIBUTE_OVERRIDES :
+ return OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_ATTRIBUTE_OVERRIDES;
+ case JpaCoreMappingsPackage.IENTITY__ASSOCIATION_OVERRIDES :
+ return OrmPackage.XML_ENTITY_INTERNAL__ASSOCIATION_OVERRIDES;
+ case JpaCoreMappingsPackage.IENTITY__SPECIFIED_ASSOCIATION_OVERRIDES :
+ return OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_ASSOCIATION_OVERRIDES;
+ case JpaCoreMappingsPackage.IENTITY__DEFAULT_ASSOCIATION_OVERRIDES :
+ return OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_ASSOCIATION_OVERRIDES;
+ case JpaCoreMappingsPackage.IENTITY__NAMED_QUERIES :
+ return OrmPackage.XML_ENTITY_INTERNAL__NAMED_QUERIES;
+ case JpaCoreMappingsPackage.IENTITY__NAMED_NATIVE_QUERIES :
+ return OrmPackage.XML_ENTITY_INTERNAL__NAMED_NATIVE_QUERIES;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == XmlEntity.class) {
+ switch (baseFeatureID) {
+ case OrmPackage.XML_ENTITY__SECONDARY_TABLES :
+ return OrmPackage.XML_ENTITY_INTERNAL__SECONDARY_TABLES;
+ case OrmPackage.XML_ENTITY__SPECIFIED_SECONDARY_TABLES :
+ return OrmPackage.XML_ENTITY_INTERNAL__SPECIFIED_SECONDARY_TABLES;
+ case OrmPackage.XML_ENTITY__DEFAULT_SECONDARY_TABLES :
+ return OrmPackage.XML_ENTITY_INTERNAL__DEFAULT_SECONDARY_TABLES;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (specifiedName: ");
+ result.append(specifiedName);
+ result.append(", defaultName: ");
+ result.append(defaultName);
+ result.append(", inheritanceStrategy: ");
+ result.append(inheritanceStrategy);
+ result.append(", defaultDiscriminatorValue: ");
+ result.append(defaultDiscriminatorValue);
+ result.append(", specifiedDiscriminatorValue: ");
+ result.append(specifiedDiscriminatorValue);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public String getTableName() {
+ return getTable().getName();
+ }
+
+ public void makeTableForXmlNull() {
+ setTableForXmlGen(null);
+ }
+
+ public void makeTableForXmlNonNull() {
+ setTableForXmlGen(getTableForXml());
+ }
+
+ public void makeDiscriminatorColumnForXmlNull() {
+ setDiscriminatorColumnForXmlGen(null);
+ }
+
+ //um, this is an object on XmlInheritance, but a tag on entity in the xml, how to handle???
+ public void makeDiscriminatorColumnForXmlNonNull() {
+ setDiscriminatorColumnForXmlGen(getDiscriminatorColumnForXml());
+ }
+
+ public String primaryKeyColumnName() {
+ String pkColumnName = null;
+ for (Iterator<IPersistentAttribute> stream = getPersistentType().allAttributes(); stream.hasNext();) {
+ IPersistentAttribute attribute = stream.next();
+ String name = attribute.primaryKeyColumnName();
+ if (pkColumnName == null) {
+ pkColumnName = name;
+ }
+ else if (name != null) {
+ // if we encounter a composite primary key, return null
+ return null;
+ }
+ }
+ // if we encounter only a single primary key column name, return it
+ return pkColumnName;
+ }
+
+ public String primaryKeyAttributeName() {
+ String pkColumnName = null;
+ String pkAttributeName = null;
+ for (Iterator<IPersistentAttribute> stream = getPersistentType().allAttributes(); stream.hasNext();) {
+ IPersistentAttribute attribute = stream.next();
+ String name = attribute.primaryKeyColumnName();
+ if (pkColumnName == null) {
+ pkColumnName = name;
+ pkAttributeName = attribute.getName();
+ }
+ else if (name != null) {
+ // if we encounter a composite primary key, return null
+ return null;
+ }
+ }
+ // if we encounter only a single primary key column name, return it
+ return pkAttributeName;
+ }
+
+ public boolean tableNameIsInvalid(String tableName) {
+ return !CollectionTools.contains(this.associatedTableNamesIncludingInherited(), tableName);
+ }
+
+ private Iterator<String> tableNames(Iterator<ITable> tables) {
+ return new TransformationIterator(tables) {
+ @Override
+ protected Object transform(Object next) {
+ return ((ITable) next).getName();
+ }
+ };
+ }
+
+ public Iterator<String> associatedTableNamesIncludingInherited() {
+ return this.nonNullTableNames(this.associatedTablesIncludingInherited());
+ }
+
+ private Iterator<String> nonNullTableNames(Iterator<ITable> tables) {
+ return new FilteringIterator(this.tableNames(tables)) {
+ @Override
+ protected boolean accept(Object o) {
+ return o != null;
+ }
+ };
+ }
+
+ public Iterator<ITable> associatedTables() {
+ return new CompositeIterator(this.getTable(), this.getSecondaryTables().iterator());
+ }
+
+ public Iterator<ITable> associatedTablesIncludingInherited() {
+ return new CompositeIterator(new TransformationIterator(this.inheritanceHierarchy()) {
+ @Override
+ protected Object transform(Object next) {
+ return new FilteringIterator(((ITypeMapping) next).associatedTables()) {
+ @Override
+ protected boolean accept(Object o) {
+ return true;
+ //TODO
+ //filtering these out so as to avoid the duplicate table, root and children share the same table
+ //return !(o instanceof SingleTableInheritanceChildTableImpl);
+ }
+ };
+ }
+ });
+ }
+
+ @Override
+ public Table primaryDbTable() {
+ return getTable().dbTable();
+ }
+
+ @Override
+ public Table dbTable(String tableName) {
+ for (Iterator<ITable> stream = this.associatedTablesIncludingInherited(); stream.hasNext();) {
+ Table dbTable = stream.next().dbTable();
+ if (dbTable != null && dbTable.matchesShortJavaClassName(tableName)) {
+ return dbTable;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public int xmlSequence() {
+ return 1;
+ }
+
+ /**
+ * Return an iterator of Entities, each which inherits from the one before,
+ * and terminates at the root entity (or at the point of cyclicity).
+ */
+ private Iterator<ITypeMapping> inheritanceHierarchy() {
+ return new TransformationIterator(getPersistentType().inheritanceHierarchy()) {
+ @Override
+ protected Object transform(Object next) {
+ return ((IPersistentType) next).getMapping();
+ }
+ };
+ //TODO once we support inheritance, which of these should we use??
+ //return this.getInheritance().typeMappingLineage();
+ }
+
+ public Iterator<String> allOverridableAttributeNames() {
+ return new CompositeIterator(new TransformationIterator(this.inheritanceHierarchy()) {
+ protected Object transform(Object next) {
+ return ((ITypeMapping) next).overridableAttributeNames();
+ }
+ });
+ }
+
+ public Iterator<String> allOverridableAssociationNames() {
+ return new CompositeIterator(new TransformationIterator(this.inheritanceHierarchy()) {
+ protected Object transform(Object next) {
+ return ((ITypeMapping) next).overridableAssociationNames();
+ }
+ });
+ }
+
+ public Iterator<String> overridableAttributeNames() {
+ return EmptyIterator.instance();
+ }
+
+ public Iterator<String> overridableAssociationNames() {
+ return EmptyIterator.instance();
+ }
+
+ public IAttributeOverride createAttributeOverride(int index) {
+ return OrmFactory.eINSTANCE.createXmlAttributeOverride(new IEntity.AttributeOverrideOwner(this));
+ }
+
+ public IAssociationOverride createAssociationOverride(int index) {
+ return OrmFactory.eINSTANCE.createXmlAssociationOverride(new IEntity.AssociationOverrideOwner(this));
+ }
+
+ public boolean containsAttributeOverride(String name) {
+ return containsAttributeOverride(name, getAttributeOverrides());
+ }
+
+ public boolean containsSpecifiedAttributeOverride(String name) {
+ return containsAttributeOverride(name, getSpecifiedAttributeOverrides());
+ }
+
+ private boolean containsAttributeOverride(String name, List<IAttributeOverride> attributeOverrides) {
+ for (IAttributeOverride attributeOverride : attributeOverrides) {
+ String attributeOverrideName = attributeOverride.getName();
+ if (attributeOverrideName != null && attributeOverrideName.equals(name)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public boolean containsAssociationOverride(String name) {
+ return containsAssociationOverride(name, getAssociationOverrides());
+ }
+
+ public boolean containsSpecifiedAssociationOverride(String name) {
+ return containsAssociationOverride(name, getSpecifiedAssociationOverrides());
+ }
+
+ private boolean containsAssociationOverride(String name, List<IAssociationOverride> associationOverrides) {
+ for (IAssociationOverride associationOverride : associationOverrides) {
+ String overrideName = associationOverride.getName();
+ if (overrideName != null && overrideName.equals(name)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public ISecondaryTable createSecondaryTable(int index) {
+ return OrmFactory.eINSTANCE.createXmlSecondaryTable(buildSecondaryTableOwner());
+ }
+
+ private ITable.Owner buildSecondaryTableOwner() {
+ return new ITable.Owner() {
+ public ITextRange getTextRange() {
+ return XmlEntityInternal.this.getTextRange();
+ }
+
+ public ITypeMapping getTypeMapping() {
+ return XmlEntityInternal.this;
+ }
+ };
+ }
+
+ public boolean containsSpecifiedPrimaryKeyJoinColumns() {
+ return !this.getSpecifiedPrimaryKeyJoinColumns().isEmpty();
+ }
+
+ public IPrimaryKeyJoinColumn createPrimaryKeyJoinColumn(int index) {
+ return OrmFactory.eINSTANCE.createXmlPrimaryKeyJoinColumn(new IEntity.PrimaryKeyJoinColumnOwner(this));
+ }
+
+ public INamedQuery createNamedQuery(int index) {
+ return OrmFactory.eINSTANCE.createXmlNamedQuery();
+ }
+
+ public INamedNativeQuery createNamedNativeQuery(int index) {
+ return OrmFactory.eINSTANCE.createXmlNamedNativeQuery();
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEntityProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEntityProvider.java
new file mode 100644
index 0000000000..16e053afef
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlEntityProvider.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.jpt.core.internal.IMappingKeys;
+
+
+public class XmlEntityProvider implements IXmlTypeMappingProvider
+{
+ public XmlTypeMapping buildTypeMapping() {
+ return OrmFactory.eINSTANCE.createXmlEntityInternal();
+ }
+
+ public String key() {
+ return IMappingKeys.ENTITY_TYPE_MAPPING_KEY;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlGeneratedValue.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlGeneratedValue.java
new file mode 100644
index 0000000000..2975cf96d7
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlGeneratedValue.java
@@ -0,0 +1,285 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jpt.core.internal.XmlEObject;
+import org.eclipse.jpt.core.internal.mappings.GenerationType;
+import org.eclipse.jpt.core.internal.mappings.IGeneratedValue;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Generated Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlGeneratedValue()
+ * @model kind="class"
+ * @generated
+ */
+public class XmlGeneratedValue extends XmlEObject implements IGeneratedValue
+{
+ /**
+ * The default value of the '{@link #getStrategy() <em>Strategy</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getStrategy()
+ * @generated
+ * @ordered
+ */
+ protected static final GenerationType STRATEGY_EDEFAULT = GenerationType.DEFAULT;
+
+ /**
+ * The cached value of the '{@link #getStrategy() <em>Strategy</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getStrategy()
+ * @generated
+ * @ordered
+ */
+ protected GenerationType strategy = STRATEGY_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getGenerator() <em>Generator</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getGenerator()
+ * @generated
+ * @ordered
+ */
+ protected static final String GENERATOR_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getGenerator() <em>Generator</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getGenerator()
+ * @generated
+ * @ordered
+ */
+ protected String generator = GENERATOR_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XmlGeneratedValue() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_GENERATED_VALUE;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Strategy</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.GenerationType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Strategy</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Strategy</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.GenerationType
+ * @see #setStrategy(GenerationType)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIGeneratedValue_Strategy()
+ * @model
+ * @generated
+ */
+ public GenerationType getStrategy() {
+ return strategy;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlGeneratedValue#getStrategy <em>Strategy</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Strategy</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.GenerationType
+ * @see #getStrategy()
+ * @generated
+ */
+ public void setStrategy(GenerationType newStrategy) {
+ GenerationType oldStrategy = strategy;
+ strategy = newStrategy == null ? STRATEGY_EDEFAULT : newStrategy;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_GENERATED_VALUE__STRATEGY, oldStrategy, strategy));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Generator</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Generator</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Generator</em>' attribute.
+ * @see #setGenerator(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIGeneratedValue_Generator()
+ * @model
+ * @generated
+ */
+ public String getGenerator() {
+ return generator;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlGeneratedValue#getGenerator <em>Generator</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Generator</em>' attribute.
+ * @see #getGenerator()
+ * @generated
+ */
+ public void setGenerator(String newGenerator) {
+ String oldGenerator = generator;
+ generator = newGenerator;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_GENERATED_VALUE__GENERATOR, oldGenerator, generator));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case OrmPackage.XML_GENERATED_VALUE__STRATEGY :
+ return getStrategy();
+ case OrmPackage.XML_GENERATED_VALUE__GENERATOR :
+ return getGenerator();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case OrmPackage.XML_GENERATED_VALUE__STRATEGY :
+ setStrategy((GenerationType) newValue);
+ return;
+ case OrmPackage.XML_GENERATED_VALUE__GENERATOR :
+ setGenerator((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_GENERATED_VALUE__STRATEGY :
+ setStrategy(STRATEGY_EDEFAULT);
+ return;
+ case OrmPackage.XML_GENERATED_VALUE__GENERATOR :
+ setGenerator(GENERATOR_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_GENERATED_VALUE__STRATEGY :
+ return strategy != STRATEGY_EDEFAULT;
+ case OrmPackage.XML_GENERATED_VALUE__GENERATOR :
+ return GENERATOR_EDEFAULT == null ? generator != null : !GENERATOR_EDEFAULT.equals(generator);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IGeneratedValue.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_GENERATED_VALUE__STRATEGY :
+ return JpaCoreMappingsPackage.IGENERATED_VALUE__STRATEGY;
+ case OrmPackage.XML_GENERATED_VALUE__GENERATOR :
+ return JpaCoreMappingsPackage.IGENERATED_VALUE__GENERATOR;
+ 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 == IGeneratedValue.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IGENERATED_VALUE__STRATEGY :
+ return OrmPackage.XML_GENERATED_VALUE__STRATEGY;
+ case JpaCoreMappingsPackage.IGENERATED_VALUE__GENERATOR :
+ return OrmPackage.XML_GENERATED_VALUE__GENERATOR;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (strategy: ");
+ result.append(strategy);
+ result.append(", generator: ");
+ result.append(generator);
+ result.append(')');
+ return result.toString();
+ }
+} // XmlGeneratedValue
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlGenerator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlGenerator.java
new file mode 100644
index 0000000000..bdadaaa49a
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlGenerator.java
@@ -0,0 +1,490 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jpt.core.internal.XmlEObject;
+import org.eclipse.jpt.core.internal.mappings.IGenerator;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Generator</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlGenerator()
+ * @model kind="class" abstract="true"
+ * @generated
+ */
+public abstract class XmlGenerator extends XmlEObject implements IGenerator
+{
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getInitialValue() <em>Initial Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getInitialValue()
+ * @generated
+ * @ordered
+ */
+ protected static final int INITIAL_VALUE_EDEFAULT = 0;
+
+ /**
+ * The default value of the '{@link #getSpecifiedInitialValue() <em>Specified Initial Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedInitialValue()
+ * @generated
+ * @ordered
+ */
+ protected static final int SPECIFIED_INITIAL_VALUE_EDEFAULT = -1;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedInitialValue() <em>Specified Initial Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedInitialValue()
+ * @generated
+ * @ordered
+ */
+ protected int specifiedInitialValue = SPECIFIED_INITIAL_VALUE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultInitialValue() <em>Default Initial Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultInitialValue()
+ * @generated
+ * @ordered
+ */
+ protected static final int DEFAULT_INITIAL_VALUE_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getDefaultInitialValue() <em>Default Initial Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultInitialValue()
+ * @generated
+ * @ordered
+ */
+ protected int defaultInitialValue = DEFAULT_INITIAL_VALUE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getAllocationSize() <em>Allocation Size</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAllocationSize()
+ * @generated
+ * @ordered
+ */
+ protected static final int ALLOCATION_SIZE_EDEFAULT = 0;
+
+ /**
+ * The default value of the '{@link #getSpecifiedAllocationSize() <em>Specified Allocation Size</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedAllocationSize()
+ * @generated
+ * @ordered
+ */
+ protected static final int SPECIFIED_ALLOCATION_SIZE_EDEFAULT = -1;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedAllocationSize() <em>Specified Allocation Size</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedAllocationSize()
+ * @generated
+ * @ordered
+ */
+ protected int specifiedAllocationSize = SPECIFIED_ALLOCATION_SIZE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultAllocationSize() <em>Default Allocation Size</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultAllocationSize()
+ * @generated
+ * @ordered
+ */
+ protected static final int DEFAULT_ALLOCATION_SIZE_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getDefaultAllocationSize() <em>Default Allocation Size</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultAllocationSize()
+ * @generated
+ * @ordered
+ */
+ protected int defaultAllocationSize = DEFAULT_ALLOCATION_SIZE_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XmlGenerator() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_GENERATOR;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIGenerator_Name()
+ * @model
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlGenerator#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_GENERATOR__NAME, oldName, name));
+ }
+
+ public int getInitialValue() {
+ return (this.getSpecifiedInitialValue() == -1) ? this.getDefaultInitialValue() : this.getSpecifiedInitialValue();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Initial Value</b></em>' attribute.
+ * The default value is <code>"-1"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Initial 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>Specified Initial Value</em>' attribute.
+ * @see #setSpecifiedInitialValue(int)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIGenerator_SpecifiedInitialValue()
+ * @model default="-1"
+ * @generated
+ */
+ public int getSpecifiedInitialValue() {
+ return specifiedInitialValue;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlGenerator#getSpecifiedInitialValue <em>Specified Initial Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Initial Value</em>' attribute.
+ * @see #getSpecifiedInitialValue()
+ * @generated
+ */
+ public void setSpecifiedInitialValue(int newSpecifiedInitialValue) {
+ int oldSpecifiedInitialValue = specifiedInitialValue;
+ specifiedInitialValue = newSpecifiedInitialValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_GENERATOR__SPECIFIED_INITIAL_VALUE, oldSpecifiedInitialValue, specifiedInitialValue));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Initial Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Initial 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>Default Initial Value</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIGenerator_DefaultInitialValue()
+ * @model changeable="false"
+ * @generated
+ */
+ public int getDefaultInitialValue() {
+ return defaultInitialValue;
+ }
+
+ public int getAllocationSize() {
+ return (this.getSpecifiedAllocationSize() == -1) ? this.getDefaultAllocationSize() : this.getSpecifiedAllocationSize();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Allocation Size</b></em>' attribute.
+ * The default value is <code>"-1"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Allocation Size</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Allocation Size</em>' attribute.
+ * @see #setSpecifiedAllocationSize(int)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIGenerator_SpecifiedAllocationSize()
+ * @model default="-1"
+ * @generated
+ */
+ public int getSpecifiedAllocationSize() {
+ return specifiedAllocationSize;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlGenerator#getSpecifiedAllocationSize <em>Specified Allocation Size</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Allocation Size</em>' attribute.
+ * @see #getSpecifiedAllocationSize()
+ * @generated
+ */
+ public void setSpecifiedAllocationSize(int newSpecifiedAllocationSize) {
+ int oldSpecifiedAllocationSize = specifiedAllocationSize;
+ specifiedAllocationSize = newSpecifiedAllocationSize;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_GENERATOR__SPECIFIED_ALLOCATION_SIZE, oldSpecifiedAllocationSize, specifiedAllocationSize));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Allocation Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Allocation Size</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Allocation Size</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIGenerator_DefaultAllocationSize()
+ * @model changeable="false"
+ * @generated
+ */
+ public int getDefaultAllocationSize() {
+ return defaultAllocationSize;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case OrmPackage.XML_GENERATOR__NAME :
+ return getName();
+ case OrmPackage.XML_GENERATOR__INITIAL_VALUE :
+ return new Integer(getInitialValue());
+ case OrmPackage.XML_GENERATOR__SPECIFIED_INITIAL_VALUE :
+ return new Integer(getSpecifiedInitialValue());
+ case OrmPackage.XML_GENERATOR__DEFAULT_INITIAL_VALUE :
+ return new Integer(getDefaultInitialValue());
+ case OrmPackage.XML_GENERATOR__ALLOCATION_SIZE :
+ return new Integer(getAllocationSize());
+ case OrmPackage.XML_GENERATOR__SPECIFIED_ALLOCATION_SIZE :
+ return new Integer(getSpecifiedAllocationSize());
+ case OrmPackage.XML_GENERATOR__DEFAULT_ALLOCATION_SIZE :
+ return new Integer(getDefaultAllocationSize());
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case OrmPackage.XML_GENERATOR__NAME :
+ setName((String) newValue);
+ return;
+ case OrmPackage.XML_GENERATOR__SPECIFIED_INITIAL_VALUE :
+ setSpecifiedInitialValue(((Integer) newValue).intValue());
+ return;
+ case OrmPackage.XML_GENERATOR__SPECIFIED_ALLOCATION_SIZE :
+ setSpecifiedAllocationSize(((Integer) newValue).intValue());
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_GENERATOR__NAME :
+ setName(NAME_EDEFAULT);
+ return;
+ case OrmPackage.XML_GENERATOR__SPECIFIED_INITIAL_VALUE :
+ setSpecifiedInitialValue(SPECIFIED_INITIAL_VALUE_EDEFAULT);
+ return;
+ case OrmPackage.XML_GENERATOR__SPECIFIED_ALLOCATION_SIZE :
+ setSpecifiedAllocationSize(SPECIFIED_ALLOCATION_SIZE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_GENERATOR__NAME :
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case OrmPackage.XML_GENERATOR__INITIAL_VALUE :
+ return getInitialValue() != INITIAL_VALUE_EDEFAULT;
+ case OrmPackage.XML_GENERATOR__SPECIFIED_INITIAL_VALUE :
+ return specifiedInitialValue != SPECIFIED_INITIAL_VALUE_EDEFAULT;
+ case OrmPackage.XML_GENERATOR__DEFAULT_INITIAL_VALUE :
+ return defaultInitialValue != DEFAULT_INITIAL_VALUE_EDEFAULT;
+ case OrmPackage.XML_GENERATOR__ALLOCATION_SIZE :
+ return getAllocationSize() != ALLOCATION_SIZE_EDEFAULT;
+ case OrmPackage.XML_GENERATOR__SPECIFIED_ALLOCATION_SIZE :
+ return specifiedAllocationSize != SPECIFIED_ALLOCATION_SIZE_EDEFAULT;
+ case OrmPackage.XML_GENERATOR__DEFAULT_ALLOCATION_SIZE :
+ return defaultAllocationSize != DEFAULT_ALLOCATION_SIZE_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IGenerator.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_GENERATOR__NAME :
+ return JpaCoreMappingsPackage.IGENERATOR__NAME;
+ case OrmPackage.XML_GENERATOR__INITIAL_VALUE :
+ return JpaCoreMappingsPackage.IGENERATOR__INITIAL_VALUE;
+ case OrmPackage.XML_GENERATOR__SPECIFIED_INITIAL_VALUE :
+ return JpaCoreMappingsPackage.IGENERATOR__SPECIFIED_INITIAL_VALUE;
+ case OrmPackage.XML_GENERATOR__DEFAULT_INITIAL_VALUE :
+ return JpaCoreMappingsPackage.IGENERATOR__DEFAULT_INITIAL_VALUE;
+ case OrmPackage.XML_GENERATOR__ALLOCATION_SIZE :
+ return JpaCoreMappingsPackage.IGENERATOR__ALLOCATION_SIZE;
+ case OrmPackage.XML_GENERATOR__SPECIFIED_ALLOCATION_SIZE :
+ return JpaCoreMappingsPackage.IGENERATOR__SPECIFIED_ALLOCATION_SIZE;
+ case OrmPackage.XML_GENERATOR__DEFAULT_ALLOCATION_SIZE :
+ return JpaCoreMappingsPackage.IGENERATOR__DEFAULT_ALLOCATION_SIZE;
+ 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 == IGenerator.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IGENERATOR__NAME :
+ return OrmPackage.XML_GENERATOR__NAME;
+ case JpaCoreMappingsPackage.IGENERATOR__INITIAL_VALUE :
+ return OrmPackage.XML_GENERATOR__INITIAL_VALUE;
+ case JpaCoreMappingsPackage.IGENERATOR__SPECIFIED_INITIAL_VALUE :
+ return OrmPackage.XML_GENERATOR__SPECIFIED_INITIAL_VALUE;
+ case JpaCoreMappingsPackage.IGENERATOR__DEFAULT_INITIAL_VALUE :
+ return OrmPackage.XML_GENERATOR__DEFAULT_INITIAL_VALUE;
+ case JpaCoreMappingsPackage.IGENERATOR__ALLOCATION_SIZE :
+ return OrmPackage.XML_GENERATOR__ALLOCATION_SIZE;
+ case JpaCoreMappingsPackage.IGENERATOR__SPECIFIED_ALLOCATION_SIZE :
+ return OrmPackage.XML_GENERATOR__SPECIFIED_ALLOCATION_SIZE;
+ case JpaCoreMappingsPackage.IGENERATOR__DEFAULT_ALLOCATION_SIZE :
+ return OrmPackage.XML_GENERATOR__DEFAULT_ALLOCATION_SIZE;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(", specifiedInitialValue: ");
+ result.append(specifiedInitialValue);
+ result.append(", defaultInitialValue: ");
+ result.append(defaultInitialValue);
+ result.append(", specifiedAllocationSize: ");
+ result.append(specifiedAllocationSize);
+ result.append(", defaultAllocationSize: ");
+ result.append(defaultAllocationSize);
+ result.append(')');
+ return result.toString();
+ }
+} // XmlGenerator
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlId.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlId.java
new file mode 100644
index 0000000000..0ae2af8f49
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlId.java
@@ -0,0 +1,672 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+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.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.mappings.IColumn;
+import org.eclipse.jpt.core.internal.mappings.IColumnMapping;
+import org.eclipse.jpt.core.internal.mappings.IGeneratedValue;
+import org.eclipse.jpt.core.internal.mappings.IId;
+import org.eclipse.jpt.core.internal.mappings.ISequenceGenerator;
+import org.eclipse.jpt.core.internal.mappings.ITableGenerator;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.core.internal.mappings.TemporalType;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Id</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlId()
+ * @model kind="class"
+ * @generated
+ */
+public class XmlId extends XmlAttributeMapping
+ implements IId, IXmlColumnMapping
+{
+ /**
+ * The cached value of the '{@link #getColumn() <em>Column</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getColumn()
+ * @generated
+ * @ordered
+ */
+ protected IColumn column;
+
+ /**
+ * The cached value of the '{@link #getGeneratedValue() <em>Generated Value</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getGeneratedValue()
+ * @generated
+ * @ordered
+ */
+ protected IGeneratedValue generatedValue;
+
+ /**
+ * The default value of the '{@link #getTemporal() <em>Temporal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTemporal()
+ * @generated
+ * @ordered
+ */
+ protected static final TemporalType TEMPORAL_EDEFAULT = TemporalType.NULL;
+
+ /**
+ * The cached value of the '{@link #getTemporal() <em>Temporal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTemporal()
+ * @generated
+ * @ordered
+ */
+ protected TemporalType temporal = TEMPORAL_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getTableGenerator() <em>Table Generator</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTableGenerator()
+ * @generated
+ * @ordered
+ */
+ protected ITableGenerator tableGenerator;
+
+ /**
+ * The cached value of the '{@link #getSequenceGenerator() <em>Sequence Generator</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSequenceGenerator()
+ * @generated
+ * @ordered
+ */
+ protected ISequenceGenerator sequenceGenerator;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected XmlId() {
+ super();
+ this.column = OrmFactory.eINSTANCE.createXmlColumn(buildOwner());
+ ((InternalEObject) this.column).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OrmPackage.XML_ID__COLUMN, null, null);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_ID;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Column</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Column</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Column</em>' containment reference.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIId_Column()
+ * @model containment="true" required="true" changeable="false"
+ * @generated
+ */
+ public IColumn getColumn() {
+ return column;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetColumn(IColumn newColumn, NotificationChain msgs) {
+ IColumn oldColumn = column;
+ column = newColumn;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OrmPackage.XML_ID__COLUMN, oldColumn, newColumn);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Generated Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Generated 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>Generated Value</em>' containment reference.
+ * @see #setGeneratedValue(IGeneratedValue)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIId_GeneratedValue()
+ * @model containment="true"
+ * @generated
+ */
+ public IGeneratedValue getGeneratedValue() {
+ return generatedValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetGeneratedValue(IGeneratedValue newGeneratedValue, NotificationChain msgs) {
+ IGeneratedValue oldGeneratedValue = generatedValue;
+ generatedValue = newGeneratedValue;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OrmPackage.XML_ID__GENERATED_VALUE, oldGeneratedValue, newGeneratedValue);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlId#getGeneratedValue <em>Generated Value</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Generated Value</em>' containment reference.
+ * @see #getGeneratedValue()
+ * @generated
+ */
+ public void setGeneratedValue(IGeneratedValue newGeneratedValue) {
+ if (newGeneratedValue != generatedValue) {
+ NotificationChain msgs = null;
+ if (generatedValue != null)
+ msgs = ((InternalEObject) generatedValue).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OrmPackage.XML_ID__GENERATED_VALUE, null, msgs);
+ if (newGeneratedValue != null)
+ msgs = ((InternalEObject) newGeneratedValue).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OrmPackage.XML_ID__GENERATED_VALUE, null, msgs);
+ msgs = basicSetGeneratedValue(newGeneratedValue, msgs);
+ if (msgs != null)
+ msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_ID__GENERATED_VALUE, newGeneratedValue, newGeneratedValue));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Temporal</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.TemporalType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Temporal</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Temporal</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.TemporalType
+ * @see #setTemporal(TemporalType)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIId_Temporal()
+ * @model
+ * @generated
+ */
+ public TemporalType getTemporal() {
+ return temporal;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlId#getTemporal <em>Temporal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Temporal</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.TemporalType
+ * @see #getTemporal()
+ * @generated
+ */
+ public void setTemporal(TemporalType newTemporal) {
+ TemporalType oldTemporal = temporal;
+ temporal = newTemporal == null ? TEMPORAL_EDEFAULT : newTemporal;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_ID__TEMPORAL, oldTemporal, temporal));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Table Generator</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Table Generator</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Table Generator</em>' containment reference.
+ * @see #setTableGenerator(ITableGenerator)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIId_TableGenerator()
+ * @model containment="true"
+ * @generated
+ */
+ public ITableGenerator getTableGenerator() {
+ return tableGenerator;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetTableGenerator(ITableGenerator newTableGenerator, NotificationChain msgs) {
+ ITableGenerator oldTableGenerator = tableGenerator;
+ tableGenerator = newTableGenerator;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OrmPackage.XML_ID__TABLE_GENERATOR, oldTableGenerator, newTableGenerator);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlId#getTableGenerator <em>Table Generator</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Table Generator</em>' containment reference.
+ * @see #getTableGenerator()
+ * @generated
+ */
+ public void setTableGenerator(ITableGenerator newTableGenerator) {
+ if (newTableGenerator != tableGenerator) {
+ NotificationChain msgs = null;
+ if (tableGenerator != null)
+ msgs = ((InternalEObject) tableGenerator).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OrmPackage.XML_ID__TABLE_GENERATOR, null, msgs);
+ if (newTableGenerator != null)
+ msgs = ((InternalEObject) newTableGenerator).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OrmPackage.XML_ID__TABLE_GENERATOR, null, msgs);
+ msgs = basicSetTableGenerator(newTableGenerator, msgs);
+ if (msgs != null)
+ msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_ID__TABLE_GENERATOR, newTableGenerator, newTableGenerator));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Sequence Generator</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Sequence Generator</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Sequence Generator</em>' containment reference.
+ * @see #setSequenceGenerator(ISequenceGenerator)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIId_SequenceGenerator()
+ * @model containment="true"
+ * @generated
+ */
+ public ISequenceGenerator getSequenceGenerator() {
+ return sequenceGenerator;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetSequenceGenerator(ISequenceGenerator newSequenceGenerator, NotificationChain msgs) {
+ ISequenceGenerator oldSequenceGenerator = sequenceGenerator;
+ sequenceGenerator = newSequenceGenerator;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OrmPackage.XML_ID__SEQUENCE_GENERATOR, oldSequenceGenerator, newSequenceGenerator);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlId#getSequenceGenerator <em>Sequence Generator</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Sequence Generator</em>' containment reference.
+ * @see #getSequenceGenerator()
+ * @generated
+ */
+ public void setSequenceGenerator(ISequenceGenerator newSequenceGenerator) {
+ if (newSequenceGenerator != sequenceGenerator) {
+ NotificationChain msgs = null;
+ if (sequenceGenerator != null)
+ msgs = ((InternalEObject) sequenceGenerator).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OrmPackage.XML_ID__SEQUENCE_GENERATOR, null, msgs);
+ if (newSequenceGenerator != null)
+ msgs = ((InternalEObject) newSequenceGenerator).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OrmPackage.XML_ID__SEQUENCE_GENERATOR, null, msgs);
+ msgs = basicSetSequenceGenerator(newSequenceGenerator, msgs);
+ if (msgs != null)
+ msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_ID__SEQUENCE_GENERATOR, newSequenceGenerator, newSequenceGenerator));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Column For Xml</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Column For Xml</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Column For Xml</em>' reference.
+ * @see #setColumnForXml(XmlColumn)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIXmlColumnMapping_ColumnForXml()
+ * @model resolveProxies="false" volatile="true"
+ * @generated NOT
+ */
+ public XmlColumn getColumnForXml() {
+ if (((XmlColumn) getColumn()).isAllFeaturesUnset()) {
+ return null;
+ }
+ return (XmlColumn) getColumn();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlId#getColumnForXml <em>Column For Xml</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Column For Xml</em>' reference.
+ * @see #getColumnForXml()
+ * @generated NOT
+ */
+ public void setColumnForXmlGen(XmlColumn newColumnForXml) {
+ XmlColumn oldValue = newColumnForXml == null ? (XmlColumn) getColumn() : null;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_ID__COLUMN_FOR_XML, oldValue, newColumnForXml));
+ }
+
+ public void setColumnForXml(XmlColumn newColumnForXml) {
+ setColumnForXmlGen(newColumnForXml);
+ if (newColumnForXml == null) {
+ ((XmlColumn) getColumn()).unsetAllAttributes();
+ }
+ }
+
+ public void makeColumnForXmlNonNull() {
+ setColumnForXmlGen(getColumnForXml());
+ }
+
+ public void makeColumnForXmlNull() {
+ setColumnForXmlGen(null);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case OrmPackage.XML_ID__COLUMN :
+ return basicSetColumn(null, msgs);
+ case OrmPackage.XML_ID__GENERATED_VALUE :
+ return basicSetGeneratedValue(null, msgs);
+ case OrmPackage.XML_ID__TABLE_GENERATOR :
+ return basicSetTableGenerator(null, msgs);
+ case OrmPackage.XML_ID__SEQUENCE_GENERATOR :
+ return basicSetSequenceGenerator(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 OrmPackage.XML_ID__COLUMN :
+ return getColumn();
+ case OrmPackage.XML_ID__GENERATED_VALUE :
+ return getGeneratedValue();
+ case OrmPackage.XML_ID__TEMPORAL :
+ return getTemporal();
+ case OrmPackage.XML_ID__TABLE_GENERATOR :
+ return getTableGenerator();
+ case OrmPackage.XML_ID__SEQUENCE_GENERATOR :
+ return getSequenceGenerator();
+ case OrmPackage.XML_ID__COLUMN_FOR_XML :
+ return getColumnForXml();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case OrmPackage.XML_ID__GENERATED_VALUE :
+ setGeneratedValue((IGeneratedValue) newValue);
+ return;
+ case OrmPackage.XML_ID__TEMPORAL :
+ setTemporal((TemporalType) newValue);
+ return;
+ case OrmPackage.XML_ID__TABLE_GENERATOR :
+ setTableGenerator((ITableGenerator) newValue);
+ return;
+ case OrmPackage.XML_ID__SEQUENCE_GENERATOR :
+ setSequenceGenerator((ISequenceGenerator) newValue);
+ return;
+ case OrmPackage.XML_ID__COLUMN_FOR_XML :
+ setColumnForXml((XmlColumn) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_ID__GENERATED_VALUE :
+ setGeneratedValue((IGeneratedValue) null);
+ return;
+ case OrmPackage.XML_ID__TEMPORAL :
+ setTemporal(TEMPORAL_EDEFAULT);
+ return;
+ case OrmPackage.XML_ID__TABLE_GENERATOR :
+ setTableGenerator((ITableGenerator) null);
+ return;
+ case OrmPackage.XML_ID__SEQUENCE_GENERATOR :
+ setSequenceGenerator((ISequenceGenerator) null);
+ return;
+ case OrmPackage.XML_ID__COLUMN_FOR_XML :
+ setColumnForXml((XmlColumn) null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_ID__COLUMN :
+ return column != null;
+ case OrmPackage.XML_ID__GENERATED_VALUE :
+ return generatedValue != null;
+ case OrmPackage.XML_ID__TEMPORAL :
+ return temporal != TEMPORAL_EDEFAULT;
+ case OrmPackage.XML_ID__TABLE_GENERATOR :
+ return tableGenerator != null;
+ case OrmPackage.XML_ID__SEQUENCE_GENERATOR :
+ return sequenceGenerator != null;
+ case OrmPackage.XML_ID__COLUMN_FOR_XML :
+ return getColumnForXml() != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IColumnMapping.class) {
+ switch (derivedFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IId.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_ID__COLUMN :
+ return JpaCoreMappingsPackage.IID__COLUMN;
+ case OrmPackage.XML_ID__GENERATED_VALUE :
+ return JpaCoreMappingsPackage.IID__GENERATED_VALUE;
+ case OrmPackage.XML_ID__TEMPORAL :
+ return JpaCoreMappingsPackage.IID__TEMPORAL;
+ case OrmPackage.XML_ID__TABLE_GENERATOR :
+ return JpaCoreMappingsPackage.IID__TABLE_GENERATOR;
+ case OrmPackage.XML_ID__SEQUENCE_GENERATOR :
+ return JpaCoreMappingsPackage.IID__SEQUENCE_GENERATOR;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IXmlColumnMapping.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_ID__COLUMN_FOR_XML :
+ return OrmPackage.IXML_COLUMN_MAPPING__COLUMN_FOR_XML;
+ 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 == IColumnMapping.class) {
+ switch (baseFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IId.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IID__COLUMN :
+ return OrmPackage.XML_ID__COLUMN;
+ case JpaCoreMappingsPackage.IID__GENERATED_VALUE :
+ return OrmPackage.XML_ID__GENERATED_VALUE;
+ case JpaCoreMappingsPackage.IID__TEMPORAL :
+ return OrmPackage.XML_ID__TEMPORAL;
+ case JpaCoreMappingsPackage.IID__TABLE_GENERATOR :
+ return OrmPackage.XML_ID__TABLE_GENERATOR;
+ case JpaCoreMappingsPackage.IID__SEQUENCE_GENERATOR :
+ return OrmPackage.XML_ID__SEQUENCE_GENERATOR;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IXmlColumnMapping.class) {
+ switch (baseFeatureID) {
+ case OrmPackage.IXML_COLUMN_MAPPING__COLUMN_FOR_XML :
+ return OrmPackage.XML_ID__COLUMN_FOR_XML;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (temporal: ");
+ result.append(temporal);
+ result.append(')');
+ return result.toString();
+ }
+
+ public String getKey() {
+ return IMappingKeys.ID_ATTRIBUTE_MAPPING_KEY;
+ }
+
+ @Override
+ protected void initializeOn(XmlAttributeMapping newMapping) {
+ newMapping.initializeFromXmlIdMapping(this);
+ }
+
+ @Override
+ public void initializeFromXmlBasicMapping(XmlBasic oldMapping) {
+ super.initializeFromXmlBasicMapping(oldMapping);
+ setTemporal(oldMapping.getTemporal());
+ }
+
+ @Override
+ public int xmlSequence() {
+ return 0;
+ }
+
+ public String primaryKeyColumnName() {
+ return this.getColumn().getName();
+ }
+
+ public IGeneratedValue createGeneratedValue() {
+ return OrmFactory.eINSTANCE.createXmlGeneratedValue();
+ }
+
+ public ISequenceGenerator createSequenceGenerator() {
+ return OrmFactory.eINSTANCE.createXmlSequenceGenerator();
+ }
+
+ public ITableGenerator createTableGenerator() {
+ return OrmFactory.eINSTANCE.createXmlTableGenerator();
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlIdProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlIdProvider.java
new file mode 100644
index 0000000000..757a5bb187
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlIdProvider.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.jpt.core.internal.IMappingKeys;
+
+public class XmlIdProvider implements IXmlAttributeMappingProvider
+{
+ // singleton
+ private static final XmlIdProvider INSTANCE = new XmlIdProvider();
+
+ /**
+ * Return the singleton.
+ */
+ public static IXmlAttributeMappingProvider instance() {
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private XmlIdProvider() {
+ super();
+ }
+
+ public XmlAttributeMapping buildAttributeMapping() {
+ return OrmFactory.eINSTANCE.createXmlId();
+ }
+
+ public String key() {
+ return IMappingKeys.ID_ATTRIBUTE_MAPPING_KEY;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlJoinColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlJoinColumn.java
new file mode 100644
index 0000000000..4d301f1331
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlJoinColumn.java
@@ -0,0 +1,456 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.content.orm.resource.OrmXmlMapper;
+import org.eclipse.jpt.core.internal.emfutility.DOMUtilities;
+import org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean;
+import org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean;
+import org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.core.internal.platform.BaseJpaPlatform;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+import org.eclipse.jpt.db.internal.Column;
+import org.eclipse.jpt.db.internal.Table;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Join Column</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.XmlJoinColumn#getSpecifiedReferencedColumnNameForXml <em>Specified Referenced Column Name For Xml</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlJoinColumn()
+ * @model kind="class"
+ * @generated
+ */
+public class XmlJoinColumn extends AbstractXmlColumn implements IJoinColumn
+{
+ /**
+ * The default value of the '{@link #getReferencedColumnName() <em>Referenced Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getReferencedColumnName()
+ * @generated
+ * @ordered
+ */
+ protected static final String REFERENCED_COLUMN_NAME_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getSpecifiedReferencedColumnName() <em>Specified Referenced Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedReferencedColumnName()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_REFERENCED_COLUMN_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedReferencedColumnName() <em>Specified Referenced Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedReferencedColumnName()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedReferencedColumnName = SPECIFIED_REFERENCED_COLUMN_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultReferencedColumnName() <em>Default Referenced Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultReferencedColumnName()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_REFERENCED_COLUMN_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultReferencedColumnName() <em>Default Referenced Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultReferencedColumnName()
+ * @generated
+ * @ordered
+ */
+ protected String defaultReferencedColumnName = DEFAULT_REFERENCED_COLUMN_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getSpecifiedReferencedColumnNameForXml() <em>Specified Referenced Column Name For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedReferencedColumnNameForXml()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_REFERENCED_COLUMN_NAME_FOR_XML_EDEFAULT = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected XmlJoinColumn() {
+ throw new UnsupportedOperationException();
+ }
+
+ protected XmlJoinColumn(IJoinColumn.Owner owner) {
+ super(owner);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_JOIN_COLUMN;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Referenced Column Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Referenced Column Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIJoinColumn_ReferencedColumnName()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated NOT
+ */
+ public String getReferencedColumnName() {
+ return (this.getSpecifiedReferencedColumnName() == null) ? getDefaultReferencedColumnName() : this.getSpecifiedReferencedColumnName();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Referenced Column Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Referenced Column Name</em>' attribute.
+ * @see #setSpecifiedReferencedColumnName(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIAbstractJoinColumn_SpecifiedReferencedColumnName()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedReferencedColumnName() {
+ return specifiedReferencedColumnName;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlJoinColumn#getSpecifiedReferencedColumnName <em>Specified Referenced Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Referenced Column Name</em>' attribute.
+ * @see #getSpecifiedReferencedColumnName()
+ * @generated
+ */
+ public void setSpecifiedReferencedColumnNameGen(String newSpecifiedReferencedColumnName) {
+ String oldSpecifiedReferencedColumnName = specifiedReferencedColumnName;
+ specifiedReferencedColumnName = newSpecifiedReferencedColumnName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME, oldSpecifiedReferencedColumnName, specifiedReferencedColumnName));
+ }
+
+ public void setSpecifiedReferencedColumnName(String newSpecifiedReferencedColumnName) {
+ setSpecifiedReferencedColumnNameGen(newSpecifiedReferencedColumnName);
+ setSpecifiedReferencedColumnNameForXml(newSpecifiedReferencedColumnName);
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Referenced Column Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Referenced Column Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIAbstractJoinColumn_DefaultReferencedColumnName()
+ * @model changeable="false"
+ * @generated
+ */
+ public String getDefaultReferencedColumnName() {
+ return defaultReferencedColumnName;
+ }
+
+ protected void setDefaultReferencedColumnName(String newDefaultReferencedColumnName) {
+ String oldDefaultReferencedColumnName = this.defaultReferencedColumnName;
+ this.defaultReferencedColumnName = newDefaultReferencedColumnName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME, oldDefaultReferencedColumnName, newDefaultReferencedColumnName));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Referenced Column Name For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Referenced Column Name For Xml</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Referenced Column Name For Xml</em>' attribute.
+ * @see #setSpecifiedReferencedColumnNameForXml(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlJoinColumn_SpecifiedReferencedColumnNameForXml()
+ * @model volatile="true"
+ * @generated NOT
+ */
+ public String getSpecifiedReferencedColumnNameForXml() {
+ return getSpecifiedReferencedColumnName();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlJoinColumn#getSpecifiedReferencedColumnNameForXml <em>Specified Referenced Column Name For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Referenced Column Name For Xml</em>' attribute.
+ * @see #getSpecifiedReferencedColumnNameForXml()
+ * @generated NOT
+ */
+ public void setSpecifiedReferencedColumnNameForXml(String newSpecifiedReferencedColumnNameForXml) {
+ setSpecifiedReferencedColumnNameGen(newSpecifiedReferencedColumnNameForXml);
+ if (eNotificationRequired())
+ //make sure oldValue different from newValue because we don't store the value from the xml, see super.eNotify()
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME_FOR_XML, newSpecifiedReferencedColumnNameForXml + " ", newSpecifiedReferencedColumnNameForXml));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case OrmPackage.XML_JOIN_COLUMN__REFERENCED_COLUMN_NAME :
+ return getReferencedColumnName();
+ case OrmPackage.XML_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME :
+ return getSpecifiedReferencedColumnName();
+ case OrmPackage.XML_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME :
+ return getDefaultReferencedColumnName();
+ case OrmPackage.XML_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME_FOR_XML :
+ return getSpecifiedReferencedColumnNameForXml();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case OrmPackage.XML_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME :
+ setSpecifiedReferencedColumnName((String) newValue);
+ return;
+ case OrmPackage.XML_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME_FOR_XML :
+ setSpecifiedReferencedColumnNameForXml((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME :
+ setSpecifiedReferencedColumnName(SPECIFIED_REFERENCED_COLUMN_NAME_EDEFAULT);
+ return;
+ case OrmPackage.XML_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME_FOR_XML :
+ setSpecifiedReferencedColumnNameForXml(SPECIFIED_REFERENCED_COLUMN_NAME_FOR_XML_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_JOIN_COLUMN__REFERENCED_COLUMN_NAME :
+ return REFERENCED_COLUMN_NAME_EDEFAULT == null ? getReferencedColumnName() != null : !REFERENCED_COLUMN_NAME_EDEFAULT.equals(getReferencedColumnName());
+ case OrmPackage.XML_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME :
+ return SPECIFIED_REFERENCED_COLUMN_NAME_EDEFAULT == null ? specifiedReferencedColumnName != null : !SPECIFIED_REFERENCED_COLUMN_NAME_EDEFAULT.equals(specifiedReferencedColumnName);
+ case OrmPackage.XML_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME :
+ return DEFAULT_REFERENCED_COLUMN_NAME_EDEFAULT == null ? defaultReferencedColumnName != null : !DEFAULT_REFERENCED_COLUMN_NAME_EDEFAULT.equals(defaultReferencedColumnName);
+ case OrmPackage.XML_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME_FOR_XML :
+ return SPECIFIED_REFERENCED_COLUMN_NAME_FOR_XML_EDEFAULT == null ? getSpecifiedReferencedColumnNameForXml() != null : !SPECIFIED_REFERENCED_COLUMN_NAME_FOR_XML_EDEFAULT.equals(getSpecifiedReferencedColumnNameForXml());
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IAbstractJoinColumn.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_JOIN_COLUMN__REFERENCED_COLUMN_NAME :
+ return JpaCoreMappingsPackage.IABSTRACT_JOIN_COLUMN__REFERENCED_COLUMN_NAME;
+ case OrmPackage.XML_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME :
+ return JpaCoreMappingsPackage.IABSTRACT_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME;
+ case OrmPackage.XML_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME :
+ return JpaCoreMappingsPackage.IABSTRACT_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IJoinColumn.class) {
+ switch (derivedFeatureID) {
+ 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 == IAbstractJoinColumn.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IABSTRACT_JOIN_COLUMN__REFERENCED_COLUMN_NAME :
+ return OrmPackage.XML_JOIN_COLUMN__REFERENCED_COLUMN_NAME;
+ case JpaCoreMappingsPackage.IABSTRACT_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME :
+ return OrmPackage.XML_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME;
+ case JpaCoreMappingsPackage.IABSTRACT_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME :
+ return OrmPackage.XML_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IJoinColumn.class) {
+ switch (baseFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (specifiedReferencedColumnName: ");
+ result.append(specifiedReferencedColumnName);
+ result.append(", defaultReferencedColumnName: ");
+ result.append(defaultReferencedColumnName);
+ result.append(')');
+ return result.toString();
+ }
+
+ public void setSpecifiedName(String newSpecifiedName) {
+ setSpecifiedNameGen(newSpecifiedName);
+ setSpecifiedNameForXml(newSpecifiedName);
+ }
+
+ public void setUnique(DefaultFalseBoolean newUnique) {
+ setUniqueGen(newUnique);
+ setUniqueForXml(newUnique);
+ }
+
+ public void setNullable(DefaultTrueBoolean newNullable) {
+ setNullableGen(newNullable);
+ setNullableForXml(newNullable);
+ }
+
+ public void setInsertable(DefaultTrueBoolean newInsertable) {
+ setInsertableGen(newInsertable);
+ setInsertableForXml(newInsertable);
+ }
+
+ public void setUpdatable(DefaultTrueBoolean newUpdatable) {
+ setUpdatableGen(newUpdatable);
+ setUpdatableForXml(newUpdatable);
+ }
+
+ public void setColumnDefinition(String newColumnDefinition) {
+ setColumnDefinitionGen(newColumnDefinition);
+ setColumnDefinitionForXml(newColumnDefinition);
+ }
+
+ public void setSpecifiedTable(String newSpecifiedTable) {
+ setSpecifiedTableGen(newSpecifiedTable);
+ setSpecifiedTableForXml(newSpecifiedTable);
+ }
+
+ public IJoinColumn.Owner getOwner() {
+ return (IJoinColumn.Owner) this.owner;
+ }
+
+ public Table dbReferencedColumnTable() {
+ return getOwner().dbReferencedColumnTable();
+ }
+
+ public Column dbReferencedColumn() {
+ Table table = dbReferencedColumnTable();
+ return (table == null) ? null : table.columnNamed(getReferencedColumnName());
+ }
+
+ public boolean isReferencedColumnResolved() {
+ return dbReferencedColumn() != null;
+ }
+
+ public ITextRange getReferencedColumnNameTextRange() {
+ if (node == null) {
+ return owner.getTextRange();
+ }
+ IDOMNode referencedColumnNameNode = (IDOMNode) DOMUtilities.getChildAttributeNode(node, OrmXmlMapper.REFERENCED_COLUMN_NAME);
+ return (referencedColumnNameNode == null) ? getTextRange() : getTextRange(referencedColumnNameNode);
+ }
+
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ setDefaultReferencedColumnName((String) defaultsContext.getDefault(BaseJpaPlatform.DEFAULT_JOIN_COLUMN_REFERENCED_COLUMN_NAME_KEY));
+ setDefaultName((String) defaultsContext.getDefault(BaseJpaPlatform.DEFAULT_JOIN_COLUMN_NAME_KEY));
+ setDefaultTable((String) defaultsContext.getDefault(BaseJpaPlatform.DEFAULT_JOIN_COLUMN_TABLE_KEY));
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlJoinTable.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlJoinTable.java
new file mode 100644
index 0000000000..2f899d7b22
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlJoinTable.java
@@ -0,0 +1,507 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import java.util.Collection;
+import java.util.Set;
+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.common.notify.impl.AdapterImpl;
+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.jpt.core.internal.mappings.IJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.IJoinTable;
+import org.eclipse.jpt.core.internal.mappings.IRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.core.internal.platform.BaseJpaPlatform;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Join Table</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlJoinTable()
+ * @model kind="class"
+ * @generated
+ */
+public class XmlJoinTable extends AbstractXmlTable implements IJoinTable
+{
+ /**
+ * The cached value of the '{@link #getSpecifiedJoinColumns() <em>Specified Join Columns</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedJoinColumns()
+ * @generated
+ * @ordered
+ */
+ protected EList<IJoinColumn> specifiedJoinColumns;
+
+ /**
+ * The cached value of the '{@link #getDefaultJoinColumns() <em>Default Join Columns</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultJoinColumns()
+ * @generated
+ * @ordered
+ */
+ protected EList<IJoinColumn> defaultJoinColumns;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedInverseJoinColumns() <em>Specified Inverse Join Columns</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedInverseJoinColumns()
+ * @generated
+ * @ordered
+ */
+ protected EList<IJoinColumn> specifiedInverseJoinColumns;
+
+ /**
+ * The cached value of the '{@link #getDefaultInverseJoinColumns() <em>Default Inverse Join Columns</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultInverseJoinColumns()
+ * @generated
+ * @ordered
+ */
+ protected EList<IJoinColumn> defaultInverseJoinColumns;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected XmlJoinTable() {
+ throw new UnsupportedOperationException();
+ }
+
+ protected XmlJoinTable(IJoinTable.Owner owner) {
+ super(owner);
+ this.getDefaultJoinColumns().add(this.createJoinColumn(new JoinColumnOwner(this)));
+ this.getDefaultInverseJoinColumns().add(this.createJoinColumn(new InverseJoinColumnOwner(this)));
+ this.eAdapters().add(this.buildListener());
+ }
+
+ @Override
+ protected void addInsignificantXmlFeatureIdsTo(Set<Integer> insignificantXmlFeatureIds) {
+ super.addInsignificantXmlFeatureIdsTo(insignificantXmlFeatureIds);
+ insignificantXmlFeatureIds.add(JpaCoreMappingsPackage.IJOIN_TABLE__DEFAULT_JOIN_COLUMNS);
+ insignificantXmlFeatureIds.add(JpaCoreMappingsPackage.IJOIN_TABLE__DEFAULT_INVERSE_JOIN_COLUMNS);
+ insignificantXmlFeatureIds.add(JpaCoreMappingsPackage.IJOIN_TABLE__JOIN_COLUMNS);
+ insignificantXmlFeatureIds.add(JpaCoreMappingsPackage.IJOIN_TABLE__INVERSE_JOIN_COLUMNS);
+ }
+
+ private IJoinColumn createJoinColumn(IJoinColumn.Owner owner) {
+ return OrmFactory.eINSTANCE.createXmlJoinColumn(owner);
+ }
+
+ private Adapter buildListener() {
+ return new AdapterImpl() {
+ public void notifyChanged(Notification notification) {
+ XmlJoinTable.this.notifyChanged(notification);
+ }
+ };
+ }
+
+ /**
+ * check for changes to the 'specifiedJoinColumns' and
+ * 'specifiedInverseJoinColumns' lists so we can notify the
+ * model adapter of any changes;
+ * also listen for changes to the 'defaultJoinColumns' and
+ * 'defaultInverseJoinColumns' lists so we can spank the developer
+ */
+ void notifyChanged(Notification notification) {
+ switch (notification.getFeatureID(IJoinTable.class)) {
+ case JpaCoreMappingsPackage.IJOIN_TABLE__DEFAULT_JOIN_COLUMNS :
+ defaultJoinColumnsChanged(notification);
+ break;
+ case JpaCoreMappingsPackage.IJOIN_TABLE__DEFAULT_INVERSE_JOIN_COLUMNS :
+ defaultInverseJoinColumnsChanged(notification);
+ break;
+ default :
+ break;
+ }
+ }
+
+ void defaultJoinColumnsChanged(Notification notification) {
+ throw new IllegalStateException("'defaultJoinColumns' cannot be changed");
+ }
+
+ void defaultInverseJoinColumnsChanged(Notification notification) {
+ throw new IllegalStateException("'defaultInverseJoinColumns' cannot be changed");
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_JOIN_TABLE;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Join Columns</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>Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIJoinTable_JoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IJoinColumn" containment="true" transient="true" changeable="false" volatile="true"
+ * @generated NOT
+ */
+ public EList<IJoinColumn> getJoinColumns() {
+ return this.getSpecifiedJoinColumns().isEmpty() ? this.getDefaultJoinColumns() : this.getSpecifiedJoinColumns();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Join Columns</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>Specified Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIJoinTable_SpecifiedJoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IJoinColumn" containment="true"
+ * @generated
+ */
+ public EList<IJoinColumn> getSpecifiedJoinColumns() {
+ if (specifiedJoinColumns == null) {
+ specifiedJoinColumns = new EObjectContainmentEList<IJoinColumn>(IJoinColumn.class, this, OrmPackage.XML_JOIN_TABLE__SPECIFIED_JOIN_COLUMNS);
+ }
+ return specifiedJoinColumns;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Join Columns</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>Default Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIJoinTable_DefaultJoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IJoinColumn" containment="true"
+ * @generated
+ */
+ public EList<IJoinColumn> getDefaultJoinColumns() {
+ if (defaultJoinColumns == null) {
+ defaultJoinColumns = new EObjectContainmentEList<IJoinColumn>(IJoinColumn.class, this, OrmPackage.XML_JOIN_TABLE__DEFAULT_JOIN_COLUMNS);
+ }
+ return defaultJoinColumns;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Inverse Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Inverse Join Columns</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>Inverse Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIJoinTable_InverseJoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IJoinColumn" containment="true" transient="true" changeable="false" volatile="true"
+ * @generated NOT
+ */
+ public EList<IJoinColumn> getInverseJoinColumns() {
+ return this.getSpecifiedInverseJoinColumns().isEmpty() ? this.getDefaultInverseJoinColumns() : this.getSpecifiedInverseJoinColumns();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Inverse Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Inverse Join Columns</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>Specified Inverse Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIJoinTable_SpecifiedInverseJoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IJoinColumn" containment="true"
+ * @generated
+ */
+ public EList<IJoinColumn> getSpecifiedInverseJoinColumns() {
+ if (specifiedInverseJoinColumns == null) {
+ specifiedInverseJoinColumns = new EObjectContainmentEList<IJoinColumn>(IJoinColumn.class, this, OrmPackage.XML_JOIN_TABLE__SPECIFIED_INVERSE_JOIN_COLUMNS);
+ }
+ return specifiedInverseJoinColumns;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Inverse Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Inverse Join Columns</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>Default Inverse Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIJoinTable_DefaultInverseJoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IJoinColumn" containment="true"
+ * @generated
+ */
+ public EList<IJoinColumn> getDefaultInverseJoinColumns() {
+ if (defaultInverseJoinColumns == null) {
+ defaultInverseJoinColumns = new EObjectContainmentEList<IJoinColumn>(IJoinColumn.class, this, OrmPackage.XML_JOIN_TABLE__DEFAULT_INVERSE_JOIN_COLUMNS);
+ }
+ return defaultInverseJoinColumns;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case OrmPackage.XML_JOIN_TABLE__JOIN_COLUMNS :
+ return ((InternalEList<?>) getJoinColumns()).basicRemove(otherEnd, msgs);
+ case OrmPackage.XML_JOIN_TABLE__SPECIFIED_JOIN_COLUMNS :
+ return ((InternalEList<?>) getSpecifiedJoinColumns()).basicRemove(otherEnd, msgs);
+ case OrmPackage.XML_JOIN_TABLE__DEFAULT_JOIN_COLUMNS :
+ return ((InternalEList<?>) getDefaultJoinColumns()).basicRemove(otherEnd, msgs);
+ case OrmPackage.XML_JOIN_TABLE__INVERSE_JOIN_COLUMNS :
+ return ((InternalEList<?>) getInverseJoinColumns()).basicRemove(otherEnd, msgs);
+ case OrmPackage.XML_JOIN_TABLE__SPECIFIED_INVERSE_JOIN_COLUMNS :
+ return ((InternalEList<?>) getSpecifiedInverseJoinColumns()).basicRemove(otherEnd, msgs);
+ case OrmPackage.XML_JOIN_TABLE__DEFAULT_INVERSE_JOIN_COLUMNS :
+ return ((InternalEList<?>) getDefaultInverseJoinColumns()).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 OrmPackage.XML_JOIN_TABLE__JOIN_COLUMNS :
+ return getJoinColumns();
+ case OrmPackage.XML_JOIN_TABLE__SPECIFIED_JOIN_COLUMNS :
+ return getSpecifiedJoinColumns();
+ case OrmPackage.XML_JOIN_TABLE__DEFAULT_JOIN_COLUMNS :
+ return getDefaultJoinColumns();
+ case OrmPackage.XML_JOIN_TABLE__INVERSE_JOIN_COLUMNS :
+ return getInverseJoinColumns();
+ case OrmPackage.XML_JOIN_TABLE__SPECIFIED_INVERSE_JOIN_COLUMNS :
+ return getSpecifiedInverseJoinColumns();
+ case OrmPackage.XML_JOIN_TABLE__DEFAULT_INVERSE_JOIN_COLUMNS :
+ return getDefaultInverseJoinColumns();
+ }
+ 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 OrmPackage.XML_JOIN_TABLE__SPECIFIED_JOIN_COLUMNS :
+ getSpecifiedJoinColumns().clear();
+ getSpecifiedJoinColumns().addAll((Collection<? extends IJoinColumn>) newValue);
+ return;
+ case OrmPackage.XML_JOIN_TABLE__DEFAULT_JOIN_COLUMNS :
+ getDefaultJoinColumns().clear();
+ getDefaultJoinColumns().addAll((Collection<? extends IJoinColumn>) newValue);
+ return;
+ case OrmPackage.XML_JOIN_TABLE__SPECIFIED_INVERSE_JOIN_COLUMNS :
+ getSpecifiedInverseJoinColumns().clear();
+ getSpecifiedInverseJoinColumns().addAll((Collection<? extends IJoinColumn>) newValue);
+ return;
+ case OrmPackage.XML_JOIN_TABLE__DEFAULT_INVERSE_JOIN_COLUMNS :
+ getDefaultInverseJoinColumns().clear();
+ getDefaultInverseJoinColumns().addAll((Collection<? extends IJoinColumn>) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_JOIN_TABLE__SPECIFIED_JOIN_COLUMNS :
+ getSpecifiedJoinColumns().clear();
+ return;
+ case OrmPackage.XML_JOIN_TABLE__DEFAULT_JOIN_COLUMNS :
+ getDefaultJoinColumns().clear();
+ return;
+ case OrmPackage.XML_JOIN_TABLE__SPECIFIED_INVERSE_JOIN_COLUMNS :
+ getSpecifiedInverseJoinColumns().clear();
+ return;
+ case OrmPackage.XML_JOIN_TABLE__DEFAULT_INVERSE_JOIN_COLUMNS :
+ getDefaultInverseJoinColumns().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_JOIN_TABLE__JOIN_COLUMNS :
+ return !getJoinColumns().isEmpty();
+ case OrmPackage.XML_JOIN_TABLE__SPECIFIED_JOIN_COLUMNS :
+ return specifiedJoinColumns != null && !specifiedJoinColumns.isEmpty();
+ case OrmPackage.XML_JOIN_TABLE__DEFAULT_JOIN_COLUMNS :
+ return defaultJoinColumns != null && !defaultJoinColumns.isEmpty();
+ case OrmPackage.XML_JOIN_TABLE__INVERSE_JOIN_COLUMNS :
+ return !getInverseJoinColumns().isEmpty();
+ case OrmPackage.XML_JOIN_TABLE__SPECIFIED_INVERSE_JOIN_COLUMNS :
+ return specifiedInverseJoinColumns != null && !specifiedInverseJoinColumns.isEmpty();
+ case OrmPackage.XML_JOIN_TABLE__DEFAULT_INVERSE_JOIN_COLUMNS :
+ return defaultInverseJoinColumns != null && !defaultInverseJoinColumns.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IJoinTable.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_JOIN_TABLE__JOIN_COLUMNS :
+ return JpaCoreMappingsPackage.IJOIN_TABLE__JOIN_COLUMNS;
+ case OrmPackage.XML_JOIN_TABLE__SPECIFIED_JOIN_COLUMNS :
+ return JpaCoreMappingsPackage.IJOIN_TABLE__SPECIFIED_JOIN_COLUMNS;
+ case OrmPackage.XML_JOIN_TABLE__DEFAULT_JOIN_COLUMNS :
+ return JpaCoreMappingsPackage.IJOIN_TABLE__DEFAULT_JOIN_COLUMNS;
+ case OrmPackage.XML_JOIN_TABLE__INVERSE_JOIN_COLUMNS :
+ return JpaCoreMappingsPackage.IJOIN_TABLE__INVERSE_JOIN_COLUMNS;
+ case OrmPackage.XML_JOIN_TABLE__SPECIFIED_INVERSE_JOIN_COLUMNS :
+ return JpaCoreMappingsPackage.IJOIN_TABLE__SPECIFIED_INVERSE_JOIN_COLUMNS;
+ case OrmPackage.XML_JOIN_TABLE__DEFAULT_INVERSE_JOIN_COLUMNS :
+ return JpaCoreMappingsPackage.IJOIN_TABLE__DEFAULT_INVERSE_JOIN_COLUMNS;
+ 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 == IJoinTable.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IJOIN_TABLE__JOIN_COLUMNS :
+ return OrmPackage.XML_JOIN_TABLE__JOIN_COLUMNS;
+ case JpaCoreMappingsPackage.IJOIN_TABLE__SPECIFIED_JOIN_COLUMNS :
+ return OrmPackage.XML_JOIN_TABLE__SPECIFIED_JOIN_COLUMNS;
+ case JpaCoreMappingsPackage.IJOIN_TABLE__DEFAULT_JOIN_COLUMNS :
+ return OrmPackage.XML_JOIN_TABLE__DEFAULT_JOIN_COLUMNS;
+ case JpaCoreMappingsPackage.IJOIN_TABLE__INVERSE_JOIN_COLUMNS :
+ return OrmPackage.XML_JOIN_TABLE__INVERSE_JOIN_COLUMNS;
+ case JpaCoreMappingsPackage.IJOIN_TABLE__SPECIFIED_INVERSE_JOIN_COLUMNS :
+ return OrmPackage.XML_JOIN_TABLE__SPECIFIED_INVERSE_JOIN_COLUMNS;
+ case JpaCoreMappingsPackage.IJOIN_TABLE__DEFAULT_INVERSE_JOIN_COLUMNS :
+ return OrmPackage.XML_JOIN_TABLE__DEFAULT_INVERSE_JOIN_COLUMNS;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ private XmlMultiRelationshipMappingInternal getMultiRelationshipMapping() {
+ return (XmlMultiRelationshipMappingInternal) eContainer();
+ }
+
+ @Override
+ protected void makeTableForXmlNonNull() {
+ getMultiRelationshipMapping().makeJoinTableForXmlNonNull();
+ }
+
+ @Override
+ protected void makeTableForXmlNull() {
+ getMultiRelationshipMapping().makeJoinTableForXmlNull();
+ }
+
+ // ********** IJoinTable implementation **********
+ public IJoinColumn createJoinColumn(int index) {
+ return this.createXmlJoinColumn(index);
+ }
+
+ private XmlJoinColumn createXmlJoinColumn(int index) {
+ return OrmFactory.eINSTANCE.createXmlJoinColumn(new JoinColumnOwner(this));
+ //return XmlJoinColumn.createJoinTableJoinColumn(new JoinColumnOwner(), this.getMember(), index);
+ }
+
+ public IJoinColumn createInverseJoinColumn(int index) {
+ return this.createXmlInverseJoinColumn(index);
+ }
+
+ private XmlJoinColumn createXmlInverseJoinColumn(int index) {
+ return OrmFactory.eINSTANCE.createXmlJoinColumn(new InverseJoinColumnOwner(this));
+ //return JavaJoinColumn.createJoinTableInverseJoinColumn(new InverseJoinColumnOwner(), this.getMember(), index);
+ }
+
+ public boolean containsSpecifiedJoinColumns() {
+ return !this.getSpecifiedJoinColumns().isEmpty();
+ }
+
+ public boolean containsSpecifiedInverseJoinColumns() {
+ return !this.getSpecifiedInverseJoinColumns().isEmpty();
+ }
+
+ @Override
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ super.refreshDefaults(defaultsContext);
+ setDefaultName((String) defaultsContext.getDefault(BaseJpaPlatform.DEFAULT_JOIN_TABLE_NAME_KEY));
+ }
+
+ public IRelationshipMapping relationshipMapping() {
+ return (IRelationshipMapping) this.eContainer();
+ }
+} // XmlJoinTable
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlManyToMany.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlManyToMany.java
new file mode 100644
index 0000000000..2e6a3e62fc
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlManyToMany.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.mappings.IManyToMany;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Many To Many</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlManyToMany()
+ * @model kind="class"
+ * @generated
+ */
+public class XmlManyToMany extends XmlMultiRelationshipMappingInternal
+ implements IManyToMany
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XmlManyToMany() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_MANY_TO_MANY;
+ }
+
+ public String getKey() {
+ return IMappingKeys.MANY_TO_MANY_ATTRIBUTE_MAPPING_KEY;
+ }
+
+ @Override
+ protected void initializeOn(XmlAttributeMapping newMapping) {
+ newMapping.initializeFromXmlManyToManyMapping(this);
+ }
+
+ @Override
+ public int xmlSequence() {
+ return 6;
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlManyToManyProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlManyToManyProvider.java
new file mode 100644
index 0000000000..0375fc325c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlManyToManyProvider.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.jpt.core.internal.IMappingKeys;
+
+public class XmlManyToManyProvider implements IXmlAttributeMappingProvider
+{
+ // singleton
+ private static final XmlManyToManyProvider INSTANCE = new XmlManyToManyProvider();
+
+ /**
+ * Return the singleton.
+ */
+ public static IXmlAttributeMappingProvider instance() {
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private XmlManyToManyProvider() {
+ super();
+ }
+
+ public XmlAttributeMapping buildAttributeMapping() {
+ return OrmFactory.eINSTANCE.createXmlManyToMany();
+ }
+
+ public String key() {
+ return IMappingKeys.MANY_TO_MANY_ATTRIBUTE_MAPPING_KEY;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlManyToOne.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlManyToOne.java
new file mode 100644
index 0000000000..64231a09e5
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlManyToOne.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.mappings.IManyToOne;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Many To One</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlManyToOne()
+ * @model kind="class"
+ * @generated
+ */
+public class XmlManyToOne extends XmlSingleRelationshipMapping
+ implements IManyToOne
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XmlManyToOne() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_MANY_TO_ONE;
+ }
+
+ @Override
+ public int xmlSequence() {
+ return 3;
+ }
+
+ public String getKey() {
+ return IMappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY;
+ }
+
+ @Override
+ protected void initializeOn(XmlAttributeMapping newMapping) {
+ newMapping.initializeFromXmlManyToOneMapping(this);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlManyToOneProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlManyToOneProvider.java
new file mode 100644
index 0000000000..8ed71afd19
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlManyToOneProvider.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.jpt.core.internal.IMappingKeys;
+
+public class XmlManyToOneProvider implements IXmlAttributeMappingProvider
+{
+ // singleton
+ private static final XmlManyToOneProvider INSTANCE = new XmlManyToOneProvider();
+
+ /**
+ * Return the singleton.
+ */
+ public static IXmlAttributeMappingProvider instance() {
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private XmlManyToOneProvider() {
+ super();
+ }
+
+
+ public XmlAttributeMapping buildAttributeMapping() {
+ return OrmFactory.eINSTANCE.createXmlManyToOne();
+ }
+
+ public String key() {
+ return IMappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlMappedSuperclass.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlMappedSuperclass.java
new file mode 100644
index 0000000000..c10ddb028e
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlMappedSuperclass.java
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import java.util.Iterator;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.IPersistentAttribute;
+import org.eclipse.jpt.core.internal.mappings.IMappedSuperclass;
+import org.eclipse.jpt.core.internal.mappings.ITable;
+import org.eclipse.jpt.utility.internal.iterators.EmptyIterator;
+import org.eclipse.jpt.utility.internal.iterators.FilteringIterator;
+import org.eclipse.jpt.utility.internal.iterators.TransformationIterator;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Xml Mapped Superclass</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlMappedSuperclass()
+ * @model kind="class"
+ * @generated
+ */
+public class XmlMappedSuperclass extends XmlTypeMapping
+ implements IMappedSuperclass
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XmlMappedSuperclass() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_MAPPED_SUPERCLASS;
+ }
+
+ public String getKey() {
+ return IMappingKeys.MAPPED_SUPERCLASS_TYPE_MAPPING_KEY;
+ }
+
+ public boolean tableNameIsInvalid(String tableName) {
+ return false;
+ }
+
+ public Iterator<String> associatedTableNamesIncludingInherited() {
+ return EmptyIterator.instance();
+ }
+
+ public Iterator<ITable> associatedTables() {
+ return EmptyIterator.instance();
+ }
+
+ public Iterator<ITable> associatedTablesIncludingInherited() {
+ return EmptyIterator.instance();
+ }
+
+ public Iterator<String> overridableAttributeNames() {
+ return new TransformationIterator<IPersistentAttribute, String>(new FilteringIterator<IPersistentAttribute>(getPersistentType().attributes()) {
+ protected boolean accept(Object o) {
+ String key = ((IPersistentAttribute) o).getMappingKey();
+ return key == IMappingKeys.BASIC_ATTRIBUTE_MAPPING_KEY || key == IMappingKeys.ID_ATTRIBUTE_MAPPING_KEY;
+ }
+ }) {
+ protected String transform(IPersistentAttribute next) {
+ return next.getName();
+ }
+ };
+ }
+
+ public Iterator<String> overridableAssociationNames() {
+ return new TransformationIterator<IPersistentAttribute, String>(new FilteringIterator<IPersistentAttribute>(getPersistentType().attributes()) {
+ protected boolean accept(Object o) {
+ String key = ((IPersistentAttribute) o).getMappingKey();
+ return key == IMappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY || key == IMappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY;
+ }
+ }) {
+ protected String transform(IPersistentAttribute next) {
+ return next.getName();
+ }
+ };
+ }
+
+ @Override
+ public int xmlSequence() {
+ return 0;
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlMappedSuperclassProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlMappedSuperclassProvider.java
new file mode 100644
index 0000000000..da76c35612
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlMappedSuperclassProvider.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.jpt.core.internal.IMappingKeys;
+
+
+public class XmlMappedSuperclassProvider implements IXmlTypeMappingProvider
+{
+ public XmlTypeMapping buildTypeMapping() {
+ return OrmFactory.eINSTANCE.createXmlMappedSuperclass();
+ }
+
+ public String key() {
+ return IMappingKeys.MAPPED_SUPERCLASS_TYPE_MAPPING_KEY;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlMultiRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlMultiRelationshipMapping.java
new file mode 100644
index 0000000000..d5f17f8b56
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlMultiRelationshipMapping.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Multi Relationship Mapping</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlMultiRelationshipMapping()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface XmlMultiRelationshipMapping extends IMultiRelationshipMapping
+{} // XmlMultiRelationshipMapping
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlMultiRelationshipMappingForXml.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlMultiRelationshipMappingForXml.java
new file mode 100644
index 0000000000..be3173cbe3
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlMultiRelationshipMappingForXml.java
@@ -0,0 +1,83 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Multi Relationship Mapping For Xml</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMappingForXml#getJoinTableForXml <em>Join Table For Xml</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMappingForXml#getOrderByForXml <em>Order By For Xml</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlMultiRelationshipMappingForXml()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface XmlMultiRelationshipMappingForXml extends EObject
+{
+ /**
+ * Returns the value of the '<em><b>Join Table For Xml</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Join Table For Xml</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Join Table For Xml</em>' reference.
+ * @see #setJoinTableForXml(XmlJoinTable)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlMultiRelationshipMappingForXml_JoinTableForXml()
+ * @model resolveProxies="false" volatile="true"
+ * @generated
+ */
+ XmlJoinTable getJoinTableForXml();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMappingForXml#getJoinTableForXml <em>Join Table For Xml</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Join Table For Xml</em>' reference.
+ * @see #getJoinTableForXml()
+ * @generated
+ */
+ void setJoinTableForXml(XmlJoinTable value);
+
+ /**
+ * Returns the value of the '<em><b>Order By For Xml</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Order By For Xml</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Order By For Xml</em>' reference.
+ * @see #setOrderByForXml(XmlOrderBy)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlMultiRelationshipMappingForXml_OrderByForXml()
+ * @model resolveProxies="false" volatile="true"
+ * @generated
+ */
+ XmlOrderBy getOrderByForXml();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMappingForXml#getOrderByForXml <em>Order By For Xml</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Order By For Xml</em>' reference.
+ * @see #getOrderByForXml()
+ * @generated
+ */
+ void setOrderByForXml(XmlOrderBy value);
+} // XmlMultiRelationshipMappingForXml
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlMultiRelationshipMappingInternal.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlMultiRelationshipMappingInternal.java
new file mode 100644
index 0000000000..48fb7df386
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlMultiRelationshipMappingInternal.java
@@ -0,0 +1,553 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+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.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.mappings.DefaultLazyFetchType;
+import org.eclipse.jpt.core.internal.mappings.IJoinTable;
+import org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.INonOwningMapping;
+import org.eclipse.jpt.core.internal.mappings.IOrderBy;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Multi Relationship Mapping</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlMultiRelationshipMappingInternal()
+ * @model kind="class" abstract="true"
+ * @generated
+ */
+public abstract class XmlMultiRelationshipMappingInternal
+ extends XmlRelationshipMapping
+ implements IMultiRelationshipMapping, XmlMultiRelationshipMappingForXml,
+ XmlMultiRelationshipMapping
+{
+ /**
+ * The default value of the '{@link #getMappedBy() <em>Mapped By</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMappedBy()
+ * @generated
+ * @ordered
+ */
+ protected static final String MAPPED_BY_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getMappedBy() <em>Mapped By</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMappedBy()
+ * @generated
+ * @ordered
+ */
+ protected String mappedBy = MAPPED_BY_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getFetch() <em>Fetch</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFetch()
+ * @generated
+ * @ordered
+ */
+ protected static final DefaultLazyFetchType FETCH_EDEFAULT = DefaultLazyFetchType.DEFAULT;
+
+ /**
+ * The cached value of the '{@link #getFetch() <em>Fetch</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFetch()
+ * @generated
+ * @ordered
+ */
+ protected DefaultLazyFetchType fetch = FETCH_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getJoinTable() <em>Join Table</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getJoinTable()
+ * @generated
+ * @ordered
+ */
+ protected IJoinTable joinTable;
+
+ /**
+ * The cached value of the '{@link #getOrderBy() <em>Order By</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOrderBy()
+ * @generated
+ * @ordered
+ */
+ protected IOrderBy orderBy;
+
+ protected XmlMultiRelationshipMappingInternal() {
+ super();
+ this.joinTable = OrmFactory.eINSTANCE.createXmlJoinTable(buildJoinTableOwner());
+ ((InternalEObject) this.joinTable).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__JOIN_TABLE, null, null);
+ this.orderBy = OrmFactory.eINSTANCE.createXmlOrderBy();
+ ((InternalEObject) this.orderBy).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__ORDER_BY, null, null);
+ }
+
+ private IJoinTable.Owner buildJoinTableOwner() {
+ return new IJoinTable.Owner() {
+ public ITextRange getTextRange() {
+ return XmlMultiRelationshipMappingInternal.this.getTextRange();
+ }
+
+ public ITypeMapping getTypeMapping() {
+ return XmlMultiRelationshipMappingInternal.this.typeMapping();
+ }
+ };
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Mapped By</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Mapped By</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Mapped By</em>' attribute.
+ * @see #setMappedBy(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getINonOwningMapping_MappedBy()
+ * @model
+ * @generated
+ */
+ public String getMappedBy() {
+ return mappedBy;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMappingInternal#getMappedBy <em>Mapped By</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Mapped By</em>' attribute.
+ * @see #getMappedBy()
+ * @generated
+ */
+ public void setMappedBy(String newMappedBy) {
+ String oldMappedBy = mappedBy;
+ mappedBy = newMappedBy;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__MAPPED_BY, oldMappedBy, mappedBy));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Fetch</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultLazyFetchType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Fetch</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Fetch</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultLazyFetchType
+ * @see #setFetch(DefaultLazyFetchType)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIMultiRelationshipMapping_Fetch()
+ * @model
+ * @generated
+ */
+ public DefaultLazyFetchType getFetch() {
+ return fetch;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMappingInternal#getFetch <em>Fetch</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Fetch</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultLazyFetchType
+ * @see #getFetch()
+ * @generated
+ */
+ public void setFetch(DefaultLazyFetchType newFetch) {
+ DefaultLazyFetchType oldFetch = fetch;
+ fetch = newFetch == null ? FETCH_EDEFAULT : newFetch;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__FETCH, oldFetch, fetch));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Join Table</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Join Table</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Join Table</em>' containment reference.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIMultiRelationshipMapping_JoinTable()
+ * @model containment="true" required="true" changeable="false"
+ * @generated
+ */
+ public IJoinTable getJoinTable() {
+ return joinTable;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetJoinTable(IJoinTable newJoinTable, NotificationChain msgs) {
+ IJoinTable oldJoinTable = joinTable;
+ joinTable = newJoinTable;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__JOIN_TABLE, oldJoinTable, newJoinTable);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Order By</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Order By</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Order By</em>' containment reference.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIMultiRelationshipMapping_OrderBy()
+ * @model containment="true" required="true" changeable="false"
+ * @generated
+ */
+ public IOrderBy getOrderBy() {
+ return orderBy;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetOrderBy(IOrderBy newOrderBy, NotificationChain msgs) {
+ IOrderBy oldOrderBy = orderBy;
+ orderBy = newOrderBy;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__ORDER_BY, oldOrderBy, newOrderBy);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ private XmlJoinTable getJoinTableInternal() {
+ return (XmlJoinTable) getJoinTable();
+ }
+
+ public XmlJoinTable getJoinTableForXml() {
+ if (getJoinTableInternal().isAllFeaturesUnset()) {
+ return null;
+ }
+ return getJoinTableInternal();
+ }
+
+ public void setJoinTableForXmlGen(XmlJoinTable newJoinTableForXml) {
+ XmlJoinTable oldValue = newJoinTableForXml == null ? (XmlJoinTable) getJoinTable() : null;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__JOIN_TABLE_FOR_XML, oldValue, newJoinTableForXml));
+ }
+
+ public void setJoinTableForXml(XmlJoinTable newJoinTableForXml) {
+ setJoinTableForXmlGen(newJoinTableForXml);
+ if (newJoinTableForXml == null) {
+ getJoinTableInternal().unsetAllAttributes();
+ }
+ }
+
+ public XmlOrderBy getOrderByForXml() {
+ if (getOrderByInternal().isAllFeaturesUnset()) {
+ return null;
+ }
+ return getOrderByInternal();
+ }
+
+ private XmlOrderBy getOrderByInternal() {
+ return (XmlOrderBy) getOrderBy();
+ }
+
+ public void setOrderByForXml(XmlOrderBy newOrderByForXml) {
+ XmlOrderBy oldValue = newOrderByForXml == null ? (XmlOrderBy) getOrderBy() : null;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__ORDER_BY_FOR_XML, oldValue, newOrderByForXml));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__JOIN_TABLE :
+ return basicSetJoinTable(null, msgs);
+ case OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__ORDER_BY :
+ return basicSetOrderBy(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 OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__MAPPED_BY :
+ return getMappedBy();
+ case OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__FETCH :
+ return getFetch();
+ case OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__JOIN_TABLE :
+ return getJoinTable();
+ case OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__ORDER_BY :
+ return getOrderBy();
+ case OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__JOIN_TABLE_FOR_XML :
+ return getJoinTableForXml();
+ case OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__ORDER_BY_FOR_XML :
+ return getOrderByForXml();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__MAPPED_BY :
+ setMappedBy((String) newValue);
+ return;
+ case OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__FETCH :
+ setFetch((DefaultLazyFetchType) newValue);
+ return;
+ case OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__JOIN_TABLE_FOR_XML :
+ setJoinTableForXml((XmlJoinTable) newValue);
+ return;
+ case OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__ORDER_BY_FOR_XML :
+ setOrderByForXml((XmlOrderBy) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__MAPPED_BY :
+ setMappedBy(MAPPED_BY_EDEFAULT);
+ return;
+ case OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__FETCH :
+ setFetch(FETCH_EDEFAULT);
+ return;
+ case OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__JOIN_TABLE_FOR_XML :
+ setJoinTableForXml((XmlJoinTable) null);
+ return;
+ case OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__ORDER_BY_FOR_XML :
+ setOrderByForXml((XmlOrderBy) null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__MAPPED_BY :
+ return MAPPED_BY_EDEFAULT == null ? mappedBy != null : !MAPPED_BY_EDEFAULT.equals(mappedBy);
+ case OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__FETCH :
+ return fetch != FETCH_EDEFAULT;
+ case OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__JOIN_TABLE :
+ return joinTable != null;
+ case OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__ORDER_BY :
+ return orderBy != null;
+ case OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__JOIN_TABLE_FOR_XML :
+ return getJoinTableForXml() != null;
+ case OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__ORDER_BY_FOR_XML :
+ return getOrderByForXml() != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == INonOwningMapping.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__MAPPED_BY :
+ return JpaCoreMappingsPackage.INON_OWNING_MAPPING__MAPPED_BY;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IMultiRelationshipMapping.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__FETCH :
+ return JpaCoreMappingsPackage.IMULTI_RELATIONSHIP_MAPPING__FETCH;
+ case OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__JOIN_TABLE :
+ return JpaCoreMappingsPackage.IMULTI_RELATIONSHIP_MAPPING__JOIN_TABLE;
+ case OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__ORDER_BY :
+ return JpaCoreMappingsPackage.IMULTI_RELATIONSHIP_MAPPING__ORDER_BY;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == XmlMultiRelationshipMappingForXml.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__JOIN_TABLE_FOR_XML :
+ return OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_FOR_XML__JOIN_TABLE_FOR_XML;
+ case OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__ORDER_BY_FOR_XML :
+ return OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_FOR_XML__ORDER_BY_FOR_XML;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == XmlMultiRelationshipMapping.class) {
+ switch (derivedFeatureID) {
+ 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 == INonOwningMapping.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.INON_OWNING_MAPPING__MAPPED_BY :
+ return OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__MAPPED_BY;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IMultiRelationshipMapping.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IMULTI_RELATIONSHIP_MAPPING__FETCH :
+ return OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__FETCH;
+ case JpaCoreMappingsPackage.IMULTI_RELATIONSHIP_MAPPING__JOIN_TABLE :
+ return OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__JOIN_TABLE;
+ case JpaCoreMappingsPackage.IMULTI_RELATIONSHIP_MAPPING__ORDER_BY :
+ return OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__ORDER_BY;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == XmlMultiRelationshipMappingForXml.class) {
+ switch (baseFeatureID) {
+ case OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_FOR_XML__JOIN_TABLE_FOR_XML :
+ return OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__JOIN_TABLE_FOR_XML;
+ case OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_FOR_XML__ORDER_BY_FOR_XML :
+ return OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL__ORDER_BY_FOR_XML;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == XmlMultiRelationshipMapping.class) {
+ switch (baseFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (mappedBy: ");
+ result.append(mappedBy);
+ result.append(", fetch: ");
+ result.append(fetch);
+ result.append(')');
+ return result.toString();
+ }
+
+ public void makeJoinTableForXmlNull() {
+ setJoinTableForXmlGen(null);
+ }
+
+ public void makeJoinTableForXmlNonNull() {
+ setJoinTableForXmlGen(getJoinTableForXml());
+ }
+
+ public void makeOrderByForXmlNull() {
+ setOrderByForXml(null);
+ }
+
+ public void makeOrderByForXmlNonNull() {
+ setOrderByForXml(getOrderByForXml());
+ }
+
+ @Override
+ public void initializeFromXmlMulitRelationshipMapping(XmlMultiRelationshipMappingInternal oldMapping) {
+ super.initializeFromXmlMulitRelationshipMapping(oldMapping);
+ setFetch(oldMapping.getFetch());
+ }
+} // XmlMultiRelationshipMapping \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlNamedNativeQuery.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlNamedNativeQuery.java
new file mode 100644
index 0000000000..e1de3f77ee
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlNamedNativeQuery.java
@@ -0,0 +1,281 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jpt.core.internal.mappings.INamedNativeQuery;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Named Native Query</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlNamedNativeQuery()
+ * @model kind="class"
+ * @generated
+ */
+public class XmlNamedNativeQuery extends AbstractXmlQuery
+ implements INamedNativeQuery
+{
+ /**
+ * The default value of the '{@link #getResultClass() <em>Result Class</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getResultClass()
+ * @generated
+ * @ordered
+ */
+ protected static final String RESULT_CLASS_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getResultClass() <em>Result Class</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getResultClass()
+ * @generated
+ * @ordered
+ */
+ protected String resultClass = RESULT_CLASS_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getResultSetMapping() <em>Result Set Mapping</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getResultSetMapping()
+ * @generated
+ * @ordered
+ */
+ protected static final String RESULT_SET_MAPPING_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getResultSetMapping() <em>Result Set Mapping</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getResultSetMapping()
+ * @generated
+ * @ordered
+ */
+ protected String resultSetMapping = RESULT_SET_MAPPING_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XmlNamedNativeQuery() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_NAMED_NATIVE_QUERY;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Result Class</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Result Class</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Result Class</em>' attribute.
+ * @see #setResultClass(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getINamedNativeQuery_ResultClass()
+ * @model
+ * @generated
+ */
+ public String getResultClass() {
+ return resultClass;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlNamedNativeQuery#getResultClass <em>Result Class</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Result Class</em>' attribute.
+ * @see #getResultClass()
+ * @generated
+ */
+ public void setResultClass(String newResultClass) {
+ String oldResultClass = resultClass;
+ resultClass = newResultClass;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_NAMED_NATIVE_QUERY__RESULT_CLASS, oldResultClass, resultClass));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Result Set Mapping</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Result Set Mapping</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Result Set Mapping</em>' attribute.
+ * @see #setResultSetMapping(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getINamedNativeQuery_ResultSetMapping()
+ * @model
+ * @generated
+ */
+ public String getResultSetMapping() {
+ return resultSetMapping;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlNamedNativeQuery#getResultSetMapping <em>Result Set Mapping</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Result Set Mapping</em>' attribute.
+ * @see #getResultSetMapping()
+ * @generated
+ */
+ public void setResultSetMapping(String newResultSetMapping) {
+ String oldResultSetMapping = resultSetMapping;
+ resultSetMapping = newResultSetMapping;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_NAMED_NATIVE_QUERY__RESULT_SET_MAPPING, oldResultSetMapping, resultSetMapping));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case OrmPackage.XML_NAMED_NATIVE_QUERY__RESULT_CLASS :
+ return getResultClass();
+ case OrmPackage.XML_NAMED_NATIVE_QUERY__RESULT_SET_MAPPING :
+ return getResultSetMapping();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case OrmPackage.XML_NAMED_NATIVE_QUERY__RESULT_CLASS :
+ setResultClass((String) newValue);
+ return;
+ case OrmPackage.XML_NAMED_NATIVE_QUERY__RESULT_SET_MAPPING :
+ setResultSetMapping((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_NAMED_NATIVE_QUERY__RESULT_CLASS :
+ setResultClass(RESULT_CLASS_EDEFAULT);
+ return;
+ case OrmPackage.XML_NAMED_NATIVE_QUERY__RESULT_SET_MAPPING :
+ setResultSetMapping(RESULT_SET_MAPPING_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_NAMED_NATIVE_QUERY__RESULT_CLASS :
+ return RESULT_CLASS_EDEFAULT == null ? resultClass != null : !RESULT_CLASS_EDEFAULT.equals(resultClass);
+ case OrmPackage.XML_NAMED_NATIVE_QUERY__RESULT_SET_MAPPING :
+ return RESULT_SET_MAPPING_EDEFAULT == null ? resultSetMapping != null : !RESULT_SET_MAPPING_EDEFAULT.equals(resultSetMapping);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == INamedNativeQuery.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_NAMED_NATIVE_QUERY__RESULT_CLASS :
+ return JpaCoreMappingsPackage.INAMED_NATIVE_QUERY__RESULT_CLASS;
+ case OrmPackage.XML_NAMED_NATIVE_QUERY__RESULT_SET_MAPPING :
+ return JpaCoreMappingsPackage.INAMED_NATIVE_QUERY__RESULT_SET_MAPPING;
+ 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 == INamedNativeQuery.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.INAMED_NATIVE_QUERY__RESULT_CLASS :
+ return OrmPackage.XML_NAMED_NATIVE_QUERY__RESULT_CLASS;
+ case JpaCoreMappingsPackage.INAMED_NATIVE_QUERY__RESULT_SET_MAPPING :
+ return OrmPackage.XML_NAMED_NATIVE_QUERY__RESULT_SET_MAPPING;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (resultClass: ");
+ result.append(resultClass);
+ result.append(", resultSetMapping: ");
+ result.append(resultSetMapping);
+ result.append(')');
+ return result.toString();
+ }
+} // XmlNamedNativeQuery
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlNamedQuery.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlNamedQuery.java
new file mode 100644
index 0000000000..1d63078e2f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlNamedQuery.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.jpt.core.internal.mappings.INamedQuery;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Named Query</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlNamedQuery()
+ * @model kind="class"
+ * @generated
+ */
+public class XmlNamedQuery extends AbstractXmlQuery implements INamedQuery
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XmlNamedQuery() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_NAMED_QUERY;
+ }
+} // XmlNamedQuery
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlNullAttributeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlNullAttributeMapping.java
new file mode 100644
index 0000000000..b9a4dfc74f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlNullAttributeMapping.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.emf.ecore.EClass;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Null Attribute Mapping</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlNullAttributeMapping()
+ * @model kind="class"
+ * @generated
+ */
+public class XmlNullAttributeMapping extends XmlAttributeMapping
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XmlNullAttributeMapping() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_NULL_ATTRIBUTE_MAPPING;
+ }
+
+ @Override
+ public int xmlSequence() {
+ return -1;
+ }
+
+ @Override
+ protected void initializeOn(XmlAttributeMapping newMapping) {}
+
+ public String getKey() {
+ return null;
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOneToMany.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOneToMany.java
new file mode 100644
index 0000000000..2b1736e980
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOneToMany.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.mappings.IOneToMany;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml One To Many</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlOneToMany()
+ * @model kind="class"
+ * @generated
+ */
+public class XmlOneToMany extends XmlMultiRelationshipMappingInternal
+ implements IOneToMany
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XmlOneToMany() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_ONE_TO_MANY;
+ }
+
+ public String getKey() {
+ return IMappingKeys.ONE_TO_MANY_ATTRIBUTE_MAPPING_KEY;
+ }
+
+ protected void initializeOn(XmlAttributeMapping newMapping) {
+ newMapping.initializeFromXmlOneToManyMapping(this);
+ }
+
+ public int xmlSequence() {
+ return 4;
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOneToManyProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOneToManyProvider.java
new file mode 100644
index 0000000000..367f04d8dd
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOneToManyProvider.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.jpt.core.internal.IMappingKeys;
+
+public class XmlOneToManyProvider implements IXmlAttributeMappingProvider
+{
+ // singleton
+ private static final XmlOneToManyProvider INSTANCE = new XmlOneToManyProvider();
+
+ /**
+ * Return the singleton.
+ */
+ public static IXmlAttributeMappingProvider instance() {
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private XmlOneToManyProvider() {
+ super();
+ }
+
+ public XmlAttributeMapping buildAttributeMapping() {
+ return OrmFactory.eINSTANCE.createXmlOneToMany();
+ }
+
+ public String key() {
+ return IMappingKeys.ONE_TO_MANY_ATTRIBUTE_MAPPING_KEY;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOneToOne.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOneToOne.java
new file mode 100644
index 0000000000..98270a2ea9
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOneToOne.java
@@ -0,0 +1,240 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.mappings.INonOwningMapping;
+import org.eclipse.jpt.core.internal.mappings.IOneToOne;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml One To One</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlOneToOne()
+ * @model kind="class"
+ * @generated
+ */
+public class XmlOneToOne extends XmlSingleRelationshipMapping
+ implements IOneToOne
+{
+ /**
+ * The default value of the '{@link #getMappedBy() <em>Mapped By</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMappedBy()
+ * @generated
+ * @ordered
+ */
+ protected static final String MAPPED_BY_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getMappedBy() <em>Mapped By</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMappedBy()
+ * @generated
+ * @ordered
+ */
+ protected String mappedBy = MAPPED_BY_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XmlOneToOne() {
+ super();
+ }
+
+ @Override
+ protected void initializeOn(XmlAttributeMapping newMapping) {
+ newMapping.initializeFromXmlOneToOneMapping(this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_ONE_TO_ONE;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Mapped By</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Mapped By</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Mapped By</em>' attribute.
+ * @see #setMappedBy(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getINonOwningMapping_MappedBy()
+ * @model
+ * @generated
+ */
+ public String getMappedBy() {
+ return mappedBy;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlOneToOne#getMappedBy <em>Mapped By</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Mapped By</em>' attribute.
+ * @see #getMappedBy()
+ * @generated
+ */
+ public void setMappedBy(String newMappedBy) {
+ String oldMappedBy = mappedBy;
+ mappedBy = newMappedBy;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_ONE_TO_ONE__MAPPED_BY, oldMappedBy, mappedBy));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case OrmPackage.XML_ONE_TO_ONE__MAPPED_BY :
+ return getMappedBy();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case OrmPackage.XML_ONE_TO_ONE__MAPPED_BY :
+ setMappedBy((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_ONE_TO_ONE__MAPPED_BY :
+ setMappedBy(MAPPED_BY_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_ONE_TO_ONE__MAPPED_BY :
+ return MAPPED_BY_EDEFAULT == null ? mappedBy != null : !MAPPED_BY_EDEFAULT.equals(mappedBy);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == INonOwningMapping.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_ONE_TO_ONE__MAPPED_BY :
+ return JpaCoreMappingsPackage.INON_OWNING_MAPPING__MAPPED_BY;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IOneToOne.class) {
+ switch (derivedFeatureID) {
+ 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 == INonOwningMapping.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.INON_OWNING_MAPPING__MAPPED_BY :
+ return OrmPackage.XML_ONE_TO_ONE__MAPPED_BY;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IOneToOne.class) {
+ switch (baseFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (mappedBy: ");
+ result.append(mappedBy);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public int xmlSequence() {
+ return 5;
+ }
+
+ public String getKey() {
+ return IMappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY;
+ }
+} // XmlOneToOne
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOneToOneProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOneToOneProvider.java
new file mode 100644
index 0000000000..420fdc0678
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOneToOneProvider.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.jpt.core.internal.IMappingKeys;
+
+public class XmlOneToOneProvider implements IXmlAttributeMappingProvider
+{
+ // singleton
+ private static final XmlOneToOneProvider INSTANCE = new XmlOneToOneProvider();
+
+ /**
+ * Return the singleton.
+ */
+ public static IXmlAttributeMappingProvider instance() {
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private XmlOneToOneProvider() {
+ super();
+ }
+
+ public XmlAttributeMapping buildAttributeMapping() {
+ return OrmFactory.eINSTANCE.createXmlOneToOne();
+ }
+
+ public String key() {
+ return IMappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOrderBy.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOrderBy.java
new file mode 100644
index 0000000000..1a0f1950ea
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOrderBy.java
@@ -0,0 +1,327 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jpt.core.internal.XmlEObject;
+import org.eclipse.jpt.core.internal.mappings.IOrderBy;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.core.internal.mappings.OrderingType;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Order By</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlOrderBy()
+ * @model kind="class"
+ * @generated
+ */
+public class XmlOrderBy extends XmlEObject implements IOrderBy
+{
+ /**
+ * 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;
+
+ /**
+ * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected static final OrderingType TYPE_EDEFAULT = OrderingType.NONE;
+
+ /**
+ * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected OrderingType type = TYPE_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XmlOrderBy() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_ORDER_BY;
+ }
+
+ /**
+ * 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.jpt.core.internal.content.orm.OrmPackage#getIOrderBy_Value()
+ * @model
+ * @generated
+ */
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlOrderBy#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
+ */
+ public void setValueGen(String newValue) {
+ String oldValue = value;
+ value = newValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_ORDER_BY__VALUE, oldValue, value));
+ }
+
+ public void setValue(String newValue) {
+ setValueGen(newValue);
+ if (newValue == null) {
+ setTypeGen(OrderingType.NONE);
+ }
+ else {
+ setTypeGen(OrderingType.CUSTOM);
+ }
+ }
+
+ /**
+ * Returns the value of the '<em><b>Type</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.OrderingType}.
+ * <!-- 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.jpt.core.internal.mappings.OrderingType
+ * @see #setType(OrderingType)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIOrderBy_Type()
+ * @model
+ * @generated
+ */
+ public OrderingType getType() {
+ return type;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlOrderBy#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.jpt.core.internal.mappings.OrderingType
+ * @see #getType()
+ * @generated
+ */
+ public void setTypeGen(OrderingType newType) {
+ OrderingType oldType = type;
+ type = newType == null ? TYPE_EDEFAULT : newType;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_ORDER_BY__TYPE, oldType, type));
+ }
+
+ public void setType(OrderingType newType) {
+ setTypeGen(newType);
+ if (newType == OrderingType.NONE) {
+ multiRelationshipMapping().makeOrderByForXmlNull();
+ }
+ else {
+ if (newType == OrderingType.CUSTOM) {
+ setValueGen("");
+ }
+ else {
+ setValueGen(null);
+ }
+ multiRelationshipMapping().makeOrderByForXmlNonNull();
+ }
+ }
+
+ private XmlMultiRelationshipMappingInternal multiRelationshipMapping() {
+ return (XmlMultiRelationshipMappingInternal) eContainer();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case OrmPackage.XML_ORDER_BY__VALUE :
+ return getValue();
+ case OrmPackage.XML_ORDER_BY__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 OrmPackage.XML_ORDER_BY__VALUE :
+ setValue((String) newValue);
+ return;
+ case OrmPackage.XML_ORDER_BY__TYPE :
+ setType((OrderingType) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_ORDER_BY__VALUE :
+ setValue(VALUE_EDEFAULT);
+ return;
+ case OrmPackage.XML_ORDER_BY__TYPE :
+ setType(TYPE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_ORDER_BY__VALUE :
+ return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);
+ case OrmPackage.XML_ORDER_BY__TYPE :
+ return type != TYPE_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IOrderBy.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_ORDER_BY__VALUE :
+ return JpaCoreMappingsPackage.IORDER_BY__VALUE;
+ case OrmPackage.XML_ORDER_BY__TYPE :
+ return JpaCoreMappingsPackage.IORDER_BY__TYPE;
+ 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 == IOrderBy.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IORDER_BY__VALUE :
+ return OrmPackage.XML_ORDER_BY__VALUE;
+ case JpaCoreMappingsPackage.IORDER_BY__TYPE :
+ return OrmPackage.XML_ORDER_BY__TYPE;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- 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: ");
+ result.append(value);
+ result.append(", type: ");
+ result.append(type);
+ result.append(')');
+ return result.toString();
+ }
+
+ // private IMultiRelationshipMapping multiRelationshipMapping() {
+ // return (IMultiRelationshipMapping) eContainer();
+ // }
+ //
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ // IEntity targetEntity = multiRelationshipMapping().getResolvedTargetEntity();
+ // if (targetEntity != null) {
+ // setValue(targetEntity.primaryKeyAttributeName() + " ASC");
+ // }
+ }
+} // XmlOrderBy
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOverride.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOverride.java
new file mode 100644
index 0000000000..bfb6ee1969
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlOverride.java
@@ -0,0 +1,232 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.XmlEObject;
+import org.eclipse.jpt.core.internal.mappings.IOverride;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Override</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlOverride()
+ * @model kind="class" abstract="true"
+ * @generated
+ */
+public abstract class XmlOverride extends XmlEObject implements IOverride
+{
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ private final Owner owner;
+
+ protected XmlOverride() {
+ throw new UnsupportedOperationException();
+ }
+
+ protected XmlOverride(IOverride.Owner owner) {
+ super();
+ this.owner = owner;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_OVERRIDE;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIOverride_Name()
+ * @model
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlOverride#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_OVERRIDE__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case OrmPackage.XML_OVERRIDE__NAME :
+ return getName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case OrmPackage.XML_OVERRIDE__NAME :
+ setName((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_OVERRIDE__NAME :
+ setName(NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_OVERRIDE__NAME :
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IOverride.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_OVERRIDE__NAME :
+ return JpaCoreMappingsPackage.IOVERRIDE__NAME;
+ 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 == IOverride.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IOVERRIDE__NAME :
+ return OrmPackage.XML_OVERRIDE__NAME;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+ public boolean isVirtual() {
+ return getOwner().isVirtual(this);
+ }
+
+ @Override
+ public ITextRange getTextRange() {
+ if (node == null) {
+ return getOwner().getTextRange();
+ }
+ else {
+ return super.getTextRange();
+ }
+ }
+
+ public Owner getOwner() {
+ return this.owner;
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlPersistentAttribute.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlPersistentAttribute.java
new file mode 100644
index 0000000000..35f57f56f2
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlPersistentAttribute.java
@@ -0,0 +1,398 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jpt.core.internal.IJpaContentNode;
+import org.eclipse.jpt.core.internal.IPersistentAttribute;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.JpaCorePackage;
+import org.eclipse.jpt.core.internal.XmlEObject;
+import org.eclipse.jpt.core.internal.content.java.JavaPersistentType;
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Persistent Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentAttribute#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlPersistentAttribute()
+ * @model kind="class"
+ * @generated
+ */
+public class XmlPersistentAttribute extends XmlEObject
+ implements IPersistentAttribute
+{
+ /**
+ * The default value of the '{@link #getMappingKey() <em>Mapping Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMappingKey()
+ * @generated
+ * @ordered
+ */
+ protected static final String MAPPING_KEY_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getMappingKey() <em>Mapping Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMappingKey()
+ * @generated
+ * @ordered
+ */
+ protected String mappingKey = MAPPING_KEY_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ private Collection<IXmlAttributeMappingProvider> attributeMappingProviders;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected XmlPersistentAttribute() {
+ super();
+ this.attributeMappingProviders = buildAttributeMappingProviders();
+ }
+
+ protected Collection<IXmlAttributeMappingProvider> buildAttributeMappingProviders() {
+ Collection<IXmlAttributeMappingProvider> collection = new ArrayList<IXmlAttributeMappingProvider>();
+ collection.add(XmlBasicProvider.instance());
+ collection.add(XmlTransientProvider.instance());
+ collection.add(XmlIdProvider.instance());
+ collection.add(XmlManyToManyProvider.instance());
+ collection.add(XmlOneToManyProvider.instance());
+ collection.add(XmlManyToOneProvider.instance());
+ collection.add(XmlOneToOneProvider.instance());
+ collection.add(XmlVersionProvider.instance());
+ collection.add(XmlEmbeddedProvider.instance());
+ collection.add(XmlEmbeddedIdProvider.instance());
+ return collection;
+ }
+
+ protected XmlPersistentAttribute(String theMappingKey) {
+ this();
+ mappingKey = theMappingKey;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_PERSISTENT_ATTRIBUTE;
+ }
+
+ /* @see IJpaContentNode#getId() */
+ public Object getId() {
+ return IXmlContentNodes.PERSISTENT_ATTRIBUTE_ID;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Mapping Key</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Mapping Key</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Mapping Key</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIPersistentAttribute_MappingKey()
+ * @model required="true" changeable="false"
+ * @generated
+ */
+ public String getMappingKey() {
+ return mappingKey;
+ }
+
+ public void setMappingKey(String newMappingKey, boolean default_) {
+ if (mappingKey == newMappingKey) {
+ return;
+ }
+ XmlAttributeMapping oldMapping = getMapping();
+ XmlPersistentType persistentType = oldMapping.getPersistentType();
+ persistentType.changeMapping(oldMapping, newMappingKey);
+ setMappingKeyInternal(newMappingKey);
+ }
+
+ protected void setMappingKeyInternal(String newMappingKey) {
+ String oldMappingKey = mappingKey;
+ mappingKey = newMappingKey;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_PERSISTENT_ATTRIBUTE__MAPPING_KEY, oldMappingKey, mappingKey));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlPersistentAttribute_Name()
+ * @model
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentAttribute#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_PERSISTENT_ATTRIBUTE__NAME, oldName, name));
+ }
+
+ public Iterator candidateMappingKeys() {
+ Collection mappingKeys = new ArrayList();
+ for (IXmlAttributeMappingProvider provider : attributeMappingProviders()) {
+ mappingKeys.add(provider.key());
+ }
+ return mappingKeys.iterator();
+ }
+
+ public Collection<IXmlAttributeMappingProvider> attributeMappingProviders() {
+ return this.attributeMappingProviders;
+ }
+
+ public XmlAttributeMapping getMapping() {
+ return (XmlAttributeMapping) eContainer();
+ }
+
+ public XmlPersistentType persistentType() {
+ return getMapping().getPersistentType();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model kind="operation" required="true"
+ * @generated NOT
+ */
+ public ITypeMapping typeMapping() {
+ return persistentType().getMapping();
+ }
+
+ public boolean isVirtual() {
+ return persistentType().getVirtualPersistentAttributes().contains(this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case OrmPackage.XML_PERSISTENT_ATTRIBUTE__MAPPING_KEY :
+ return getMappingKey();
+ case OrmPackage.XML_PERSISTENT_ATTRIBUTE__NAME :
+ return getName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case OrmPackage.XML_PERSISTENT_ATTRIBUTE__NAME :
+ setName((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_PERSISTENT_ATTRIBUTE__NAME :
+ setName(NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_PERSISTENT_ATTRIBUTE__MAPPING_KEY :
+ return MAPPING_KEY_EDEFAULT == null ? mappingKey != null : !MAPPING_KEY_EDEFAULT.equals(mappingKey);
+ case OrmPackage.XML_PERSISTENT_ATTRIBUTE__NAME :
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IJpaContentNode.class) {
+ switch (derivedFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IPersistentAttribute.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_PERSISTENT_ATTRIBUTE__MAPPING_KEY :
+ return JpaCorePackage.IPERSISTENT_ATTRIBUTE__MAPPING_KEY;
+ 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 == IJpaContentNode.class) {
+ switch (baseFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IPersistentAttribute.class) {
+ switch (baseFeatureID) {
+ case JpaCorePackage.IPERSISTENT_ATTRIBUTE__MAPPING_KEY :
+ return OrmPackage.XML_PERSISTENT_ATTRIBUTE__MAPPING_KEY;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (mappingKey: ");
+ result.append(mappingKey);
+ result.append(", name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+ public Attribute getAttribute() {
+ JavaPersistentType javaPersistentType = ((XmlPersistentType) typeMapping().getPersistentType()).findJavaPersistentType();
+ if (javaPersistentType == null) {
+ return null;
+ }
+ for (Iterator<IPersistentAttribute> i = javaPersistentType.attributes(); i.hasNext();) {
+ IPersistentAttribute persistentAttribute = i.next();
+ if (persistentAttribute.getName().equals(getName())) {
+ return persistentAttribute.getAttribute();
+ }
+ }
+ return null;
+ }
+
+ public String defaultKey() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public String primaryKeyColumnName() {
+ return getMapping().primaryKeyColumnName();
+ }
+
+ @Override
+ public ITextRange getTextRange() {
+ if (isVirtual()) {
+ return persistentType().getAttributesTextRange();
+ }
+ else {
+ return getMapping().getTextRange();
+ }
+ }
+
+ public ITextRange getNameTextRange() {
+ return getMapping().getNameTextRange();
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlPersistentType.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlPersistentType.java
new file mode 100644
index 0000000000..b65c897b8f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlPersistentType.java
@@ -0,0 +1,940 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.Set;
+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.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.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EObjectEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jem.internal.adapters.jdom.JDOMSearchHelper;
+import org.eclipse.jpt.core.internal.IJpaContentNode;
+import org.eclipse.jpt.core.internal.IJpaFile;
+import org.eclipse.jpt.core.internal.IPersistentAttribute;
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.JpaCorePackage;
+import org.eclipse.jpt.core.internal.JpaCorePlugin;
+import org.eclipse.jpt.core.internal.XmlEObject;
+import org.eclipse.jpt.core.internal.content.java.JavaPersistentType;
+import org.eclipse.jpt.core.internal.content.java.JpaCompilationUnit;
+import org.eclipse.jpt.core.internal.jdtutility.JDTTools;
+import org.eclipse.jpt.core.internal.jdtutility.Type;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+import org.eclipse.jpt.utility.internal.CollectionTools;
+import org.eclipse.jpt.utility.internal.StringTools;
+import org.eclipse.jpt.utility.internal.iterators.ChainIterator;
+import org.eclipse.jpt.utility.internal.iterators.CompositeIterator;
+import org.eclipse.jpt.utility.internal.iterators.ReadOnlyIterator;
+import org.eclipse.jpt.utility.internal.iterators.TransformationIterator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Persistent Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentType#getClass_ <em>Class</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentType#getAttributeMappings <em>Attribute Mappings</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentType#getSpecifiedAttributeMappings <em>Specified Attribute Mappings</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentType#getVirtualAttributeMappings <em>Virtual Attribute Mappings</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentType#getPersistentAttributes <em>Persistent Attributes</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentType#getSpecifiedPersistentAttributes <em>Specified Persistent Attributes</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentType#getVirtualPersistentAttributes <em>Virtual Persistent Attributes</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlPersistentType()
+ * @model kind="class"
+ * @generated
+ */
+public class XmlPersistentType extends XmlEObject implements IPersistentType
+{
+ /**
+ * The default value of the '{@link #getMappingKey() <em>Mapping Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMappingKey()
+ * @generated
+ * @ordered
+ */
+ protected static final String MAPPING_KEY_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getMappingKey() <em>Mapping Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMappingKey()
+ * @generated
+ * @ordered
+ */
+ protected String mappingKey = MAPPING_KEY_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getClass_() <em>Class</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getClass_()
+ * @generated
+ * @ordered
+ */
+ protected static final String CLASS_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getClass_() <em>Class</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getClass_()
+ * @generated
+ * @ordered
+ */
+ protected String class_ = CLASS_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedAttributeMappings() <em>Specified Attribute Mappings</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedAttributeMappings()
+ * @generated
+ * @ordered
+ */
+ protected EList<XmlAttributeMapping> specifiedAttributeMappings;
+
+ /**
+ * The cached value of the '{@link #getVirtualAttributeMappings() <em>Virtual Attribute Mappings</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getVirtualAttributeMappings()
+ * @generated
+ * @ordered
+ */
+ protected EList<XmlAttributeMapping> virtualAttributeMappings;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedPersistentAttributes() <em>Specified Persistent Attributes</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedPersistentAttributes()
+ * @generated
+ * @ordered
+ */
+ protected EList<XmlPersistentAttribute> specifiedPersistentAttributes;
+
+ /**
+ * The cached value of the '{@link #getVirtualPersistentAttributes() <em>Virtual Persistent Attributes</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getVirtualPersistentAttributes()
+ * @generated
+ * @ordered
+ */
+ protected EList<XmlPersistentAttribute> virtualPersistentAttributes;
+
+ private JavaPersistentType javaPersistentType;
+
+ private Collection<IXmlTypeMappingProvider> typeMappingProviders;
+
+ private IPersistentType parentPersistentType;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected XmlPersistentType() {
+ super();
+ this.typeMappingProviders = buildTypeMappingProviders();
+ }
+
+ protected XmlPersistentType(String theMappingKey) {
+ this();
+ mappingKey = theMappingKey;
+ }
+
+ @Override
+ protected void addInsignificantFeatureIdsTo(Set<Integer> insignificantFeatureIds) {
+ super.addInsignificantFeatureIdsTo(insignificantFeatureIds);
+ insignificantFeatureIds.add(OrmPackage.XML_PERSISTENT_TYPE__PERSISTENT_ATTRIBUTES);
+ insignificantFeatureIds.add(OrmPackage.XML_PERSISTENT_TYPE__SPECIFIED_PERSISTENT_ATTRIBUTES);
+ insignificantFeatureIds.add(OrmPackage.XML_PERSISTENT_TYPE__VIRTUAL_PERSISTENT_ATTRIBUTES);
+ }
+
+ protected Collection<IXmlTypeMappingProvider> buildTypeMappingProviders() {
+ Collection<IXmlTypeMappingProvider> collection = new ArrayList<IXmlTypeMappingProvider>();
+ collection.add(new XmlEntityProvider());
+ collection.add(new XmlMappedSuperclassProvider());
+ collection.add(new XmlEmbeddableProvider());
+ return collection;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_PERSISTENT_TYPE;
+ }
+
+ public XmlTypeMapping getMapping() {
+ return (XmlTypeMapping) eContainer();
+ }
+
+ /* @see IJpaContentNode#getId() */
+ public Object getId() {
+ return IXmlContentNodes.PERSISTENT_TYPE_ID;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Mapping Key</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Mapping Key</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Mapping Key</em>' attribute.
+ * @see #setMappingKey(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIPersistentType_MappingKey()
+ * @model required="true"
+ * @generated
+ */
+ public String getMappingKey() {
+ return mappingKey;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentType#getMappingKey <em>Mapping Key</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Mapping Key</em>' attribute.
+ * @see #getMappingKey()
+ * @generated
+ */
+ public void setMappingKeyGen(String newMappingKey) {
+ String oldMappingKey = mappingKey;
+ mappingKey = newMappingKey;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_PERSISTENT_TYPE__MAPPING_KEY, oldMappingKey, mappingKey));
+ }
+
+ public void setMappingKey(String newMappingKey) {
+ if (mappingKey.equals(newMappingKey)) {
+ return;
+ }
+ XmlTypeMapping oldMapping = getMapping();
+ EntityMappings entityMappings = oldMapping.getEntityMappings();
+ entityMappings.changeMapping(oldMapping, newMappingKey);
+ setMappingKeyGen(newMappingKey);
+ }
+
+ /**
+ * Returns the value of the '<em><b>Class</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Class</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Class</em>' attribute.
+ * @see #setClass(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlPersistentType_Class()
+ * @model
+ * @generated
+ */
+ public String getClass_() {
+ return class_;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentType#getClass_ <em>Class</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Class</em>' attribute.
+ * @see #getClass_()
+ * @generated
+ */
+ public void setClassGen(String newClass) {
+ String oldClass = class_;
+ class_ = newClass;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_PERSISTENT_TYPE__CLASS, oldClass, class_));
+ }
+
+ public void setClass(String newClass) {
+ setClassGen(newClass);
+ }
+
+ /**
+ * Returns the value of the '<em><b>Attribute Mappings</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.content.orm.XmlAttributeMapping}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Attribute Mappings</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>Attribute Mappings</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlPersistentType_AttributeMappings()
+ * @model type="org.eclipse.jpt.core.internal.content.orm.XmlAttributeMapping" containment="true" transient="true" changeable="false" volatile="true"
+ * @generated NOT
+ */
+ public EList<XmlAttributeMapping> getAttributeMappings() {
+ EList<XmlAttributeMapping> list = new BasicEList<XmlAttributeMapping>();
+ list.addAll(getSpecifiedAttributeMappings());
+ list.addAll(getVirtualAttributeMappings());
+ return list;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Attribute Mappings</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.content.orm.XmlAttributeMapping}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Attribute Mappings</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>Specified Attribute Mappings</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlPersistentType_SpecifiedAttributeMappings()
+ * @model type="org.eclipse.jpt.core.internal.content.orm.XmlAttributeMapping" containment="true"
+ * @generated
+ */
+ public EList<XmlAttributeMapping> getSpecifiedAttributeMappingsGen() {
+ if (specifiedAttributeMappings == null) {
+ specifiedAttributeMappings = new EObjectContainmentEList<XmlAttributeMapping>(XmlAttributeMapping.class, this, OrmPackage.XML_PERSISTENT_TYPE__SPECIFIED_ATTRIBUTE_MAPPINGS);
+ }
+ return specifiedAttributeMappings;
+ }
+
+ public EList<XmlAttributeMapping> getSpecifiedAttributeMappings() {
+ if (specifiedAttributeMappings == null) {
+ specifiedAttributeMappings = new SpecifiedAttributeMappingsList<XmlAttributeMapping>();
+ }
+ return getSpecifiedAttributeMappingsGen();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Virtual Attribute Mappings</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.content.orm.XmlAttributeMapping}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Virtual Attribute Mappings</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>Virtual Attribute Mappings</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlPersistentType_VirtualAttributeMappings()
+ * @model type="org.eclipse.jpt.core.internal.content.orm.XmlAttributeMapping" containment="true"
+ * @generated
+ */
+ public EList<XmlAttributeMapping> getVirtualAttributeMappingsGen() {
+ if (virtualAttributeMappings == null) {
+ virtualAttributeMappings = new EObjectContainmentEList<XmlAttributeMapping>(XmlAttributeMapping.class, this, OrmPackage.XML_PERSISTENT_TYPE__VIRTUAL_ATTRIBUTE_MAPPINGS);
+ }
+ return virtualAttributeMappings;
+ }
+
+ public EList<XmlAttributeMapping> getVirtualAttributeMappings() {
+ if (virtualAttributeMappings == null) {
+ virtualAttributeMappings = new VirtualAttributeMappingsList<XmlAttributeMapping>();
+ }
+ return getVirtualAttributeMappingsGen();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Persistent Attributes</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentAttribute}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Persistent Attributes</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>Persistent Attributes</em>' reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlPersistentType_PersistentAttributes()
+ * @model type="org.eclipse.jpt.core.internal.content.orm.XmlPersistentAttribute" resolveProxies="false" transient="true" changeable="false" volatile="true"
+ * @generated NOT
+ */
+ public EList<XmlPersistentAttribute> getPersistentAttributes() {
+ EList<XmlPersistentAttribute> list = new BasicEList<XmlPersistentAttribute>();
+ list.addAll(getSpecifiedPersistentAttributes());
+ list.addAll(getVirtualPersistentAttributes());
+ return list;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Persistent Attributes</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentAttribute}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Persistent Attributes</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>Specified Persistent Attributes</em>' reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlPersistentType_SpecifiedPersistentAttributes()
+ * @model type="org.eclipse.jpt.core.internal.content.orm.XmlPersistentAttribute" resolveProxies="false"
+ * @generated
+ */
+ public EList<XmlPersistentAttribute> getSpecifiedPersistentAttributes() {
+ if (specifiedPersistentAttributes == null) {
+ specifiedPersistentAttributes = new EObjectEList<XmlPersistentAttribute>(XmlPersistentAttribute.class, this, OrmPackage.XML_PERSISTENT_TYPE__SPECIFIED_PERSISTENT_ATTRIBUTES);
+ }
+ return specifiedPersistentAttributes;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Virtual Persistent Attributes</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentAttribute}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Persistent Attributes</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>Virtual Persistent Attributes</em>' reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlPersistentType_VirtualPersistentAttributes()
+ * @model type="org.eclipse.jpt.core.internal.content.orm.XmlPersistentAttribute" resolveProxies="false"
+ * @generated
+ */
+ public EList<XmlPersistentAttribute> getVirtualPersistentAttributes() {
+ if (virtualPersistentAttributes == null) {
+ virtualPersistentAttributes = new EObjectEList<XmlPersistentAttribute>(XmlPersistentAttribute.class, this, OrmPackage.XML_PERSISTENT_TYPE__VIRTUAL_PERSISTENT_ATTRIBUTES);
+ }
+ return virtualPersistentAttributes;
+ }
+
+ protected void changeMapping(XmlAttributeMapping oldMapping, String newMappingKey) {
+ XmlAttributeMapping newAttributeMapping = buildAttributeMapping(oldMapping.getPersistentAttribute().attributeMappingProviders(), newMappingKey);
+ getSpecifiedAttributeMappings().remove(oldMapping);
+ oldMapping.initializeOn(newAttributeMapping);
+ insertAttributeMapping(newAttributeMapping);
+ }
+
+ private XmlAttributeMapping buildAttributeMapping(Collection<IXmlAttributeMappingProvider> providers, String key) {
+ for (IXmlAttributeMappingProvider provider : providers) {
+ if (provider.key().equals(key)) {
+ return provider.buildAttributeMapping();
+ }
+ }
+ //TODO throw an exception? what about the NullJavaTypeMapping?
+ return null;
+ }
+
+ public Collection<IXmlTypeMappingProvider> typeMappingProviders() {
+ return this.typeMappingProviders;
+ }
+
+ private void insertAttributeMapping(XmlAttributeMapping newMapping) {
+ int newIndex = CollectionTools.insertionIndexOf(getSpecifiedAttributeMappings(), newMapping, buildMappingComparator());
+ getSpecifiedAttributeMappings().add(newIndex, newMapping);
+ }
+
+ private Comparator<XmlAttributeMapping> buildMappingComparator() {
+ return new Comparator<XmlAttributeMapping>() {
+ public int compare(XmlAttributeMapping o1, XmlAttributeMapping o2) {
+ int o1Sequence = o1.xmlSequence();
+ int o2Sequence = o2.xmlSequence();
+ if (o1Sequence < o2Sequence) {
+ return -1;
+ }
+ if (o1Sequence == o2Sequence) {
+ return 0;
+ }
+ return 1;
+ }
+ };
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case OrmPackage.XML_PERSISTENT_TYPE__ATTRIBUTE_MAPPINGS :
+ return ((InternalEList<?>) getAttributeMappings()).basicRemove(otherEnd, msgs);
+ case OrmPackage.XML_PERSISTENT_TYPE__SPECIFIED_ATTRIBUTE_MAPPINGS :
+ return ((InternalEList<?>) getSpecifiedAttributeMappings()).basicRemove(otherEnd, msgs);
+ case OrmPackage.XML_PERSISTENT_TYPE__VIRTUAL_ATTRIBUTE_MAPPINGS :
+ return ((InternalEList<?>) getVirtualAttributeMappings()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ public Iterator candidateMappingKeys() {
+ Collection mappingKeys = new ArrayList();
+ for (IXmlTypeMappingProvider provider : typeMappingProviders()) {
+ mappingKeys.add(provider.key());
+ }
+ return mappingKeys.iterator();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case OrmPackage.XML_PERSISTENT_TYPE__MAPPING_KEY :
+ return getMappingKey();
+ case OrmPackage.XML_PERSISTENT_TYPE__CLASS :
+ return getClass_();
+ case OrmPackage.XML_PERSISTENT_TYPE__ATTRIBUTE_MAPPINGS :
+ return getAttributeMappings();
+ case OrmPackage.XML_PERSISTENT_TYPE__SPECIFIED_ATTRIBUTE_MAPPINGS :
+ return getSpecifiedAttributeMappings();
+ case OrmPackage.XML_PERSISTENT_TYPE__VIRTUAL_ATTRIBUTE_MAPPINGS :
+ return getVirtualAttributeMappings();
+ case OrmPackage.XML_PERSISTENT_TYPE__PERSISTENT_ATTRIBUTES :
+ return getPersistentAttributes();
+ case OrmPackage.XML_PERSISTENT_TYPE__SPECIFIED_PERSISTENT_ATTRIBUTES :
+ return getSpecifiedPersistentAttributes();
+ case OrmPackage.XML_PERSISTENT_TYPE__VIRTUAL_PERSISTENT_ATTRIBUTES :
+ return getVirtualPersistentAttributes();
+ }
+ 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 OrmPackage.XML_PERSISTENT_TYPE__MAPPING_KEY :
+ setMappingKey((String) newValue);
+ return;
+ case OrmPackage.XML_PERSISTENT_TYPE__CLASS :
+ setClass((String) newValue);
+ return;
+ case OrmPackage.XML_PERSISTENT_TYPE__SPECIFIED_ATTRIBUTE_MAPPINGS :
+ getSpecifiedAttributeMappings().clear();
+ getSpecifiedAttributeMappings().addAll((Collection<? extends XmlAttributeMapping>) newValue);
+ return;
+ case OrmPackage.XML_PERSISTENT_TYPE__VIRTUAL_ATTRIBUTE_MAPPINGS :
+ getVirtualAttributeMappings().clear();
+ getVirtualAttributeMappings().addAll((Collection<? extends XmlAttributeMapping>) newValue);
+ return;
+ case OrmPackage.XML_PERSISTENT_TYPE__SPECIFIED_PERSISTENT_ATTRIBUTES :
+ getSpecifiedPersistentAttributes().clear();
+ getSpecifiedPersistentAttributes().addAll((Collection<? extends XmlPersistentAttribute>) newValue);
+ return;
+ case OrmPackage.XML_PERSISTENT_TYPE__VIRTUAL_PERSISTENT_ATTRIBUTES :
+ getVirtualPersistentAttributes().clear();
+ getVirtualPersistentAttributes().addAll((Collection<? extends XmlPersistentAttribute>) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_PERSISTENT_TYPE__MAPPING_KEY :
+ setMappingKey(MAPPING_KEY_EDEFAULT);
+ return;
+ case OrmPackage.XML_PERSISTENT_TYPE__CLASS :
+ setClass(CLASS_EDEFAULT);
+ return;
+ case OrmPackage.XML_PERSISTENT_TYPE__SPECIFIED_ATTRIBUTE_MAPPINGS :
+ getSpecifiedAttributeMappings().clear();
+ return;
+ case OrmPackage.XML_PERSISTENT_TYPE__VIRTUAL_ATTRIBUTE_MAPPINGS :
+ getVirtualAttributeMappings().clear();
+ return;
+ case OrmPackage.XML_PERSISTENT_TYPE__SPECIFIED_PERSISTENT_ATTRIBUTES :
+ getSpecifiedPersistentAttributes().clear();
+ return;
+ case OrmPackage.XML_PERSISTENT_TYPE__VIRTUAL_PERSISTENT_ATTRIBUTES :
+ getVirtualPersistentAttributes().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_PERSISTENT_TYPE__MAPPING_KEY :
+ return MAPPING_KEY_EDEFAULT == null ? mappingKey != null : !MAPPING_KEY_EDEFAULT.equals(mappingKey);
+ case OrmPackage.XML_PERSISTENT_TYPE__CLASS :
+ return CLASS_EDEFAULT == null ? class_ != null : !CLASS_EDEFAULT.equals(class_);
+ case OrmPackage.XML_PERSISTENT_TYPE__ATTRIBUTE_MAPPINGS :
+ return !getAttributeMappings().isEmpty();
+ case OrmPackage.XML_PERSISTENT_TYPE__SPECIFIED_ATTRIBUTE_MAPPINGS :
+ return specifiedAttributeMappings != null && !specifiedAttributeMappings.isEmpty();
+ case OrmPackage.XML_PERSISTENT_TYPE__VIRTUAL_ATTRIBUTE_MAPPINGS :
+ return virtualAttributeMappings != null && !virtualAttributeMappings.isEmpty();
+ case OrmPackage.XML_PERSISTENT_TYPE__PERSISTENT_ATTRIBUTES :
+ return !getPersistentAttributes().isEmpty();
+ case OrmPackage.XML_PERSISTENT_TYPE__SPECIFIED_PERSISTENT_ATTRIBUTES :
+ return specifiedPersistentAttributes != null && !specifiedPersistentAttributes.isEmpty();
+ case OrmPackage.XML_PERSISTENT_TYPE__VIRTUAL_PERSISTENT_ATTRIBUTES :
+ return virtualPersistentAttributes != null && !virtualPersistentAttributes.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IJpaContentNode.class) {
+ switch (derivedFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IPersistentType.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_PERSISTENT_TYPE__MAPPING_KEY :
+ return JpaCorePackage.IPERSISTENT_TYPE__MAPPING_KEY;
+ 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 == IJpaContentNode.class) {
+ switch (baseFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IPersistentType.class) {
+ switch (baseFeatureID) {
+ case JpaCorePackage.IPERSISTENT_TYPE__MAPPING_KEY :
+ return OrmPackage.XML_PERSISTENT_TYPE__MAPPING_KEY;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (mappingKey: ");
+ result.append(mappingKey);
+ result.append(", class: ");
+ result.append(class_);
+ result.append(')');
+ return result.toString();
+ }
+
+ public IType findJdtType() {
+ String fqName = getClass_();
+ if (StringTools.stringIsEmpty(fqName)) {
+ return null;
+ }
+ // try to resolve by only the locally specified name
+ IType type = resolveJdtType(fqName);
+ if (type == null) {
+ // try to resolve by prepending the global package name
+ fqName = getMapping().getEntityMappings().getPackage() + "." + getClass_();
+ type = resolveJdtType(fqName);
+ }
+ return type;
+ }
+
+ private IType resolveJdtType(String fullyQualifiedName) {
+ // this name could be of the form "package.name.ClassName"
+ // or the form "package.name.ClassName.MemberClassName"
+ // so we must try multiple package and class names here
+ String[] name = new String[] {
+ fullyQualifiedName, ""
+ };
+ while (name[0].length() != 0) {
+ name = moveDot(name);
+ IType type = JDOMSearchHelper.findType(name[0], name[1], getJpaProject().getJavaProject());
+ if (type != null)
+ return type;
+ }
+ return null;
+ }
+
+ /**
+ * Returns a String array based on the given string array by
+ * moving a package segment from the end of the first to the
+ * beginning of the second
+ *
+ * e.g. ["foo.bar", "Baz"] -> ["foo", "bar.Baz"]
+ */
+ private String[] moveDot(String[] packageAndClassName) {
+ if (packageAndClassName[0].length() == 0) {
+ throw new IllegalArgumentException();
+ }
+ String segmentToMove;
+ String packageName = packageAndClassName[0];
+ String className = packageAndClassName[1];
+ if (packageName.indexOf('.') == -1) {
+ segmentToMove = packageName;
+ packageAndClassName[0] = "";
+ }
+ else {
+ int dotIndex = packageName.lastIndexOf('.');
+ segmentToMove = packageName.substring(dotIndex + 1, packageName.length());
+ packageAndClassName[0] = packageName.substring(0, dotIndex);
+ }
+ if (className.length() == 0) {
+ packageAndClassName[1] = segmentToMove;
+ }
+ else {
+ packageAndClassName[1] = segmentToMove + '.' + className;
+ }
+ return packageAndClassName;
+ }
+
+ public JavaPersistentType findJavaPersistentType() {
+ if (this.javaPersistentType == null) {
+ IType iType = findJdtType();
+ if (iType != null) {
+ for (IJpaFile jpaFile : getJpaProject().jpaFiles(JpaCorePlugin.JAVA_CONTENT_TYPE)) {
+ for (Iterator i = ((JpaCompilationUnit) jpaFile.getContent()).getTypes().iterator(); i.hasNext();) {
+ JavaPersistentType javaPersistentType = (JavaPersistentType) i.next();
+ if (javaPersistentType.jdtType().equals(iType)) {
+ this.javaPersistentType = javaPersistentType;
+ break;
+ }
+ }
+ }
+ }
+ }
+ return this.javaPersistentType;
+ }
+
+ public Type findType() {
+ JavaPersistentType javaPersistentType = findJavaPersistentType();
+ return (javaPersistentType == null) ? null : javaPersistentType.getType();
+ }
+
+ public Iterator<IPersistentAttribute> attributes() {
+ return new ReadOnlyIterator(getPersistentAttributes());
+ }
+
+ public Iterator<IPersistentAttribute> allAttributes() {
+ return new CompositeIterator(new TransformationIterator(this.inheritanceHierarchy()) {
+ protected Object transform(Object next) {
+ return ((IPersistentType) next).attributes();
+ }
+ });
+ }
+
+ public Iterator<IPersistentType> inheritanceHierarchy() {
+ // using a chain iterator to traverse up the inheritance tree
+ return new ChainIterator(this) {
+ protected Object nextLink(Object currentLink) {
+ return ((IPersistentType) currentLink).parentPersistentType();
+ }
+ };
+ }
+
+ public IPersistentType parentPersistentType() {
+ return this.parentPersistentType;
+ }
+
+ private String superclassTypeSignature() {
+ IType javaType = this.findJdtType();
+ if (javaType == null) {
+ return null;
+ }
+ try {
+ return javaType.getSuperclassTypeSignature();
+ }
+ catch (JavaModelException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ public IJpaContentNode getContentNode(int offset) {
+ for (Iterator i = getSpecifiedAttributeMappings().iterator(); i.hasNext();) {
+ XmlAttributeMapping mapping = (XmlAttributeMapping) i.next();
+ if (mapping.getNode().contains(offset)) {
+ return mapping.getContentNode(offset);
+ }
+ }
+ return this;
+ }
+
+ public void refreshDefaults(DefaultsContext context) {
+ refreshParentPersistentType(context);
+ }
+
+ private void refreshParentPersistentType(DefaultsContext context) {
+ String superclassTypeSignature = this.superclassTypeSignature();
+ if (superclassTypeSignature == null) {
+ this.parentPersistentType = null;
+ return;
+ }
+ IType jdtType = this.findJdtType();
+ if (jdtType == null) {
+ this.parentPersistentType = null;
+ return;
+ }
+ String fullyQualifiedTypeName = JDTTools.resolveSignature(superclassTypeSignature, jdtType);
+ if (fullyQualifiedTypeName == null) {
+ this.parentPersistentType = null;
+ return;
+ }
+ IPersistentType possibleParent = context.persistentType(fullyQualifiedTypeName);
+ if (possibleParent != null) {
+ if (possibleParent.getMappingKey() != null) {
+ this.parentPersistentType = possibleParent;
+ }
+ else {
+ this.parentPersistentType = possibleParent.parentPersistentType();
+ }
+ }
+ else {
+ this.parentPersistentType = null;
+ }
+ }
+
+ public XmlPersistentAttribute attributeNamed(String attributeName) {
+ for (XmlPersistentAttribute attribute : getPersistentAttributes()) {
+ if (attributeName.equals(attribute.getName())) {
+ return attribute;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public ITextRange getTextRange() {
+ return getMapping().getTextRange();
+ }
+
+ public ITextRange getClassTextRange() {
+ return getMapping().getClassTextRange();
+ }
+
+ public ITextRange getAttributesTextRange() {
+ return getMapping().getAttributesTextRange();
+ }
+ private abstract class AttributeMappingsList<E>
+ extends EObjectContainmentEList<XmlAttributeMapping>
+ {
+ private AttributeMappingsList(int feature) {
+ super(XmlAttributeMapping.class, XmlPersistentType.this, feature);
+ }
+
+ protected abstract EList<XmlPersistentAttribute> persistentAttributes();
+
+ @Override
+ protected void didAdd(int index, XmlAttributeMapping newObject) {
+ if (newObject.getPersistentAttribute() == null) {
+ throw new IllegalStateException("Must set the PersistentAttribute during creation");
+ }
+ persistentAttributes().add(index, newObject.getPersistentAttribute());
+ }
+
+ @Override
+ protected void didChange() {
+ // TODO Auto-generated method stub
+ super.didChange();
+ }
+
+ @Override
+ protected void didClear(int size, Object[] oldObjects) {
+ persistentAttributes().clear();
+ }
+
+ @Override
+ protected void didMove(int index, XmlAttributeMapping movedObject, int oldIndex) {
+ persistentAttributes().move(index, movedObject.getPersistentAttribute());
+ }
+
+ @Override
+ protected void didRemove(int index, XmlAttributeMapping oldObject) {
+ persistentAttributes().remove(oldObject.getPersistentAttribute());
+ }
+
+ @Override
+ protected void didSet(int index, XmlAttributeMapping newObject, XmlAttributeMapping oldObject) {
+ persistentAttributes().set(index, newObject.getPersistentAttribute());
+ }
+ }
+ private class SpecifiedAttributeMappingsList<E>
+ extends AttributeMappingsList<XmlAttributeMapping>
+ {
+ private SpecifiedAttributeMappingsList() {
+ super(OrmPackage.XML_PERSISTENT_TYPE__SPECIFIED_ATTRIBUTE_MAPPINGS);
+ }
+
+ @Override
+ protected EList<XmlPersistentAttribute> persistentAttributes() {
+ return getSpecifiedPersistentAttributes();
+ }
+ }
+ private class VirtualAttributeMappingsList<E>
+ extends AttributeMappingsList<XmlAttributeMapping>
+ {
+ private VirtualAttributeMappingsList() {
+ super(OrmPackage.XML_PERSISTENT_TYPE__VIRTUAL_ATTRIBUTE_MAPPINGS);
+ }
+
+ @Override
+ protected EList<XmlPersistentAttribute> persistentAttributes() {
+ return getVirtualPersistentAttributes();
+ }
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlPrimaryKeyJoinColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlPrimaryKeyJoinColumn.java
new file mode 100644
index 0000000000..4da746485c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlPrimaryKeyJoinColumn.java
@@ -0,0 +1,411 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.content.orm.resource.OrmXmlMapper;
+import org.eclipse.jpt.core.internal.emfutility.DOMUtilities;
+import org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.db.internal.Column;
+import org.eclipse.jpt.db.internal.Table;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Primary Key Join Column</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.XmlPrimaryKeyJoinColumn#getSpecifiedReferencedColumnNameForXml <em>Specified Referenced Column Name For Xml</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlPrimaryKeyJoinColumn()
+ * @model kind="class"
+ * @generated
+ */
+public class XmlPrimaryKeyJoinColumn extends AbstractXmlNamedColumn
+ implements IPrimaryKeyJoinColumn
+{
+ /**
+ * The default value of the '{@link #getReferencedColumnName() <em>Referenced Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getReferencedColumnName()
+ * @generated
+ * @ordered
+ */
+ protected static final String REFERENCED_COLUMN_NAME_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getSpecifiedReferencedColumnName() <em>Specified Referenced Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedReferencedColumnName()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_REFERENCED_COLUMN_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedReferencedColumnName() <em>Specified Referenced Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedReferencedColumnName()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedReferencedColumnName = SPECIFIED_REFERENCED_COLUMN_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultReferencedColumnName() <em>Default Referenced Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultReferencedColumnName()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_REFERENCED_COLUMN_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultReferencedColumnName() <em>Default Referenced Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultReferencedColumnName()
+ * @generated
+ * @ordered
+ */
+ protected String defaultReferencedColumnName = DEFAULT_REFERENCED_COLUMN_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getSpecifiedReferencedColumnNameForXml() <em>Specified Referenced Column Name For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedReferencedColumnNameForXml()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_REFERENCED_COLUMN_NAME_FOR_XML_EDEFAULT = null;
+
+ protected XmlPrimaryKeyJoinColumn() {
+ throw new UnsupportedOperationException("Use XmlPrimaryKeyJoinColumn(INamedColumn.Owner) instead");
+ }
+
+ protected XmlPrimaryKeyJoinColumn(IAbstractJoinColumn.Owner owner) {
+ super(owner);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_PRIMARY_KEY_JOIN_COLUMN;
+ }
+
+ public void setSpecifiedName(String newSpecifiedName) {
+ setSpecifiedNameGen(newSpecifiedName);
+ setSpecifiedNameForXml(newSpecifiedName);
+ }
+
+ /**
+ * Returns the value of the '<em><b>Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Referenced Column Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Referenced Column Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIPrimaryKeyJoinColumn_ReferencedColumnName()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated NOT
+ */
+ public String getReferencedColumnName() {
+ return (this.getSpecifiedReferencedColumnName() == null) ? getDefaultReferencedColumnName() : this.getSpecifiedReferencedColumnName();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Referenced Column Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Referenced Column Name</em>' attribute.
+ * @see #setSpecifiedReferencedColumnName(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIAbstractJoinColumn_SpecifiedReferencedColumnName()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedReferencedColumnName() {
+ return specifiedReferencedColumnName;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlPrimaryKeyJoinColumn#getSpecifiedReferencedColumnName <em>Specified Referenced Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Referenced Column Name</em>' attribute.
+ * @see #getSpecifiedReferencedColumnName()
+ * @generated
+ */
+ public void setSpecifiedReferencedColumnNameGen(String newSpecifiedReferencedColumnName) {
+ String oldSpecifiedReferencedColumnName = specifiedReferencedColumnName;
+ specifiedReferencedColumnName = newSpecifiedReferencedColumnName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME, oldSpecifiedReferencedColumnName, specifiedReferencedColumnName));
+ }
+
+ public void setSpecifiedReferencedColumnName(String newSpecifiedReferencedColumnName) {
+ setSpecifiedReferencedColumnNameGen(newSpecifiedReferencedColumnName);
+ setSpecifiedReferencedColumnNameForXml(newSpecifiedReferencedColumnName);
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Referenced Column Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Referenced Column Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIAbstractJoinColumn_DefaultReferencedColumnName()
+ * @model changeable="false"
+ * @generated
+ */
+ public String getDefaultReferencedColumnName() {
+ return defaultReferencedColumnName;
+ }
+
+ public void setColumnDefinition(String newColumnDefinition) {
+ setColumnDefinitionGen(newColumnDefinition);
+ setColumnDefinitionForXml(newColumnDefinition);
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Referenced Column Name For Xml</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Referenced Column Name For Xml</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Referenced Column Name For Xml</em>' attribute.
+ * @see #setSpecifiedReferencedColumnNameForXml(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlPrimaryKeyJoinColumn_SpecifiedReferencedColumnNameForXml()
+ * @model volatile="true"
+ * @generated NOT
+ */
+ public String getSpecifiedReferencedColumnNameForXml() {
+ return getSpecifiedReferencedColumnName();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlPrimaryKeyJoinColumn#getSpecifiedReferencedColumnNameForXml <em>Specified Referenced Column Name For Xml</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Referenced Column Name For Xml</em>' attribute.
+ * @see #getSpecifiedReferencedColumnNameForXml()
+ * @generated NOT
+ */
+ public void setSpecifiedReferencedColumnNameForXml(String newSpecifiedReferencedColumnNameForXml) {
+ setSpecifiedReferencedColumnNameGen(newSpecifiedReferencedColumnNameForXml);
+ if (eNotificationRequired())
+ //make sure oldValue different from newValue because we don't store the value from the xml, see super.eNotify()
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME_FOR_XML, newSpecifiedReferencedColumnNameForXml + " ", newSpecifiedReferencedColumnNameForXml));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case OrmPackage.XML_PRIMARY_KEY_JOIN_COLUMN__REFERENCED_COLUMN_NAME :
+ return getReferencedColumnName();
+ case OrmPackage.XML_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME :
+ return getSpecifiedReferencedColumnName();
+ case OrmPackage.XML_PRIMARY_KEY_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME :
+ return getDefaultReferencedColumnName();
+ case OrmPackage.XML_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME_FOR_XML :
+ return getSpecifiedReferencedColumnNameForXml();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case OrmPackage.XML_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME :
+ setSpecifiedReferencedColumnName((String) newValue);
+ return;
+ case OrmPackage.XML_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME_FOR_XML :
+ setSpecifiedReferencedColumnNameForXml((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME :
+ setSpecifiedReferencedColumnName(SPECIFIED_REFERENCED_COLUMN_NAME_EDEFAULT);
+ return;
+ case OrmPackage.XML_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME_FOR_XML :
+ setSpecifiedReferencedColumnNameForXml(SPECIFIED_REFERENCED_COLUMN_NAME_FOR_XML_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_PRIMARY_KEY_JOIN_COLUMN__REFERENCED_COLUMN_NAME :
+ return REFERENCED_COLUMN_NAME_EDEFAULT == null ? getReferencedColumnName() != null : !REFERENCED_COLUMN_NAME_EDEFAULT.equals(getReferencedColumnName());
+ case OrmPackage.XML_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME :
+ return SPECIFIED_REFERENCED_COLUMN_NAME_EDEFAULT == null ? specifiedReferencedColumnName != null : !SPECIFIED_REFERENCED_COLUMN_NAME_EDEFAULT.equals(specifiedReferencedColumnName);
+ case OrmPackage.XML_PRIMARY_KEY_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME :
+ return DEFAULT_REFERENCED_COLUMN_NAME_EDEFAULT == null ? defaultReferencedColumnName != null : !DEFAULT_REFERENCED_COLUMN_NAME_EDEFAULT.equals(defaultReferencedColumnName);
+ case OrmPackage.XML_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME_FOR_XML :
+ return SPECIFIED_REFERENCED_COLUMN_NAME_FOR_XML_EDEFAULT == null ? getSpecifiedReferencedColumnNameForXml() != null : !SPECIFIED_REFERENCED_COLUMN_NAME_FOR_XML_EDEFAULT.equals(getSpecifiedReferencedColumnNameForXml());
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IAbstractJoinColumn.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_PRIMARY_KEY_JOIN_COLUMN__REFERENCED_COLUMN_NAME :
+ return JpaCoreMappingsPackage.IABSTRACT_JOIN_COLUMN__REFERENCED_COLUMN_NAME;
+ case OrmPackage.XML_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME :
+ return JpaCoreMappingsPackage.IABSTRACT_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME;
+ case OrmPackage.XML_PRIMARY_KEY_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME :
+ return JpaCoreMappingsPackage.IABSTRACT_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IPrimaryKeyJoinColumn.class) {
+ switch (derivedFeatureID) {
+ 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 == IAbstractJoinColumn.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IABSTRACT_JOIN_COLUMN__REFERENCED_COLUMN_NAME :
+ return OrmPackage.XML_PRIMARY_KEY_JOIN_COLUMN__REFERENCED_COLUMN_NAME;
+ case JpaCoreMappingsPackage.IABSTRACT_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME :
+ return OrmPackage.XML_PRIMARY_KEY_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME;
+ case JpaCoreMappingsPackage.IABSTRACT_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME :
+ return OrmPackage.XML_PRIMARY_KEY_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IPrimaryKeyJoinColumn.class) {
+ switch (baseFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (specifiedReferencedColumnName: ");
+ result.append(specifiedReferencedColumnName);
+ result.append(", defaultReferencedColumnName: ");
+ result.append(defaultReferencedColumnName);
+ result.append(')');
+ return result.toString();
+ }
+
+ public IAbstractJoinColumn.Owner getOwner() {
+ return (IAbstractJoinColumn.Owner) this.owner;
+ }
+
+ public Column dbReferencedColumn() {
+ Table table = this.dbReferencedColumnTable();
+ return (table == null) ? null : table.columnNamed(this.getReferencedColumnName());
+ }
+
+ public Table dbReferencedColumnTable() {
+ return getOwner().dbReferencedColumnTable();
+ }
+
+ public boolean isReferencedColumnResolved() {
+ return dbReferencedColumn() != null;
+ }
+
+ public ITextRange getReferencedColumnNameTextRange() {
+ if (node == null) {
+ return owner.getTextRange();
+ }
+ IDOMNode referencedColumnNameNode = (IDOMNode) DOMUtilities.getChildAttributeNode(node, OrmXmlMapper.REFERENCED_COLUMN_NAME);
+ return (referencedColumnNameNode == null) ? getTextRange() : getTextRange(referencedColumnNameNode);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlQueryHint.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlQueryHint.java
new file mode 100644
index 0000000000..a8480f3a3a
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlQueryHint.java
@@ -0,0 +1,281 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jpt.core.internal.XmlEObject;
+import org.eclipse.jpt.core.internal.mappings.IQueryHint;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Query Hint</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlQueryHint()
+ * @model kind="class"
+ * @generated
+ */
+public class XmlQueryHint extends XmlEObject implements IQueryHint
+{
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_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 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 XmlQueryHint() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_QUERY_HINT;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIQueryHint_Name()
+ * @model
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlQueryHint#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_QUERY_HINT__NAME, oldName, name));
+ }
+
+ /**
+ * 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.jpt.core.internal.content.orm.OrmPackage#getIQueryHint_Value()
+ * @model
+ * @generated
+ */
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlQueryHint#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
+ */
+ public void setValue(String newValue) {
+ String oldValue = value;
+ value = newValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_QUERY_HINT__VALUE, oldValue, value));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case OrmPackage.XML_QUERY_HINT__NAME :
+ return getName();
+ case OrmPackage.XML_QUERY_HINT__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 OrmPackage.XML_QUERY_HINT__NAME :
+ setName((String) newValue);
+ return;
+ case OrmPackage.XML_QUERY_HINT__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 OrmPackage.XML_QUERY_HINT__NAME :
+ setName(NAME_EDEFAULT);
+ return;
+ case OrmPackage.XML_QUERY_HINT__VALUE :
+ setValue(VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_QUERY_HINT__NAME :
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case OrmPackage.XML_QUERY_HINT__VALUE :
+ return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IQueryHint.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_QUERY_HINT__NAME :
+ return JpaCoreMappingsPackage.IQUERY_HINT__NAME;
+ case OrmPackage.XML_QUERY_HINT__VALUE :
+ return JpaCoreMappingsPackage.IQUERY_HINT__VALUE;
+ 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 == IQueryHint.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IQUERY_HINT__NAME :
+ return OrmPackage.XML_QUERY_HINT__NAME;
+ case JpaCoreMappingsPackage.IQUERY_HINT__VALUE :
+ return OrmPackage.XML_QUERY_HINT__VALUE;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(", value: ");
+ result.append(value);
+ result.append(')');
+ return result.toString();
+ }
+} // XmlQueryHint
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlRelationshipMapping.java
new file mode 100644
index 0000000000..e10fce543a
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlRelationshipMapping.java
@@ -0,0 +1,451 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import java.util.Iterator;
+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.jpt.core.internal.IPersistentAttribute;
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.mappings.IEntity;
+import org.eclipse.jpt.core.internal.mappings.IRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.core.internal.mappings.RelationshipMappingTools;
+import org.eclipse.jpt.core.internal.platform.BaseJpaPlatform;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+import org.eclipse.jpt.utility.internal.iterators.EmptyIterator;
+import org.eclipse.jpt.utility.internal.iterators.TransformationIterator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Relationship Mapping</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlRelationshipMapping()
+ * @model kind="class" abstract="true"
+ * @generated
+ */
+public abstract class XmlRelationshipMapping extends XmlAttributeMapping
+ implements IRelationshipMapping
+{
+ /**
+ * The default value of the '{@link #getTargetEntity() <em>Target Entity</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTargetEntity()
+ * @generated
+ * @ordered
+ */
+ protected static final String TARGET_ENTITY_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getSpecifiedTargetEntity() <em>Specified Target Entity</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedTargetEntity()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_TARGET_ENTITY_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedTargetEntity() <em>Specified Target Entity</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedTargetEntity()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedTargetEntity = SPECIFIED_TARGET_ENTITY_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultTargetEntity() <em>Default Target Entity</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultTargetEntity()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_TARGET_ENTITY_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultTargetEntity() <em>Default Target Entity</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultTargetEntity()
+ * @generated
+ * @ordered
+ */
+ protected String defaultTargetEntity = DEFAULT_TARGET_ENTITY_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getResolvedTargetEntity() <em>Resolved Target Entity</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getResolvedTargetEntity()
+ * @generated
+ * @ordered
+ */
+ protected IEntity resolvedTargetEntity;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XmlRelationshipMapping() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_RELATIONSHIP_MAPPING;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Target Entity</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Target Entity</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIRelationshipMapping_TargetEntity()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated NOT
+ */
+ public String getTargetEntity() {
+ return (this.getSpecifiedTargetEntity() == null) ? getDefaultTargetEntity() : this.getSpecifiedTargetEntity();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Target Entity</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Target Entity</em>' attribute.
+ * @see #setSpecifiedTargetEntity(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIRelationshipMapping_SpecifiedTargetEntity()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedTargetEntity() {
+ return specifiedTargetEntity;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlRelationshipMapping#getSpecifiedTargetEntity <em>Specified Target Entity</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Target Entity</em>' attribute.
+ * @see #getSpecifiedTargetEntity()
+ * @generated
+ */
+ public void setSpecifiedTargetEntity(String newSpecifiedTargetEntity) {
+ String oldSpecifiedTargetEntity = specifiedTargetEntity;
+ specifiedTargetEntity = newSpecifiedTargetEntity;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY, oldSpecifiedTargetEntity, specifiedTargetEntity));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Target Entity</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Target Entity</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIRelationshipMapping_DefaultTargetEntity()
+ * @model changeable="false"
+ * @generated
+ */
+ public String getDefaultTargetEntity() {
+ return defaultTargetEntity;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Resolved Target Entity</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Resolved Target Entity</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Resolved Target Entity</em>' reference.
+ * @see #setResolvedTargetEntity(IEntity)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIRelationshipMapping_ResolvedTargetEntity()
+ * @model
+ * @generated
+ */
+ public IEntity getResolvedTargetEntity() {
+ if (resolvedTargetEntity != null && resolvedTargetEntity.eIsProxy()) {
+ InternalEObject oldResolvedTargetEntity = (InternalEObject) resolvedTargetEntity;
+ resolvedTargetEntity = (IEntity) eResolveProxy(oldResolvedTargetEntity);
+ if (resolvedTargetEntity != oldResolvedTargetEntity) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, OrmPackage.XML_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY, oldResolvedTargetEntity, resolvedTargetEntity));
+ }
+ }
+ return resolvedTargetEntity;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public IEntity basicGetResolvedTargetEntity() {
+ return resolvedTargetEntity;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlRelationshipMapping#getResolvedTargetEntity <em>Resolved Target Entity</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Resolved Target Entity</em>' reference.
+ * @see #getResolvedTargetEntity()
+ * @generated
+ */
+ public void setResolvedTargetEntity(IEntity newResolvedTargetEntity) {
+ IEntity oldResolvedTargetEntity = resolvedTargetEntity;
+ resolvedTargetEntity = newResolvedTargetEntity;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY, oldResolvedTargetEntity, resolvedTargetEntity));
+ }
+
+ //TODO should we allow setting through the ecore, that would make this method
+ //public and part of the ITable api. only the model needs to be setting the default,
+ //but the ui needs to be listening for changes to the default.
+ protected void setDefaultTargetEntity(String newDefaultTargetEntity) {
+ String oldDefaultTargetEntity = this.defaultTargetEntity;
+ this.defaultTargetEntity = newDefaultTargetEntity;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY, oldDefaultTargetEntity, this.defaultTargetEntity));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case OrmPackage.XML_RELATIONSHIP_MAPPING__TARGET_ENTITY :
+ return getTargetEntity();
+ case OrmPackage.XML_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY :
+ return getSpecifiedTargetEntity();
+ case OrmPackage.XML_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY :
+ return getDefaultTargetEntity();
+ case OrmPackage.XML_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY :
+ if (resolve)
+ return getResolvedTargetEntity();
+ return basicGetResolvedTargetEntity();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case OrmPackage.XML_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY :
+ setSpecifiedTargetEntity((String) newValue);
+ return;
+ case OrmPackage.XML_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY :
+ setResolvedTargetEntity((IEntity) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY :
+ setSpecifiedTargetEntity(SPECIFIED_TARGET_ENTITY_EDEFAULT);
+ return;
+ case OrmPackage.XML_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY :
+ setResolvedTargetEntity((IEntity) null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_RELATIONSHIP_MAPPING__TARGET_ENTITY :
+ return TARGET_ENTITY_EDEFAULT == null ? getTargetEntity() != null : !TARGET_ENTITY_EDEFAULT.equals(getTargetEntity());
+ case OrmPackage.XML_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY :
+ return SPECIFIED_TARGET_ENTITY_EDEFAULT == null ? specifiedTargetEntity != null : !SPECIFIED_TARGET_ENTITY_EDEFAULT.equals(specifiedTargetEntity);
+ case OrmPackage.XML_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY :
+ return DEFAULT_TARGET_ENTITY_EDEFAULT == null ? defaultTargetEntity != null : !DEFAULT_TARGET_ENTITY_EDEFAULT.equals(defaultTargetEntity);
+ case OrmPackage.XML_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY :
+ return resolvedTargetEntity != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IRelationshipMapping.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_RELATIONSHIP_MAPPING__TARGET_ENTITY :
+ return JpaCoreMappingsPackage.IRELATIONSHIP_MAPPING__TARGET_ENTITY;
+ case OrmPackage.XML_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY :
+ return JpaCoreMappingsPackage.IRELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY;
+ case OrmPackage.XML_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY :
+ return JpaCoreMappingsPackage.IRELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY;
+ case OrmPackage.XML_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY :
+ return JpaCoreMappingsPackage.IRELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY;
+ 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 == IRelationshipMapping.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IRELATIONSHIP_MAPPING__TARGET_ENTITY :
+ return OrmPackage.XML_RELATIONSHIP_MAPPING__TARGET_ENTITY;
+ case JpaCoreMappingsPackage.IRELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY :
+ return OrmPackage.XML_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY;
+ case JpaCoreMappingsPackage.IRELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY :
+ return OrmPackage.XML_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY;
+ case JpaCoreMappingsPackage.IRELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY :
+ return OrmPackage.XML_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (specifiedTargetEntity: ");
+ result.append(specifiedTargetEntity);
+ result.append(", defaultTargetEntity: ");
+ result.append(defaultTargetEntity);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public void initializeFromXmlRelationshipMapping(XmlRelationshipMapping oldMapping) {
+ super.initializeFromXmlRelationshipMapping(oldMapping);
+ setSpecifiedTargetEntity(oldMapping.getSpecifiedTargetEntity());
+ }
+
+ public boolean targetEntityIsValid(String targetEntity) {
+ return RelationshipMappingTools.targetEntityIsValid(targetEntity);
+ }
+
+ //TODO grr, this will cause ClassCastExceptions, how should I handle it??
+ public IEntity getEntity() {
+ return (IEntity) ((XmlPersistentType) eContainer()).getMapping();
+ }
+
+ public String fullyQualifiedTargetEntity() {
+ if (getTargetEntity() == null) {
+ return null;
+ }
+ if (targetEntityIncludesPackage()) {
+ return getTargetEntity();
+ }
+ String package_ = getPersistentType().getMapping().getEntityMappings().getPackage();
+ if (package_ != null) {
+ return package_ + '.' + getTargetEntity();
+ }
+ return getTargetEntity();
+ }
+
+ private boolean targetEntityIncludesPackage() {
+ return getTargetEntity().lastIndexOf('.') != -1;
+ }
+
+ public Iterator<String> possibleMappedByAttributeNames() {
+ IEntity targetEntity = getResolvedTargetEntity();
+ if (targetEntity == null) {
+ return EmptyIterator.instance();
+ }
+ return new TransformationIterator<IPersistentAttribute, String>(targetEntity.getPersistentType().attributes()) {
+ protected String transform(IPersistentAttribute attribute) {
+ return attribute.getName();
+ }
+ };
+ }
+
+ @Override
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ super.refreshDefaults(defaultsContext);
+ setDefaultTargetEntity((String) defaultsContext.getDefault(BaseJpaPlatform.DEFAULT_TARGET_ENTITY_KEY));
+ String targetEntity = fullyQualifiedTargetEntity();
+ if (targetEntity != null) {
+ IPersistentType persistentType = defaultsContext.persistentType(targetEntity);
+ if (persistentType != null) {
+ if (persistentType.getMapping() instanceof IEntity) {
+ setResolvedTargetEntity((IEntity) persistentType.getMapping());
+ return;
+ }
+ }
+ }
+ setResolvedTargetEntity(null);
+ }
+} // XmlRelationshipMapping
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlRootContentNode.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlRootContentNode.java
new file mode 100644
index 0000000000..1a35004dd4
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlRootContentNode.java
@@ -0,0 +1,351 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.core.resources.IResource;
+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.jdt.core.ElementChangedEvent;
+import org.eclipse.jpt.core.internal.IJpaContentNode;
+import org.eclipse.jpt.core.internal.IJpaFile;
+import org.eclipse.jpt.core.internal.IJpaRootContentNode;
+import org.eclipse.jpt.core.internal.JpaCorePackage;
+import org.eclipse.jpt.core.internal.JpaFile;
+import org.eclipse.jpt.core.internal.XmlEObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Root Content Node</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.XmlRootContentNode#getEntityMappings <em>Entity Mappings</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlRootContentNode()
+ * @model kind="class"
+ * @generated
+ */
+public class XmlRootContentNode extends XmlEObject
+ implements IJpaRootContentNode
+{
+ /**
+ * The cached value of the '{@link #getEntityMappings() <em>Entity Mappings</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getEntityMappings()
+ * @generated
+ * @ordered
+ */
+ protected EntityMappingsInternal entityMappings;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XmlRootContentNode() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_ROOT_CONTENT_NODE;
+ }
+
+ /* @see IJpaContentNode#getId() */
+ public Object getId() {
+ return IXmlContentNodes.XML_ROOT_ID;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Jpa File</b></em>' container reference.
+ * The default value is <code>""</code>.
+ * It is bidirectional and its opposite is '{@link org.eclipse.jpt.core.internal.JpaFile#getContent <em>Content</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>File</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Jpa File</em>' container reference.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIJpaRootContentNode_JpaFile()
+ * @see org.eclipse.jpt.core.internal.JpaFile#getContent
+ * @model opposite="content" changeable="false"
+ * @generated
+ */
+ public IJpaFile getJpaFile() {
+ if (eContainerFeatureID != OrmPackage.XML_ROOT_CONTENT_NODE__JPA_FILE)
+ return null;
+ return (IJpaFile) eContainer();
+ }
+
+ public IResource getResource() {
+ return getJpaFile().getResource();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Entity Mappings</b></em>' reference.
+ * It is bidirectional and its opposite is '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getRoot <em>Root</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Entity Mappings</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Entity Mappings</em>' reference.
+ * @see #setEntityMappings(EntityMappingsInternal)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlRootContentNode_EntityMappings()
+ * @see org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal#getRoot
+ * @model opposite="root" resolveProxies="false" required="true" ordered="false"
+ * @generated
+ */
+ public EntityMappingsInternal getEntityMappings() {
+ return entityMappings;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetEntityMappings(EntityMappingsInternal newEntityMappings, NotificationChain msgs) {
+ EntityMappingsInternal oldEntityMappings = entityMappings;
+ entityMappings = newEntityMappings;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OrmPackage.XML_ROOT_CONTENT_NODE__ENTITY_MAPPINGS, oldEntityMappings, newEntityMappings);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlRootContentNode#getEntityMappings <em>Entity Mappings</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Entity Mappings</em>' reference.
+ * @see #getEntityMappings()
+ * @generated
+ */
+ public void setEntityMappings(EntityMappingsInternal newEntityMappings) {
+ if (newEntityMappings != entityMappings) {
+ NotificationChain msgs = null;
+ if (entityMappings != null)
+ msgs = ((InternalEObject) entityMappings).eInverseRemove(this, OrmPackage.ENTITY_MAPPINGS_INTERNAL__ROOT, EntityMappingsInternal.class, msgs);
+ if (newEntityMappings != null)
+ msgs = ((InternalEObject) newEntityMappings).eInverseAdd(this, OrmPackage.ENTITY_MAPPINGS_INTERNAL__ROOT, EntityMappingsInternal.class, msgs);
+ msgs = basicSetEntityMappings(newEntityMappings, msgs);
+ if (msgs != null)
+ msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_ROOT_CONTENT_NODE__ENTITY_MAPPINGS, newEntityMappings, newEntityMappings));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case OrmPackage.XML_ROOT_CONTENT_NODE__JPA_FILE :
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ return eBasicSetContainer(otherEnd, OrmPackage.XML_ROOT_CONTENT_NODE__JPA_FILE, msgs);
+ case OrmPackage.XML_ROOT_CONTENT_NODE__ENTITY_MAPPINGS :
+ if (entityMappings != null)
+ msgs = ((InternalEObject) entityMappings).eInverseRemove(this, OrmPackage.ENTITY_MAPPINGS_INTERNAL__ROOT, EntityMappingsInternal.class, msgs);
+ return basicSetEntityMappings((EntityMappingsInternal) 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 OrmPackage.XML_ROOT_CONTENT_NODE__JPA_FILE :
+ return eBasicSetContainer(null, OrmPackage.XML_ROOT_CONTENT_NODE__JPA_FILE, msgs);
+ case OrmPackage.XML_ROOT_CONTENT_NODE__ENTITY_MAPPINGS :
+ return basicSetEntityMappings(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
+ switch (eContainerFeatureID) {
+ case OrmPackage.XML_ROOT_CONTENT_NODE__JPA_FILE :
+ return eInternalContainer().eInverseRemove(this, JpaCorePackage.JPA_FILE__CONTENT, JpaFile.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 OrmPackage.XML_ROOT_CONTENT_NODE__JPA_FILE :
+ return getJpaFile();
+ case OrmPackage.XML_ROOT_CONTENT_NODE__ENTITY_MAPPINGS :
+ return getEntityMappings();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case OrmPackage.XML_ROOT_CONTENT_NODE__ENTITY_MAPPINGS :
+ setEntityMappings((EntityMappingsInternal) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_ROOT_CONTENT_NODE__ENTITY_MAPPINGS :
+ setEntityMappings((EntityMappingsInternal) null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_ROOT_CONTENT_NODE__JPA_FILE :
+ return getJpaFile() != null;
+ case OrmPackage.XML_ROOT_CONTENT_NODE__ENTITY_MAPPINGS :
+ return entityMappings != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IJpaContentNode.class) {
+ switch (derivedFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IJpaRootContentNode.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_ROOT_CONTENT_NODE__JPA_FILE :
+ return JpaCorePackage.IJPA_ROOT_CONTENT_NODE__JPA_FILE;
+ 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 == IJpaContentNode.class) {
+ switch (baseFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IJpaRootContentNode.class) {
+ switch (baseFeatureID) {
+ case JpaCorePackage.IJPA_ROOT_CONTENT_NODE__JPA_FILE :
+ return OrmPackage.XML_ROOT_CONTENT_NODE__JPA_FILE;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /* (non-Javadoc)
+ *
+ * @see IJpaRootContentNode#getContentNode(int)
+ */
+ public IJpaContentNode getContentNode(int offset) {
+ if (getEntityMappings() == null || !getEntityMappings().getNode().contains(offset)) {
+ return this;
+ }
+ return getEntityMappings().getContentNode(offset);
+ }
+
+ /* (non-Javadoc)
+ *
+ * @see IJpaRootContentNode#handleJavaElementChangedEvent(ElementChangedEvent)
+ */
+ public void handleJavaElementChangedEvent(ElementChangedEvent event) {
+ getEntityMappings().handleJavaElementChangedEvent(event);
+ }
+
+ /* (non-Javadoc)
+ *
+ * @see IJpaRootContentNode#dispose()
+ */
+ public void dispose() {
+ // TODO
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlSecondaryTable.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlSecondaryTable.java
new file mode 100644
index 0000000000..4deac7353f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlSecondaryTable.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.jpt.core.internal.mappings.ISecondaryTable;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Secondary Table</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlSecondaryTable()
+ * @model kind="class"
+ * @generated
+ */
+public class XmlSecondaryTable extends AbstractXmlTable
+ implements ISecondaryTable
+{
+ private XmlSecondaryTable() {
+ super();
+ }
+
+ protected XmlSecondaryTable(Owner owner) {
+ super(owner);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_SECONDARY_TABLE;
+ }
+
+ private XmlEntityInternal entity() {
+ return (XmlEntityInternal) eContainer();
+ }
+
+ @Override
+ protected void makeTableForXmlNonNull() {
+ //secondaryTables are part of a collection, the secondary-table element will be removed/added
+ //when the XmlSecondaryTable is removed/added to the XmlEntity collection
+ }
+
+ @Override
+ protected void makeTableForXmlNull() {
+ //secondaryTables are part of a collection, the secondary-table element will be removed/added
+ //when the XmlSecondaryTable is removed/added to the XmlEntity collection
+ }
+} // XmlSecondaryTable
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlSequenceGenerator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlSequenceGenerator.java
new file mode 100644
index 0000000000..e9d9a07d75
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlSequenceGenerator.java
@@ -0,0 +1,281 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jpt.core.internal.mappings.ISequenceGenerator;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Sequence Generator</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlSequenceGenerator()
+ * @model kind="class"
+ * @generated
+ */
+public class XmlSequenceGenerator extends XmlGenerator
+ implements ISequenceGenerator
+{
+ /**
+ * The default value of the '{@link #getSequenceName() <em>Sequence Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSequenceName()
+ * @generated
+ * @ordered
+ */
+ protected static final String SEQUENCE_NAME_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getSpecifiedSequenceName() <em>Specified Sequence Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedSequenceName()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_SEQUENCE_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedSequenceName() <em>Specified Sequence Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedSequenceName()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedSequenceName = SPECIFIED_SEQUENCE_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultSequenceName() <em>Default Sequence Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultSequenceName()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_SEQUENCE_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultSequenceName() <em>Default Sequence Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultSequenceName()
+ * @generated
+ * @ordered
+ */
+ protected String defaultSequenceName = DEFAULT_SEQUENCE_NAME_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XmlSequenceGenerator() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_SEQUENCE_GENERATOR;
+ }
+
+ public String getSequenceName() {
+ return (this.getSpecifiedSequenceName() == null) ? getDefaultSequenceName() : this.getSpecifiedSequenceName();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Sequence Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Sequence Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Sequence Name</em>' attribute.
+ * @see #setSpecifiedSequenceName(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getISequenceGenerator_SpecifiedSequenceName()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedSequenceName() {
+ return specifiedSequenceName;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlSequenceGenerator#getSpecifiedSequenceName <em>Specified Sequence Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Sequence Name</em>' attribute.
+ * @see #getSpecifiedSequenceName()
+ * @generated
+ */
+ public void setSpecifiedSequenceName(String newSpecifiedSequenceName) {
+ String oldSpecifiedSequenceName = specifiedSequenceName;
+ specifiedSequenceName = newSpecifiedSequenceName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_SEQUENCE_GENERATOR__SPECIFIED_SEQUENCE_NAME, oldSpecifiedSequenceName, specifiedSequenceName));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Sequence Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Sequence Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Sequence Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getISequenceGenerator_DefaultSequenceName()
+ * @model changeable="false"
+ * @generated
+ */
+ public String getDefaultSequenceName() {
+ return defaultSequenceName;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case OrmPackage.XML_SEQUENCE_GENERATOR__SEQUENCE_NAME :
+ return getSequenceName();
+ case OrmPackage.XML_SEQUENCE_GENERATOR__SPECIFIED_SEQUENCE_NAME :
+ return getSpecifiedSequenceName();
+ case OrmPackage.XML_SEQUENCE_GENERATOR__DEFAULT_SEQUENCE_NAME :
+ return getDefaultSequenceName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case OrmPackage.XML_SEQUENCE_GENERATOR__SPECIFIED_SEQUENCE_NAME :
+ setSpecifiedSequenceName((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_SEQUENCE_GENERATOR__SPECIFIED_SEQUENCE_NAME :
+ setSpecifiedSequenceName(SPECIFIED_SEQUENCE_NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_SEQUENCE_GENERATOR__SEQUENCE_NAME :
+ return SEQUENCE_NAME_EDEFAULT == null ? getSequenceName() != null : !SEQUENCE_NAME_EDEFAULT.equals(getSequenceName());
+ case OrmPackage.XML_SEQUENCE_GENERATOR__SPECIFIED_SEQUENCE_NAME :
+ return SPECIFIED_SEQUENCE_NAME_EDEFAULT == null ? specifiedSequenceName != null : !SPECIFIED_SEQUENCE_NAME_EDEFAULT.equals(specifiedSequenceName);
+ case OrmPackage.XML_SEQUENCE_GENERATOR__DEFAULT_SEQUENCE_NAME :
+ return DEFAULT_SEQUENCE_NAME_EDEFAULT == null ? defaultSequenceName != null : !DEFAULT_SEQUENCE_NAME_EDEFAULT.equals(defaultSequenceName);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == ISequenceGenerator.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_SEQUENCE_GENERATOR__SEQUENCE_NAME :
+ return JpaCoreMappingsPackage.ISEQUENCE_GENERATOR__SEQUENCE_NAME;
+ case OrmPackage.XML_SEQUENCE_GENERATOR__SPECIFIED_SEQUENCE_NAME :
+ return JpaCoreMappingsPackage.ISEQUENCE_GENERATOR__SPECIFIED_SEQUENCE_NAME;
+ case OrmPackage.XML_SEQUENCE_GENERATOR__DEFAULT_SEQUENCE_NAME :
+ return JpaCoreMappingsPackage.ISEQUENCE_GENERATOR__DEFAULT_SEQUENCE_NAME;
+ 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 == ISequenceGenerator.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.ISEQUENCE_GENERATOR__SEQUENCE_NAME :
+ return OrmPackage.XML_SEQUENCE_GENERATOR__SEQUENCE_NAME;
+ case JpaCoreMappingsPackage.ISEQUENCE_GENERATOR__SPECIFIED_SEQUENCE_NAME :
+ return OrmPackage.XML_SEQUENCE_GENERATOR__SPECIFIED_SEQUENCE_NAME;
+ case JpaCoreMappingsPackage.ISEQUENCE_GENERATOR__DEFAULT_SEQUENCE_NAME :
+ return OrmPackage.XML_SEQUENCE_GENERATOR__DEFAULT_SEQUENCE_NAME;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (specifiedSequenceName: ");
+ result.append(specifiedSequenceName);
+ result.append(", defaultSequenceName: ");
+ result.append(defaultSequenceName);
+ result.append(')');
+ return result.toString();
+ }
+} // XmlSequenceGenerator
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlSingleRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlSingleRelationshipMapping.java
new file mode 100644
index 0000000000..80658c3677
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlSingleRelationshipMapping.java
@@ -0,0 +1,410 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import java.util.Collection;
+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.common.notify.impl.AdapterImpl;
+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.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType;
+import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Single Relationship Mapping</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlSingleRelationshipMapping()
+ * @model kind="class" abstract="true"
+ * @generated
+ */
+public abstract class XmlSingleRelationshipMapping
+ extends XmlRelationshipMapping implements ISingleRelationshipMapping
+{
+ /**
+ * The default value of the '{@link #getFetch() <em>Fetch</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFetch()
+ * @generated
+ * @ordered
+ */
+ protected static final DefaultEagerFetchType FETCH_EDEFAULT = DefaultEagerFetchType.DEFAULT;
+
+ /**
+ * The cached value of the '{@link #getFetch() <em>Fetch</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFetch()
+ * @generated
+ * @ordered
+ */
+ protected DefaultEagerFetchType fetch = FETCH_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedJoinColumns() <em>Specified Join Columns</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedJoinColumns()
+ * @generated
+ * @ordered
+ */
+ protected EList<IJoinColumn> specifiedJoinColumns;
+
+ /**
+ * The cached value of the '{@link #getDefaultJoinColumns() <em>Default Join Columns</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultJoinColumns()
+ * @generated
+ * @ordered
+ */
+ protected EList<IJoinColumn> defaultJoinColumns;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected XmlSingleRelationshipMapping() {
+ super();
+ this.getDefaultJoinColumns().add(this.createJoinColumn(new JoinColumnOwner(this)));
+ this.eAdapters().add(this.buildListener());
+ }
+
+ private IJoinColumn createJoinColumn(IJoinColumn.Owner owner) {
+ return OrmFactory.eINSTANCE.createXmlJoinColumn(owner);
+ }
+
+ private Adapter buildListener() {
+ return new AdapterImpl() {
+ public void notifyChanged(Notification notification) {
+ XmlSingleRelationshipMapping.this.notifyChanged(notification);
+ }
+ };
+ }
+
+ /**
+ * check for changes to the 'specifiedJoinColumns' and
+ * 'specifiedInverseJoinColumns' lists so we can notify the
+ * model adapter of any changes;
+ * also listen for changes to the 'defaultJoinColumns' and
+ * 'defaultInverseJoinColumns' lists so we can spank the developer
+ */
+ void notifyChanged(Notification notification) {
+ switch (notification.getFeatureID(ISingleRelationshipMapping.class)) {
+ case JpaCoreMappingsPackage.ISINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS :
+ defaultJoinColumnsChanged(notification);
+ break;
+ default :
+ break;
+ }
+ }
+
+ void defaultJoinColumnsChanged(Notification notification) {
+ throw new IllegalStateException("'defaultJoinColumns' cannot be changed");
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_SINGLE_RELATIONSHIP_MAPPING;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Fetch</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Fetch</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Fetch</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType
+ * @see #setFetch(DefaultEagerFetchType)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getISingleRelationshipMapping_Fetch()
+ * @model
+ * @generated
+ */
+ public DefaultEagerFetchType getFetch() {
+ return fetch;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlSingleRelationshipMapping#getFetch <em>Fetch</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Fetch</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType
+ * @see #getFetch()
+ * @generated
+ */
+ public void setFetch(DefaultEagerFetchType newFetch) {
+ DefaultEagerFetchType oldFetch = fetch;
+ fetch = newFetch == null ? FETCH_EDEFAULT : newFetch;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_SINGLE_RELATIONSHIP_MAPPING__FETCH, oldFetch, fetch));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Join Columns</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>Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getISingleRelationshipMapping_JoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IJoinColumn" containment="true" transient="true" changeable="false" volatile="true"
+ * @generated NOT
+ */
+ public EList<IJoinColumn> getJoinColumns() {
+ return this.getSpecifiedJoinColumns().isEmpty() ? this.getDefaultJoinColumns() : this.getSpecifiedJoinColumns();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Join Columns</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>Specified Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getISingleRelationshipMapping_SpecifiedJoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IJoinColumn" containment="true"
+ * @generated
+ */
+ public EList<IJoinColumn> getSpecifiedJoinColumns() {
+ if (specifiedJoinColumns == null) {
+ specifiedJoinColumns = new EObjectContainmentEList<IJoinColumn>(IJoinColumn.class, this, OrmPackage.XML_SINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS);
+ }
+ return specifiedJoinColumns;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Join Columns</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>Default Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getISingleRelationshipMapping_DefaultJoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IJoinColumn" containment="true"
+ * @generated
+ */
+ public EList<IJoinColumn> getDefaultJoinColumns() {
+ if (defaultJoinColumns == null) {
+ defaultJoinColumns = new EObjectContainmentEList<IJoinColumn>(IJoinColumn.class, this, OrmPackage.XML_SINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS);
+ }
+ return defaultJoinColumns;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case OrmPackage.XML_SINGLE_RELATIONSHIP_MAPPING__JOIN_COLUMNS :
+ return ((InternalEList<?>) getJoinColumns()).basicRemove(otherEnd, msgs);
+ case OrmPackage.XML_SINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS :
+ return ((InternalEList<?>) getSpecifiedJoinColumns()).basicRemove(otherEnd, msgs);
+ case OrmPackage.XML_SINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS :
+ return ((InternalEList<?>) getDefaultJoinColumns()).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 OrmPackage.XML_SINGLE_RELATIONSHIP_MAPPING__FETCH :
+ return getFetch();
+ case OrmPackage.XML_SINGLE_RELATIONSHIP_MAPPING__JOIN_COLUMNS :
+ return getJoinColumns();
+ case OrmPackage.XML_SINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS :
+ return getSpecifiedJoinColumns();
+ case OrmPackage.XML_SINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS :
+ return getDefaultJoinColumns();
+ }
+ 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 OrmPackage.XML_SINGLE_RELATIONSHIP_MAPPING__FETCH :
+ setFetch((DefaultEagerFetchType) newValue);
+ return;
+ case OrmPackage.XML_SINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS :
+ getSpecifiedJoinColumns().clear();
+ getSpecifiedJoinColumns().addAll((Collection<? extends IJoinColumn>) newValue);
+ return;
+ case OrmPackage.XML_SINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS :
+ getDefaultJoinColumns().clear();
+ getDefaultJoinColumns().addAll((Collection<? extends IJoinColumn>) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_SINGLE_RELATIONSHIP_MAPPING__FETCH :
+ setFetch(FETCH_EDEFAULT);
+ return;
+ case OrmPackage.XML_SINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS :
+ getSpecifiedJoinColumns().clear();
+ return;
+ case OrmPackage.XML_SINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS :
+ getDefaultJoinColumns().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_SINGLE_RELATIONSHIP_MAPPING__FETCH :
+ return fetch != FETCH_EDEFAULT;
+ case OrmPackage.XML_SINGLE_RELATIONSHIP_MAPPING__JOIN_COLUMNS :
+ return !getJoinColumns().isEmpty();
+ case OrmPackage.XML_SINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS :
+ return specifiedJoinColumns != null && !specifiedJoinColumns.isEmpty();
+ case OrmPackage.XML_SINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS :
+ return defaultJoinColumns != null && !defaultJoinColumns.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == ISingleRelationshipMapping.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_SINGLE_RELATIONSHIP_MAPPING__FETCH :
+ return JpaCoreMappingsPackage.ISINGLE_RELATIONSHIP_MAPPING__FETCH;
+ case OrmPackage.XML_SINGLE_RELATIONSHIP_MAPPING__JOIN_COLUMNS :
+ return JpaCoreMappingsPackage.ISINGLE_RELATIONSHIP_MAPPING__JOIN_COLUMNS;
+ case OrmPackage.XML_SINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS :
+ return JpaCoreMappingsPackage.ISINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS;
+ case OrmPackage.XML_SINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS :
+ return JpaCoreMappingsPackage.ISINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS;
+ 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 == ISingleRelationshipMapping.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.ISINGLE_RELATIONSHIP_MAPPING__FETCH :
+ return OrmPackage.XML_SINGLE_RELATIONSHIP_MAPPING__FETCH;
+ case JpaCoreMappingsPackage.ISINGLE_RELATIONSHIP_MAPPING__JOIN_COLUMNS :
+ return OrmPackage.XML_SINGLE_RELATIONSHIP_MAPPING__JOIN_COLUMNS;
+ case JpaCoreMappingsPackage.ISINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS :
+ return OrmPackage.XML_SINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS;
+ case JpaCoreMappingsPackage.ISINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS :
+ return OrmPackage.XML_SINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (fetch: ");
+ result.append(fetch);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public void initializeFromXmlSingleRelationshipMapping(XmlSingleRelationshipMapping oldMapping) {
+ super.initializeFromXmlSingleRelationshipMapping(oldMapping);
+ setFetch(oldMapping.getFetch());
+ }
+
+ public IJoinColumn createJoinColumn(int index) {
+ return OrmFactory.eINSTANCE.createXmlJoinColumn(new JoinColumnOwner(this));
+ }
+
+ public boolean containsSpecifiedJoinColumns() {
+ return !this.getSpecifiedJoinColumns().isEmpty();
+ }
+} // XmlSingleRelationshipMapping
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTable.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTable.java
new file mode 100644
index 0000000000..a3e41c8494
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTable.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.jpt.core.internal.platform.BaseJpaPlatform;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Table</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlTable()
+ * @model kind="class"
+ * @generated
+ */
+public class XmlTable extends AbstractXmlTable
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XmlTable() {
+ super();
+ }
+
+ protected XmlTable(Owner owner) {
+ super(owner);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_TABLE;
+ }
+
+ private XmlEntityInternal entity() {
+ return (XmlEntityInternal) eContainer();
+ }
+
+ @Override
+ protected void makeTableForXmlNonNull() {
+ entity().makeTableForXmlNonNull();
+ }
+
+ @Override
+ protected void makeTableForXmlNull() {
+ entity().makeTableForXmlNull();
+ }
+
+ @Override
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ super.refreshDefaults(defaultsContext);
+ setDefaultName((String) defaultsContext.getDefault(BaseJpaPlatform.DEFAULT_TABLE_NAME_KEY));
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTableGenerator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTableGenerator.java
new file mode 100644
index 0000000000..c6309dd6f3
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTableGenerator.java
@@ -0,0 +1,983 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jpt.core.internal.mappings.ITableGenerator;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.core.internal.platform.BaseJpaPlatform;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Table Generator</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlTableGenerator()
+ * @model kind="class"
+ * @generated
+ */
+public class XmlTableGenerator extends XmlGenerator implements ITableGenerator
+{
+ /**
+ * The default value of the '{@link #getTable() <em>Table</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTable()
+ * @generated
+ * @ordered
+ */
+ protected static final String TABLE_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getSpecifiedTable() <em>Specified Table</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedTable()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_TABLE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedTable() <em>Specified Table</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedTable()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedTable = SPECIFIED_TABLE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultTable() <em>Default Table</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultTable()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_TABLE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultTable() <em>Default Table</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultTable()
+ * @generated
+ * @ordered
+ */
+ protected String defaultTable = DEFAULT_TABLE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getCatalog() <em>Catalog</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCatalog()
+ * @generated
+ * @ordered
+ */
+ protected static final String CATALOG_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getSpecifiedCatalog() <em>Specified Catalog</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedCatalog()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_CATALOG_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedCatalog() <em>Specified Catalog</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedCatalog()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedCatalog = SPECIFIED_CATALOG_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultCatalog() <em>Default Catalog</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultCatalog()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_CATALOG_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultCatalog() <em>Default Catalog</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultCatalog()
+ * @generated
+ * @ordered
+ */
+ protected String defaultCatalog = DEFAULT_CATALOG_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getSchema() <em>Schema</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSchema()
+ * @generated
+ * @ordered
+ */
+ protected static final String SCHEMA_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getSpecifiedSchema() <em>Specified Schema</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedSchema()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_SCHEMA_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedSchema() <em>Specified Schema</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedSchema()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedSchema = SPECIFIED_SCHEMA_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultSchema() <em>Default Schema</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultSchema()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_SCHEMA_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultSchema() <em>Default Schema</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultSchema()
+ * @generated
+ * @ordered
+ */
+ protected String defaultSchema = DEFAULT_SCHEMA_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getPkColumnName() <em>Pk Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPkColumnName()
+ * @generated
+ * @ordered
+ */
+ protected static final String PK_COLUMN_NAME_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getSpecifiedPkColumnName() <em>Specified Pk Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedPkColumnName()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_PK_COLUMN_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedPkColumnName() <em>Specified Pk Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedPkColumnName()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedPkColumnName = SPECIFIED_PK_COLUMN_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultPkColumnName() <em>Default Pk Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultPkColumnName()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_PK_COLUMN_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultPkColumnName() <em>Default Pk Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultPkColumnName()
+ * @generated
+ * @ordered
+ */
+ protected String defaultPkColumnName = DEFAULT_PK_COLUMN_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getValueColumnName() <em>Value Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValueColumnName()
+ * @generated
+ * @ordered
+ */
+ protected static final String VALUE_COLUMN_NAME_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getSpecifiedValueColumnName() <em>Specified Value Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedValueColumnName()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_VALUE_COLUMN_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedValueColumnName() <em>Specified Value Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedValueColumnName()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedValueColumnName = SPECIFIED_VALUE_COLUMN_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultValueColumnName() <em>Default Value Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultValueColumnName()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_VALUE_COLUMN_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultValueColumnName() <em>Default Value Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultValueColumnName()
+ * @generated
+ * @ordered
+ */
+ protected String defaultValueColumnName = DEFAULT_VALUE_COLUMN_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getPkColumnValue() <em>Pk Column Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPkColumnValue()
+ * @generated
+ * @ordered
+ */
+ protected static final String PK_COLUMN_VALUE_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getSpecifiedPkColumnValue() <em>Specified Pk Column Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedPkColumnValue()
+ * @generated
+ * @ordered
+ */
+ protected static final String SPECIFIED_PK_COLUMN_VALUE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedPkColumnValue() <em>Specified Pk Column Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedPkColumnValue()
+ * @generated
+ * @ordered
+ */
+ protected String specifiedPkColumnValue = SPECIFIED_PK_COLUMN_VALUE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDefaultPkColumnValue() <em>Default Pk Column Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultPkColumnValue()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFAULT_PK_COLUMN_VALUE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefaultPkColumnValue() <em>Default Pk Column Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultPkColumnValue()
+ * @generated
+ * @ordered
+ */
+ protected String defaultPkColumnValue = DEFAULT_PK_COLUMN_VALUE_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XmlTableGenerator() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_TABLE_GENERATOR;
+ }
+
+ public String getTable() {
+ return (this.getSpecifiedTable() == null) ? getDefaultTable() : this.getSpecifiedTable();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Table</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Table</em>' attribute.
+ * @see #setSpecifiedTable(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getITableGenerator_SpecifiedTable()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedTable() {
+ return specifiedTable;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlTableGenerator#getSpecifiedTable <em>Specified Table</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Table</em>' attribute.
+ * @see #getSpecifiedTable()
+ * @generated
+ */
+ public void setSpecifiedTable(String newSpecifiedTable) {
+ String oldSpecifiedTable = specifiedTable;
+ specifiedTable = newSpecifiedTable;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_TABLE, oldSpecifiedTable, specifiedTable));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Table</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Table</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getITableGenerator_DefaultTable()
+ * @model changeable="false"
+ * @generated
+ */
+ public String getDefaultTable() {
+ return defaultTable;
+ }
+
+ public String getCatalog() {
+ return (this.getSpecifiedCatalog() == null) ? getDefaultCatalog() : this.getSpecifiedCatalog();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Catalog</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Catalog</em>' attribute.
+ * @see #setSpecifiedCatalog(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getITableGenerator_SpecifiedCatalog()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedCatalog() {
+ return specifiedCatalog;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlTableGenerator#getSpecifiedCatalog <em>Specified Catalog</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Catalog</em>' attribute.
+ * @see #getSpecifiedCatalog()
+ * @generated
+ */
+ public void setSpecifiedCatalog(String newSpecifiedCatalog) {
+ String oldSpecifiedCatalog = specifiedCatalog;
+ specifiedCatalog = newSpecifiedCatalog;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_CATALOG, oldSpecifiedCatalog, specifiedCatalog));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Catalog</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Catalog</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getITableGenerator_DefaultCatalog()
+ * @model changeable="false"
+ * @generated
+ */
+ public String getDefaultCatalog() {
+ return defaultCatalog;
+ }
+
+ public String getSchema() {
+ return (this.getSpecifiedSchema() == null) ? getDefaultSchema() : this.getSpecifiedSchema();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Schema</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Schema</em>' attribute.
+ * @see #setSpecifiedSchema(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getITableGenerator_SpecifiedSchema()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedSchema() {
+ return specifiedSchema;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlTableGenerator#getSpecifiedSchema <em>Specified Schema</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Schema</em>' attribute.
+ * @see #getSpecifiedSchema()
+ * @generated
+ */
+ public void setSpecifiedSchema(String newSpecifiedSchema) {
+ String oldSpecifiedSchema = specifiedSchema;
+ specifiedSchema = newSpecifiedSchema;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_SCHEMA, oldSpecifiedSchema, specifiedSchema));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Schema</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Schema</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getITableGenerator_DefaultSchema()
+ * @model changeable="false"
+ * @generated
+ */
+ public String getDefaultSchema() {
+ return defaultSchema;
+ }
+
+ protected void setDefaultSchema(String newDefaultSchema) {
+ String oldDefaultSchema = this.defaultSchema;
+ this.defaultSchema = newDefaultSchema;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_TABLE_GENERATOR__DEFAULT_SCHEMA, oldDefaultSchema, this.defaultSchema));
+ }
+
+ public String getPkColumnName() {
+ return (this.getSpecifiedPkColumnName() == null) ? getDefaultPkColumnName() : this.getSpecifiedPkColumnName();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Pk Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Pk Column Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Pk Column Name</em>' attribute.
+ * @see #setSpecifiedPkColumnName(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getITableGenerator_SpecifiedPkColumnName()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedPkColumnName() {
+ return specifiedPkColumnName;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlTableGenerator#getSpecifiedPkColumnName <em>Specified Pk Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Pk Column Name</em>' attribute.
+ * @see #getSpecifiedPkColumnName()
+ * @generated
+ */
+ public void setSpecifiedPkColumnName(String newSpecifiedPkColumnName) {
+ String oldSpecifiedPkColumnName = specifiedPkColumnName;
+ specifiedPkColumnName = newSpecifiedPkColumnName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_NAME, oldSpecifiedPkColumnName, specifiedPkColumnName));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Pk Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Pk Column Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Pk Column Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getITableGenerator_DefaultPkColumnName()
+ * @model changeable="false"
+ * @generated
+ */
+ public String getDefaultPkColumnName() {
+ return defaultPkColumnName;
+ }
+
+ public String getValueColumnName() {
+ return (this.getSpecifiedValueColumnName() == null) ? getDefaultValueColumnName() : this.getSpecifiedValueColumnName();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Value Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Value Column Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Value Column Name</em>' attribute.
+ * @see #setSpecifiedValueColumnName(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getITableGenerator_SpecifiedValueColumnName()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedValueColumnName() {
+ return specifiedValueColumnName;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlTableGenerator#getSpecifiedValueColumnName <em>Specified Value Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Value Column Name</em>' attribute.
+ * @see #getSpecifiedValueColumnName()
+ * @generated
+ */
+ public void setSpecifiedValueColumnName(String newSpecifiedValueColumnName) {
+ String oldSpecifiedValueColumnName = specifiedValueColumnName;
+ specifiedValueColumnName = newSpecifiedValueColumnName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_VALUE_COLUMN_NAME, oldSpecifiedValueColumnName, specifiedValueColumnName));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Value Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Value Column Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Value Column Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getITableGenerator_DefaultValueColumnName()
+ * @model changeable="false"
+ * @generated
+ */
+ public String getDefaultValueColumnName() {
+ return defaultValueColumnName;
+ }
+
+ public String getPkColumnValue() {
+ return (this.getSpecifiedPkColumnValue() == null) ? getDefaultPkColumnValue() : this.getSpecifiedPkColumnValue();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Pk Column Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Pk Column 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>Specified Pk Column Value</em>' attribute.
+ * @see #setSpecifiedPkColumnValue(String)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getITableGenerator_SpecifiedPkColumnValue()
+ * @model
+ * @generated
+ */
+ public String getSpecifiedPkColumnValue() {
+ return specifiedPkColumnValue;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlTableGenerator#getSpecifiedPkColumnValue <em>Specified Pk Column Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Pk Column Value</em>' attribute.
+ * @see #getSpecifiedPkColumnValue()
+ * @generated
+ */
+ public void setSpecifiedPkColumnValue(String newSpecifiedPkColumnValue) {
+ String oldSpecifiedPkColumnValue = specifiedPkColumnValue;
+ specifiedPkColumnValue = newSpecifiedPkColumnValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_VALUE, oldSpecifiedPkColumnValue, specifiedPkColumnValue));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Pk Column Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Pk Column 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>Default Pk Column Value</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getITableGenerator_DefaultPkColumnValue()
+ * @model changeable="false"
+ * @generated
+ */
+ public String getDefaultPkColumnValue() {
+ return defaultPkColumnValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case OrmPackage.XML_TABLE_GENERATOR__TABLE :
+ return getTable();
+ case OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_TABLE :
+ return getSpecifiedTable();
+ case OrmPackage.XML_TABLE_GENERATOR__DEFAULT_TABLE :
+ return getDefaultTable();
+ case OrmPackage.XML_TABLE_GENERATOR__CATALOG :
+ return getCatalog();
+ case OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_CATALOG :
+ return getSpecifiedCatalog();
+ case OrmPackage.XML_TABLE_GENERATOR__DEFAULT_CATALOG :
+ return getDefaultCatalog();
+ case OrmPackage.XML_TABLE_GENERATOR__SCHEMA :
+ return getSchema();
+ case OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_SCHEMA :
+ return getSpecifiedSchema();
+ case OrmPackage.XML_TABLE_GENERATOR__DEFAULT_SCHEMA :
+ return getDefaultSchema();
+ case OrmPackage.XML_TABLE_GENERATOR__PK_COLUMN_NAME :
+ return getPkColumnName();
+ case OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_NAME :
+ return getSpecifiedPkColumnName();
+ case OrmPackage.XML_TABLE_GENERATOR__DEFAULT_PK_COLUMN_NAME :
+ return getDefaultPkColumnName();
+ case OrmPackage.XML_TABLE_GENERATOR__VALUE_COLUMN_NAME :
+ return getValueColumnName();
+ case OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_VALUE_COLUMN_NAME :
+ return getSpecifiedValueColumnName();
+ case OrmPackage.XML_TABLE_GENERATOR__DEFAULT_VALUE_COLUMN_NAME :
+ return getDefaultValueColumnName();
+ case OrmPackage.XML_TABLE_GENERATOR__PK_COLUMN_VALUE :
+ return getPkColumnValue();
+ case OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_VALUE :
+ return getSpecifiedPkColumnValue();
+ case OrmPackage.XML_TABLE_GENERATOR__DEFAULT_PK_COLUMN_VALUE :
+ return getDefaultPkColumnValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_TABLE :
+ setSpecifiedTable((String) newValue);
+ return;
+ case OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_CATALOG :
+ setSpecifiedCatalog((String) newValue);
+ return;
+ case OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_SCHEMA :
+ setSpecifiedSchema((String) newValue);
+ return;
+ case OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_NAME :
+ setSpecifiedPkColumnName((String) newValue);
+ return;
+ case OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_VALUE_COLUMN_NAME :
+ setSpecifiedValueColumnName((String) newValue);
+ return;
+ case OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_VALUE :
+ setSpecifiedPkColumnValue((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_TABLE :
+ setSpecifiedTable(SPECIFIED_TABLE_EDEFAULT);
+ return;
+ case OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_CATALOG :
+ setSpecifiedCatalog(SPECIFIED_CATALOG_EDEFAULT);
+ return;
+ case OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_SCHEMA :
+ setSpecifiedSchema(SPECIFIED_SCHEMA_EDEFAULT);
+ return;
+ case OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_NAME :
+ setSpecifiedPkColumnName(SPECIFIED_PK_COLUMN_NAME_EDEFAULT);
+ return;
+ case OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_VALUE_COLUMN_NAME :
+ setSpecifiedValueColumnName(SPECIFIED_VALUE_COLUMN_NAME_EDEFAULT);
+ return;
+ case OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_VALUE :
+ setSpecifiedPkColumnValue(SPECIFIED_PK_COLUMN_VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_TABLE_GENERATOR__TABLE :
+ return TABLE_EDEFAULT == null ? getTable() != null : !TABLE_EDEFAULT.equals(getTable());
+ case OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_TABLE :
+ return SPECIFIED_TABLE_EDEFAULT == null ? specifiedTable != null : !SPECIFIED_TABLE_EDEFAULT.equals(specifiedTable);
+ case OrmPackage.XML_TABLE_GENERATOR__DEFAULT_TABLE :
+ return DEFAULT_TABLE_EDEFAULT == null ? defaultTable != null : !DEFAULT_TABLE_EDEFAULT.equals(defaultTable);
+ case OrmPackage.XML_TABLE_GENERATOR__CATALOG :
+ return CATALOG_EDEFAULT == null ? getCatalog() != null : !CATALOG_EDEFAULT.equals(getCatalog());
+ case OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_CATALOG :
+ return SPECIFIED_CATALOG_EDEFAULT == null ? specifiedCatalog != null : !SPECIFIED_CATALOG_EDEFAULT.equals(specifiedCatalog);
+ case OrmPackage.XML_TABLE_GENERATOR__DEFAULT_CATALOG :
+ return DEFAULT_CATALOG_EDEFAULT == null ? defaultCatalog != null : !DEFAULT_CATALOG_EDEFAULT.equals(defaultCatalog);
+ case OrmPackage.XML_TABLE_GENERATOR__SCHEMA :
+ return SCHEMA_EDEFAULT == null ? getSchema() != null : !SCHEMA_EDEFAULT.equals(getSchema());
+ case OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_SCHEMA :
+ return SPECIFIED_SCHEMA_EDEFAULT == null ? specifiedSchema != null : !SPECIFIED_SCHEMA_EDEFAULT.equals(specifiedSchema);
+ case OrmPackage.XML_TABLE_GENERATOR__DEFAULT_SCHEMA :
+ return DEFAULT_SCHEMA_EDEFAULT == null ? defaultSchema != null : !DEFAULT_SCHEMA_EDEFAULT.equals(defaultSchema);
+ case OrmPackage.XML_TABLE_GENERATOR__PK_COLUMN_NAME :
+ return PK_COLUMN_NAME_EDEFAULT == null ? getPkColumnName() != null : !PK_COLUMN_NAME_EDEFAULT.equals(getPkColumnName());
+ case OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_NAME :
+ return SPECIFIED_PK_COLUMN_NAME_EDEFAULT == null ? specifiedPkColumnName != null : !SPECIFIED_PK_COLUMN_NAME_EDEFAULT.equals(specifiedPkColumnName);
+ case OrmPackage.XML_TABLE_GENERATOR__DEFAULT_PK_COLUMN_NAME :
+ return DEFAULT_PK_COLUMN_NAME_EDEFAULT == null ? defaultPkColumnName != null : !DEFAULT_PK_COLUMN_NAME_EDEFAULT.equals(defaultPkColumnName);
+ case OrmPackage.XML_TABLE_GENERATOR__VALUE_COLUMN_NAME :
+ return VALUE_COLUMN_NAME_EDEFAULT == null ? getValueColumnName() != null : !VALUE_COLUMN_NAME_EDEFAULT.equals(getValueColumnName());
+ case OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_VALUE_COLUMN_NAME :
+ return SPECIFIED_VALUE_COLUMN_NAME_EDEFAULT == null ? specifiedValueColumnName != null : !SPECIFIED_VALUE_COLUMN_NAME_EDEFAULT.equals(specifiedValueColumnName);
+ case OrmPackage.XML_TABLE_GENERATOR__DEFAULT_VALUE_COLUMN_NAME :
+ return DEFAULT_VALUE_COLUMN_NAME_EDEFAULT == null ? defaultValueColumnName != null : !DEFAULT_VALUE_COLUMN_NAME_EDEFAULT.equals(defaultValueColumnName);
+ case OrmPackage.XML_TABLE_GENERATOR__PK_COLUMN_VALUE :
+ return PK_COLUMN_VALUE_EDEFAULT == null ? getPkColumnValue() != null : !PK_COLUMN_VALUE_EDEFAULT.equals(getPkColumnValue());
+ case OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_VALUE :
+ return SPECIFIED_PK_COLUMN_VALUE_EDEFAULT == null ? specifiedPkColumnValue != null : !SPECIFIED_PK_COLUMN_VALUE_EDEFAULT.equals(specifiedPkColumnValue);
+ case OrmPackage.XML_TABLE_GENERATOR__DEFAULT_PK_COLUMN_VALUE :
+ return DEFAULT_PK_COLUMN_VALUE_EDEFAULT == null ? defaultPkColumnValue != null : !DEFAULT_PK_COLUMN_VALUE_EDEFAULT.equals(defaultPkColumnValue);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == ITableGenerator.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_TABLE_GENERATOR__TABLE :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__TABLE;
+ case OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_TABLE :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__SPECIFIED_TABLE;
+ case OrmPackage.XML_TABLE_GENERATOR__DEFAULT_TABLE :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__DEFAULT_TABLE;
+ case OrmPackage.XML_TABLE_GENERATOR__CATALOG :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__CATALOG;
+ case OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_CATALOG :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__SPECIFIED_CATALOG;
+ case OrmPackage.XML_TABLE_GENERATOR__DEFAULT_CATALOG :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__DEFAULT_CATALOG;
+ case OrmPackage.XML_TABLE_GENERATOR__SCHEMA :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__SCHEMA;
+ case OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_SCHEMA :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__SPECIFIED_SCHEMA;
+ case OrmPackage.XML_TABLE_GENERATOR__DEFAULT_SCHEMA :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__DEFAULT_SCHEMA;
+ case OrmPackage.XML_TABLE_GENERATOR__PK_COLUMN_NAME :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__PK_COLUMN_NAME;
+ case OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_NAME :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__SPECIFIED_PK_COLUMN_NAME;
+ case OrmPackage.XML_TABLE_GENERATOR__DEFAULT_PK_COLUMN_NAME :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__DEFAULT_PK_COLUMN_NAME;
+ case OrmPackage.XML_TABLE_GENERATOR__VALUE_COLUMN_NAME :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__VALUE_COLUMN_NAME;
+ case OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_VALUE_COLUMN_NAME :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__SPECIFIED_VALUE_COLUMN_NAME;
+ case OrmPackage.XML_TABLE_GENERATOR__DEFAULT_VALUE_COLUMN_NAME :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__DEFAULT_VALUE_COLUMN_NAME;
+ case OrmPackage.XML_TABLE_GENERATOR__PK_COLUMN_VALUE :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__PK_COLUMN_VALUE;
+ case OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_VALUE :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__SPECIFIED_PK_COLUMN_VALUE;
+ case OrmPackage.XML_TABLE_GENERATOR__DEFAULT_PK_COLUMN_VALUE :
+ return JpaCoreMappingsPackage.ITABLE_GENERATOR__DEFAULT_PK_COLUMN_VALUE;
+ 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 == ITableGenerator.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__TABLE :
+ return OrmPackage.XML_TABLE_GENERATOR__TABLE;
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__SPECIFIED_TABLE :
+ return OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_TABLE;
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__DEFAULT_TABLE :
+ return OrmPackage.XML_TABLE_GENERATOR__DEFAULT_TABLE;
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__CATALOG :
+ return OrmPackage.XML_TABLE_GENERATOR__CATALOG;
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__SPECIFIED_CATALOG :
+ return OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_CATALOG;
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__DEFAULT_CATALOG :
+ return OrmPackage.XML_TABLE_GENERATOR__DEFAULT_CATALOG;
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__SCHEMA :
+ return OrmPackage.XML_TABLE_GENERATOR__SCHEMA;
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__SPECIFIED_SCHEMA :
+ return OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_SCHEMA;
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__DEFAULT_SCHEMA :
+ return OrmPackage.XML_TABLE_GENERATOR__DEFAULT_SCHEMA;
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__PK_COLUMN_NAME :
+ return OrmPackage.XML_TABLE_GENERATOR__PK_COLUMN_NAME;
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__SPECIFIED_PK_COLUMN_NAME :
+ return OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_NAME;
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__DEFAULT_PK_COLUMN_NAME :
+ return OrmPackage.XML_TABLE_GENERATOR__DEFAULT_PK_COLUMN_NAME;
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__VALUE_COLUMN_NAME :
+ return OrmPackage.XML_TABLE_GENERATOR__VALUE_COLUMN_NAME;
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__SPECIFIED_VALUE_COLUMN_NAME :
+ return OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_VALUE_COLUMN_NAME;
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__DEFAULT_VALUE_COLUMN_NAME :
+ return OrmPackage.XML_TABLE_GENERATOR__DEFAULT_VALUE_COLUMN_NAME;
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__PK_COLUMN_VALUE :
+ return OrmPackage.XML_TABLE_GENERATOR__PK_COLUMN_VALUE;
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__SPECIFIED_PK_COLUMN_VALUE :
+ return OrmPackage.XML_TABLE_GENERATOR__SPECIFIED_PK_COLUMN_VALUE;
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR__DEFAULT_PK_COLUMN_VALUE :
+ return OrmPackage.XML_TABLE_GENERATOR__DEFAULT_PK_COLUMN_VALUE;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (specifiedTable: ");
+ result.append(specifiedTable);
+ result.append(", defaultTable: ");
+ result.append(defaultTable);
+ result.append(", specifiedCatalog: ");
+ result.append(specifiedCatalog);
+ result.append(", defaultCatalog: ");
+ result.append(defaultCatalog);
+ result.append(", specifiedSchema: ");
+ result.append(specifiedSchema);
+ result.append(", defaultSchema: ");
+ result.append(defaultSchema);
+ result.append(", specifiedPkColumnName: ");
+ result.append(specifiedPkColumnName);
+ result.append(", defaultPkColumnName: ");
+ result.append(defaultPkColumnName);
+ result.append(", specifiedValueColumnName: ");
+ result.append(specifiedValueColumnName);
+ result.append(", defaultValueColumnName: ");
+ result.append(defaultValueColumnName);
+ result.append(", specifiedPkColumnValue: ");
+ result.append(specifiedPkColumnValue);
+ result.append(", defaultPkColumnValue: ");
+ result.append(defaultPkColumnValue);
+ result.append(')');
+ return result.toString();
+ }
+
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ setDefaultSchema((String) defaultsContext.getDefault(BaseJpaPlatform.DEFAULT_TABLE_GENERATOR_SCHEMA_KEY));
+ }
+} // XmlTableGenerator
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTransient.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTransient.java
new file mode 100644
index 0000000000..f6666d4f2a
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTransient.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.mappings.ITransient;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Transient</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlTransient()
+ * @model kind="class"
+ * @generated
+ */
+public class XmlTransient extends XmlAttributeMapping implements ITransient
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XmlTransient() {
+ super();
+ }
+
+ @Override
+ protected void initializeOn(XmlAttributeMapping newMapping) {
+ newMapping.initializeFromXmlTransientMapping(this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_TRANSIENT;
+ }
+
+ @Override
+ public int xmlSequence() {
+ return 8;
+ }
+
+ public String getKey() {
+ return IMappingKeys.TRANSIENT_ATTRIBUTE_MAPPING_KEY;
+ }
+} // XmlTransient
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTransientProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTransientProvider.java
new file mode 100644
index 0000000000..39bb80daee
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTransientProvider.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.jpt.core.internal.IMappingKeys;
+
+public class XmlTransientProvider implements IXmlAttributeMappingProvider
+{
+ // singleton
+ private static final XmlTransientProvider INSTANCE = new XmlTransientProvider();
+
+ /**
+ * Return the singleton.
+ */
+ public static IXmlAttributeMappingProvider instance() {
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private XmlTransientProvider() {
+ super();
+ }
+
+ public XmlAttributeMapping buildAttributeMapping() {
+ return OrmFactory.eINSTANCE.createXmlTransient();
+ }
+
+ public String key() {
+ return IMappingKeys.TRANSIENT_ATTRIBUTE_MAPPING_KEY;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTypeMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTypeMapping.java
new file mode 100644
index 0000000000..acdad3c7fd
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlTypeMapping.java
@@ -0,0 +1,653 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+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.jpt.core.internal.AccessType;
+import org.eclipse.jpt.core.internal.IJpaContentNode;
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.JpaCorePackage;
+import org.eclipse.jpt.core.internal.XmlEObject;
+import org.eclipse.jpt.core.internal.content.orm.resource.OrmXmlMapper;
+import org.eclipse.jpt.core.internal.emfutility.DOMUtilities;
+import org.eclipse.jpt.core.internal.jdtutility.Type;
+import org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+import org.eclipse.jpt.db.internal.Table;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Xml Persistent Type Mapping</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping#getDefaultAccess <em>Default Access</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping#getSpecifiedAccess <em>Specified Access</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping#getAccess <em>Access</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping#getMetadataComplete <em>Metadata Complete</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping#getPersistentType <em>Persistent Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlTypeMapping()
+ * @model kind="class" abstract="true"
+ * @generated
+ */
+public abstract class XmlTypeMapping extends XmlEObject implements ITypeMapping
+{
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getTableName() <em>Table Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTableName()
+ * @generated
+ * @ordered
+ */
+ protected static final String TABLE_NAME_EDEFAULT = null;
+
+ /**
+ * The default value of the '{@link #getDefaultAccess() <em>Default Access</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultAccess()
+ * @generated
+ * @ordered
+ */
+ protected static final AccessType DEFAULT_ACCESS_EDEFAULT = AccessType.DEFAULT;
+
+ /**
+ * The cached value of the '{@link #getDefaultAccess() <em>Default Access</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefaultAccess()
+ * @generated
+ * @ordered
+ */
+ protected AccessType defaultAccess = DEFAULT_ACCESS_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getSpecifiedAccess() <em>Specified Access</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedAccess()
+ * @generated
+ * @ordered
+ */
+ protected static final AccessType SPECIFIED_ACCESS_EDEFAULT = AccessType.DEFAULT;
+
+ /**
+ * The cached value of the '{@link #getSpecifiedAccess() <em>Specified Access</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSpecifiedAccess()
+ * @generated
+ * @ordered
+ */
+ protected AccessType specifiedAccess = SPECIFIED_ACCESS_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getAccess() <em>Access</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAccess()
+ * @generated
+ * @ordered
+ */
+ protected static final AccessType ACCESS_EDEFAULT = AccessType.DEFAULT;
+
+ /**
+ * The default value of the '{@link #getMetadataComplete() <em>Metadata Complete</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMetadataComplete()
+ * @generated
+ * @ordered
+ */
+ protected static final DefaultFalseBoolean METADATA_COMPLETE_EDEFAULT = DefaultFalseBoolean.DEFAULT;
+
+ /**
+ * The cached value of the '{@link #getMetadataComplete() <em>Metadata Complete</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMetadataComplete()
+ * @generated
+ * @ordered
+ */
+ protected DefaultFalseBoolean metadataComplete = METADATA_COMPLETE_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getPersistentType() <em>Persistent Type</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPersistentType()
+ * @generated
+ * @ordered
+ */
+ protected XmlPersistentType persistentType;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ protected XmlTypeMapping() {
+ super();
+ XmlPersistentType persistentType = createXmlPersistentType();
+ setPersistentType(persistentType);
+ }
+
+ protected XmlPersistentType createXmlPersistentType() {
+ return OrmFactory.eINSTANCE.createXmlPersistentType(getKey());
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_TYPE_MAPPING;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getITypeMapping_Name()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated NOT
+ */
+ public String getName() {
+ Type type = getPersistentType().findType();
+ return (type == null) ? "" : type.getName();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Table Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Table Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Table Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getITypeMapping_TableName()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated NOT
+ */
+ public String getTableName() {
+ return "";
+ }
+
+ /**
+ * Returns the value of the '<em><b>Default Access</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.AccessType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Access</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Access</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.AccessType
+ * @see #setDefaultAccess(AccessType)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlTypeMapping_DefaultAccess()
+ * @model
+ * @generated
+ */
+ public AccessType getDefaultAccess() {
+ return defaultAccess;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping#getDefaultAccess <em>Default Access</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Default Access</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.AccessType
+ * @see #getDefaultAccess()
+ * @generated
+ */
+ public void setDefaultAccess(AccessType newDefaultAccess) {
+ AccessType oldDefaultAccess = defaultAccess;
+ defaultAccess = newDefaultAccess == null ? DEFAULT_ACCESS_EDEFAULT : newDefaultAccess;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_TYPE_MAPPING__DEFAULT_ACCESS, oldDefaultAccess, defaultAccess));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Specified Access</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.AccessType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Access</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Access</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.AccessType
+ * @see #setSpecifiedAccess(AccessType)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlTypeMapping_SpecifiedAccess()
+ * @model
+ * @generated
+ */
+ public AccessType getSpecifiedAccess() {
+ return specifiedAccess;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping#getSpecifiedAccess <em>Specified Access</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Access</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.AccessType
+ * @see #getSpecifiedAccess()
+ * @generated
+ */
+ public void setSpecifiedAccess(AccessType newSpecifiedAccess) {
+ AccessType oldSpecifiedAccess = specifiedAccess;
+ specifiedAccess = newSpecifiedAccess == null ? SPECIFIED_ACCESS_EDEFAULT : newSpecifiedAccess;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_TYPE_MAPPING__SPECIFIED_ACCESS, oldSpecifiedAccess, specifiedAccess));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Access</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.content.orm.AccessType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Access</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Access</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.orm.AccessType
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlTypeMapping_Access()
+ * @model transient="true" changeable="false" volatile="true"
+ * @generated NOT
+ */
+ public AccessType getAccess() {
+ return (this.getSpecifiedAccess() == null) ? this.getDefaultAccess() : this.getSpecifiedAccess();
+ }
+
+ public EntityMappings getEntityMappings() {
+ return (EntityMappings) eContainer();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Metadata Complete</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Metadata Complete</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean
+ * @see #setMetadataComplete(DefaultFalseBoolean)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlTypeMapping_MetadataComplete()
+ * @model
+ * @generated
+ */
+ public DefaultFalseBoolean getMetadataComplete() {
+ return metadataComplete;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping#getMetadataComplete <em>Metadata Complete</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Metadata Complete</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean
+ * @see #getMetadataComplete()
+ * @generated
+ */
+ public void setMetadataComplete(DefaultFalseBoolean newMetadataComplete) {
+ DefaultFalseBoolean oldMetadataComplete = metadataComplete;
+ metadataComplete = newMetadataComplete == null ? METADATA_COMPLETE_EDEFAULT : newMetadataComplete;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_TYPE_MAPPING__METADATA_COMPLETE, oldMetadataComplete, metadataComplete));
+ }
+
+ public boolean isXmlMetadataComplete() {
+ return isPersistenceUnitXmlMetadataComplete() || (getMetadataComplete() == DefaultFalseBoolean.TRUE);
+ }
+
+ protected boolean isPersistenceUnitXmlMetadataComplete() {
+ return ((XmlRootContentNode) getRoot()).entityMappings.getPersistenceUnitMetadata().isXmlMappingMetadataComplete();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Persistent Type</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Persistent Type</em>' containment reference.
+ * @see #setPersistentType(XmlPersistentType)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlTypeMapping_PersistentType()
+ * @model containment="true" required="true"
+ * @generated
+ */
+ public XmlPersistentType getPersistentType() {
+ return persistentType;
+ }
+
+ public IPersistentType javaPersistentType() {
+ return getPersistentType().findJavaPersistentType();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetPersistentType(XmlPersistentType newPersistentType, NotificationChain msgs) {
+ XmlPersistentType oldPersistentType = persistentType;
+ persistentType = newPersistentType;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OrmPackage.XML_TYPE_MAPPING__PERSISTENT_TYPE, oldPersistentType, newPersistentType);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping#getPersistentType <em>Persistent Type</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Persistent Type</em>' containment reference.
+ * @see #getPersistentType()
+ * @generated
+ */
+ public void setPersistentType(XmlPersistentType newPersistentType) {
+ if (newPersistentType != persistentType) {
+ NotificationChain msgs = null;
+ if (persistentType != null)
+ msgs = ((InternalEObject) persistentType).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OrmPackage.XML_TYPE_MAPPING__PERSISTENT_TYPE, null, msgs);
+ if (newPersistentType != null)
+ msgs = ((InternalEObject) newPersistentType).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OrmPackage.XML_TYPE_MAPPING__PERSISTENT_TYPE, null, msgs);
+ msgs = basicSetPersistentType(newPersistentType, msgs);
+ if (msgs != null)
+ msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_TYPE_MAPPING__PERSISTENT_TYPE, newPersistentType, newPersistentType));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Attribute Mappings</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case OrmPackage.XML_TYPE_MAPPING__PERSISTENT_TYPE :
+ return basicSetPersistentType(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 OrmPackage.XML_TYPE_MAPPING__NAME :
+ return getName();
+ case OrmPackage.XML_TYPE_MAPPING__TABLE_NAME :
+ return getTableName();
+ case OrmPackage.XML_TYPE_MAPPING__DEFAULT_ACCESS :
+ return getDefaultAccess();
+ case OrmPackage.XML_TYPE_MAPPING__SPECIFIED_ACCESS :
+ return getSpecifiedAccess();
+ case OrmPackage.XML_TYPE_MAPPING__ACCESS :
+ return getAccess();
+ case OrmPackage.XML_TYPE_MAPPING__METADATA_COMPLETE :
+ return getMetadataComplete();
+ case OrmPackage.XML_TYPE_MAPPING__PERSISTENT_TYPE :
+ return getPersistentType();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case OrmPackage.XML_TYPE_MAPPING__DEFAULT_ACCESS :
+ setDefaultAccess((AccessType) newValue);
+ return;
+ case OrmPackage.XML_TYPE_MAPPING__SPECIFIED_ACCESS :
+ setSpecifiedAccess((AccessType) newValue);
+ return;
+ case OrmPackage.XML_TYPE_MAPPING__METADATA_COMPLETE :
+ setMetadataComplete((DefaultFalseBoolean) newValue);
+ return;
+ case OrmPackage.XML_TYPE_MAPPING__PERSISTENT_TYPE :
+ setPersistentType((XmlPersistentType) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_TYPE_MAPPING__DEFAULT_ACCESS :
+ setDefaultAccess(DEFAULT_ACCESS_EDEFAULT);
+ return;
+ case OrmPackage.XML_TYPE_MAPPING__SPECIFIED_ACCESS :
+ setSpecifiedAccess(SPECIFIED_ACCESS_EDEFAULT);
+ return;
+ case OrmPackage.XML_TYPE_MAPPING__METADATA_COMPLETE :
+ setMetadataComplete(METADATA_COMPLETE_EDEFAULT);
+ return;
+ case OrmPackage.XML_TYPE_MAPPING__PERSISTENT_TYPE :
+ setPersistentType((XmlPersistentType) null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_TYPE_MAPPING__NAME :
+ return NAME_EDEFAULT == null ? getName() != null : !NAME_EDEFAULT.equals(getName());
+ case OrmPackage.XML_TYPE_MAPPING__TABLE_NAME :
+ return TABLE_NAME_EDEFAULT == null ? getTableName() != null : !TABLE_NAME_EDEFAULT.equals(getTableName());
+ case OrmPackage.XML_TYPE_MAPPING__DEFAULT_ACCESS :
+ return defaultAccess != DEFAULT_ACCESS_EDEFAULT;
+ case OrmPackage.XML_TYPE_MAPPING__SPECIFIED_ACCESS :
+ return specifiedAccess != SPECIFIED_ACCESS_EDEFAULT;
+ case OrmPackage.XML_TYPE_MAPPING__ACCESS :
+ return getAccess() != ACCESS_EDEFAULT;
+ case OrmPackage.XML_TYPE_MAPPING__METADATA_COMPLETE :
+ return metadataComplete != METADATA_COMPLETE_EDEFAULT;
+ case OrmPackage.XML_TYPE_MAPPING__PERSISTENT_TYPE :
+ return persistentType != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == ITypeMapping.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_TYPE_MAPPING__NAME :
+ return JpaCorePackage.ITYPE_MAPPING__NAME;
+ case OrmPackage.XML_TYPE_MAPPING__TABLE_NAME :
+ return JpaCorePackage.ITYPE_MAPPING__TABLE_NAME;
+ 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 == ITypeMapping.class) {
+ switch (baseFeatureID) {
+ case JpaCorePackage.ITYPE_MAPPING__NAME :
+ return OrmPackage.XML_TYPE_MAPPING__NAME;
+ case JpaCorePackage.ITYPE_MAPPING__TABLE_NAME :
+ return OrmPackage.XML_TYPE_MAPPING__TABLE_NAME;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (defaultAccess: ");
+ result.append(defaultAccess);
+ result.append(", specifiedAccess: ");
+ result.append(specifiedAccess);
+ result.append(", metadataComplete: ");
+ result.append(metadataComplete);
+ result.append(')');
+ return result.toString();
+ }
+
+ public void initialize() {
+ //do nothing as this will be handle by the Xml Translators
+ }
+
+ /**
+ * ITypeMapping is changed and various ITypeMappings may have
+ * common settings. In this method initialize the new ITypeMapping (this)
+ * fromthe old ITypeMapping (oldMapping)
+ * @param oldMapping
+ */
+ public void initializeFrom(XmlTypeMapping oldMapping) {
+ setPersistentType(oldMapping.getPersistentType());
+ }
+
+ public IJpaContentNode getContentNode(int offset) {
+ return getPersistentType().getContentNode(offset);
+ }
+
+ public Table primaryDbTable() {
+ return null;
+ }
+
+ public Table dbTable(String tableName) {
+ return null;
+ }
+
+ public void refreshDefaults(DefaultsContext defaultsContext) {}
+
+ public ITextRange getClassTextRange() {
+ IDOMNode classNode = (IDOMNode) DOMUtilities.getChildAttributeNode(node, OrmXmlMapper.CLASS);
+ if (classNode != null) {
+ return getTextRange(classNode);
+ }
+ else {
+ return getTextRange();
+ }
+ }
+
+ public ITextRange getAttributesTextRange() {
+ IDOMNode attributesNode = (IDOMNode) DOMUtilities.getNodeChild(node, OrmXmlMapper.ATTRIBUTES);
+ if (attributesNode != null) {
+ return getTextRange(attributesNode);
+ }
+ else {
+ return getTextRange();
+ }
+ }
+
+ /**
+ * type mappings are a sequence in the orm schema. We must keep
+ * the list of type mappings in the appropriate order so the wtp xml
+ * translators will write them to the xml in that order and they
+ * will adhere to the schema.
+ *
+ * Each concrete subclass of XmlTypeMapping must implement this
+ * method and return an int that matches it's order in the schema
+ * @return
+ */
+ public abstract int xmlSequence();
+
+ /**
+ * @see ITypeMapping#attributeMappingKeyAllowed(String)
+ *
+ * Default implementation: override where needed
+ */
+ public boolean attributeMappingKeyAllowed(String attributeMappingKey) {
+ return true;
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlVersion.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlVersion.java
new file mode 100644
index 0000000000..b1613b0de2
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlVersion.java
@@ -0,0 +1,387 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+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.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.mappings.IColumn;
+import org.eclipse.jpt.core.internal.mappings.IColumnMapping;
+import org.eclipse.jpt.core.internal.mappings.IVersion;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.core.internal.mappings.TemporalType;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Xml Version</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getXmlVersion()
+ * @model kind="class"
+ * @generated
+ */
+public class XmlVersion extends XmlAttributeMapping
+ implements IVersion, IXmlColumnMapping
+{
+ /**
+ * The cached value of the '{@link #getColumn() <em>Column</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getColumn()
+ * @generated
+ * @ordered
+ */
+ protected IColumn column;
+
+ /**
+ * The default value of the '{@link #getTemporal() <em>Temporal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTemporal()
+ * @generated
+ * @ordered
+ */
+ protected static final TemporalType TEMPORAL_EDEFAULT = TemporalType.NULL;
+
+ /**
+ * The cached value of the '{@link #getTemporal() <em>Temporal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTemporal()
+ * @generated
+ * @ordered
+ */
+ protected TemporalType temporal = TEMPORAL_EDEFAULT;
+
+ protected XmlVersion() {
+ super();
+ this.column = OrmFactory.eINSTANCE.createXmlColumn(buildOwner());
+ ((InternalEObject) this.column).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OrmPackage.XML_ID__COLUMN, null, null);
+ }
+
+ @Override
+ protected void initializeOn(XmlAttributeMapping newMapping) {
+ newMapping.initializeFromXmlVersionMapping(this);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return OrmPackage.Literals.XML_VERSION;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Column</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Column</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Column</em>' containment reference.
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIVersion_Column()
+ * @model containment="true" required="true" changeable="false"
+ * @generated
+ */
+ public IColumn getColumn() {
+ return column;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetColumn(IColumn newColumn, NotificationChain msgs) {
+ IColumn oldColumn = column;
+ column = newColumn;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OrmPackage.XML_VERSION__COLUMN, oldColumn, newColumn);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Temporal</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.TemporalType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Temporal</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Temporal</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.TemporalType
+ * @see #setTemporal(TemporalType)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIVersion_Temporal()
+ * @model
+ * @generated
+ */
+ public TemporalType getTemporal() {
+ return temporal;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlVersion#getTemporal <em>Temporal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Temporal</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.TemporalType
+ * @see #getTemporal()
+ * @generated
+ */
+ public void setTemporal(TemporalType newTemporal) {
+ TemporalType oldTemporal = temporal;
+ temporal = newTemporal == null ? TEMPORAL_EDEFAULT : newTemporal;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_VERSION__TEMPORAL, oldTemporal, temporal));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Column For Xml</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Column For Xml</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Column For Xml</em>' reference.
+ * @see #setColumnForXml(XmlColumn)
+ * @see org.eclipse.jpt.core.internal.content.orm.OrmPackage#getIXmlColumnMapping_ColumnForXml()
+ * @model resolveProxies="false" volatile="true"
+ * @generated NOT
+ */
+ public XmlColumn getColumnForXml() {
+ if (((XmlColumn) getColumn()).isAllFeaturesUnset()) {
+ return null;
+ }
+ return (XmlColumn) getColumn();
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.orm.XmlVersion#getColumnForXml <em>Column For Xml</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Column For Xml</em>' reference.
+ * @see #getColumnForXml()
+ * @generated NOT
+ */
+ public void setColumnForXmlGen(XmlColumn newColumnForXml) {
+ XmlColumn oldValue = newColumnForXml == null ? (XmlColumn) getColumn() : null;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, OrmPackage.XML_VERSION__COLUMN_FOR_XML, oldValue, newColumnForXml));
+ }
+
+ public void setColumnForXml(XmlColumn newColumnForXml) {
+ setColumnForXmlGen(newColumnForXml);
+ if (newColumnForXml == null) {
+ ((XmlColumn) getColumn()).unsetAllAttributes();
+ }
+ }
+
+ public void makeColumnForXmlNonNull() {
+ setColumnForXmlGen(getColumnForXml());
+ }
+
+ public void makeColumnForXmlNull() {
+ setColumnForXmlGen(null);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case OrmPackage.XML_VERSION__COLUMN :
+ return basicSetColumn(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 OrmPackage.XML_VERSION__COLUMN :
+ return getColumn();
+ case OrmPackage.XML_VERSION__TEMPORAL :
+ return getTemporal();
+ case OrmPackage.XML_VERSION__COLUMN_FOR_XML :
+ return getColumnForXml();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case OrmPackage.XML_VERSION__TEMPORAL :
+ setTemporal((TemporalType) newValue);
+ return;
+ case OrmPackage.XML_VERSION__COLUMN_FOR_XML :
+ setColumnForXml((XmlColumn) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_VERSION__TEMPORAL :
+ setTemporal(TEMPORAL_EDEFAULT);
+ return;
+ case OrmPackage.XML_VERSION__COLUMN_FOR_XML :
+ setColumnForXml((XmlColumn) null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case OrmPackage.XML_VERSION__COLUMN :
+ return column != null;
+ case OrmPackage.XML_VERSION__TEMPORAL :
+ return temporal != TEMPORAL_EDEFAULT;
+ case OrmPackage.XML_VERSION__COLUMN_FOR_XML :
+ return getColumnForXml() != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IColumnMapping.class) {
+ switch (derivedFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IVersion.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_VERSION__COLUMN :
+ return JpaCoreMappingsPackage.IVERSION__COLUMN;
+ case OrmPackage.XML_VERSION__TEMPORAL :
+ return JpaCoreMappingsPackage.IVERSION__TEMPORAL;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IXmlColumnMapping.class) {
+ switch (derivedFeatureID) {
+ case OrmPackage.XML_VERSION__COLUMN_FOR_XML :
+ return OrmPackage.IXML_COLUMN_MAPPING__COLUMN_FOR_XML;
+ 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 == IColumnMapping.class) {
+ switch (baseFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IVersion.class) {
+ switch (baseFeatureID) {
+ case JpaCoreMappingsPackage.IVERSION__COLUMN :
+ return OrmPackage.XML_VERSION__COLUMN;
+ case JpaCoreMappingsPackage.IVERSION__TEMPORAL :
+ return OrmPackage.XML_VERSION__TEMPORAL;
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IXmlColumnMapping.class) {
+ switch (baseFeatureID) {
+ case OrmPackage.IXML_COLUMN_MAPPING__COLUMN_FOR_XML :
+ return OrmPackage.XML_VERSION__COLUMN_FOR_XML;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (temporal: ");
+ result.append(temporal);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public int xmlSequence() {
+ return 2;
+ }
+
+ public String getKey() {
+ return IMappingKeys.VERSION_ATTRIBUTE_MAPPING_KEY;
+ }
+} // XmlVersion
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlVersionProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlVersionProvider.java
new file mode 100644
index 0000000000..60f8d25a45
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/XmlVersionProvider.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm;
+
+import org.eclipse.jpt.core.internal.IMappingKeys;
+
+public class XmlVersionProvider implements IXmlAttributeMappingProvider
+{
+ // singleton
+ private static final XmlVersionProvider INSTANCE = new XmlVersionProvider();
+
+ /**
+ * Return the singleton.
+ */
+ public static IXmlAttributeMappingProvider instance() {
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private XmlVersionProvider() {
+ super();
+ }
+
+ public XmlAttributeMapping buildAttributeMapping() {
+ return OrmFactory.eINSTANCE.createXmlVersion();
+ }
+
+ public String key() {
+ return IMappingKeys.VERSION_ATTRIBUTE_MAPPING_KEY;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AbstractColumnTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AbstractColumnTranslator.java
new file mode 100644
index 0000000000..41596b036b
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AbstractColumnTranslator.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.content.orm.OrmFactory;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public abstract class AbstractColumnTranslator extends Translator
+ implements OrmXmlMapper
+{
+ private Translator[] children;
+
+ protected static final OrmPackage JPA_CORE_XML_PKG =
+ OrmPackage.eINSTANCE;
+ protected static final OrmFactory JPA_CORE_XML_FACTORY =
+ OrmFactory.eINSTANCE;
+ protected static final JpaCoreMappingsPackage MAPPINGS_PKG =
+ JpaCoreMappingsPackage.eINSTANCE;
+
+ public AbstractColumnTranslator(String domNameAndPath, EStructuralFeature aFeature) {
+ super(domNameAndPath, aFeature, END_TAG_NO_INDENT);
+ }
+
+ public Translator[] getChildren(Object target, int versionID) {
+ if (children == null) {
+ children = createChildren();
+ }
+ return children;
+ }
+
+
+ protected abstract Translator[] createChildren();
+
+ protected Translator createNameTranslator() {
+ return new Translator(COLUMN__NAME, JPA_CORE_XML_PKG.getAbstractXmlNamedColumn_SpecifiedNameForXml(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createTableTranslator() {
+ return new Translator(COLUMN__TABLE, JPA_CORE_XML_PKG.getAbstractXmlColumn_SpecifiedTableForXml(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createUniqueTranslator() {
+ return new Translator(COLUMN__UNIQUE, JPA_CORE_XML_PKG.getAbstractXmlColumn_UniqueForXml(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createNullableTranslator() {
+ return new Translator(COLUMN__NULLABLE, JPA_CORE_XML_PKG.getAbstractXmlColumn_NullableForXml(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createInsertableTranslator() {
+ return new Translator(COLUMN__INSERTABLE, JPA_CORE_XML_PKG.getAbstractXmlColumn_InsertableForXml(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createUpdatableTranslator() {
+ return new Translator(COLUMN__UPDATABLE, JPA_CORE_XML_PKG.getAbstractXmlColumn_UpdatableForXml(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createColumnDefinitionTranslator() {
+ return new Translator(COLUMN__COLUMN_DEFINITION, JPA_CORE_XML_PKG.getAbstractXmlNamedColumn_ColumnDefinitionForXml(), DOM_ATTRIBUTE);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AbstractTableTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AbstractTableTranslator.java
new file mode 100644
index 0000000000..4a21640d86
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AbstractTableTranslator.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.content.orm.OrmFactory;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public abstract class AbstractTableTranslator extends Translator
+ implements OrmXmlMapper
+{
+ private Translator[] children;
+
+ protected static final OrmPackage JPA_CORE_XML_PKG =
+ OrmPackage.eINSTANCE;
+ protected static final OrmFactory JPA_CORE_XML_FACTORY =
+ OrmFactory.eINSTANCE;
+ protected static final JpaCoreMappingsPackage MAPPINGS_PKG =
+ JpaCoreMappingsPackage.eINSTANCE;
+
+ public AbstractTableTranslator(String domNameAndPath, EStructuralFeature aFeature) {
+ super(domNameAndPath,aFeature);
+ }
+
+ public Translator[] getChildren(Object target, int versionID) {
+ if (children == null) {
+ children = createChildren();
+ }
+ return children;
+ }
+
+
+ protected abstract Translator[] createChildren();
+
+ protected Translator createNameTranslator() {
+ return new Translator(NAME, JPA_CORE_XML_PKG.getAbstractXmlTable_SpecifiedNameForXml(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createCatalogTranslator() {
+ return new Translator(CATALOG, JPA_CORE_XML_PKG.getAbstractXmlTable_SpecifiedCatalogForXml(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createSchemaTranslator() {
+ return new Translator(SCHEMA, JPA_CORE_XML_PKG.getAbstractXmlTable_SpecifiedSchemaForXml(), DOM_ATTRIBUTE);
+ }
+
+ //placeholder until we support unique-constraint
+ protected Translator createUniqueConstraintTranslator() {
+ return new Translator(UNIQUE_CONSTRAINT, (EStructuralFeature) null);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AccessTypeElementTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AccessTypeElementTranslator.java
new file mode 100644
index 0000000000..d1f57c7dd1
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AccessTypeElementTranslator.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import java.util.Collections;
+import java.util.List;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.AccessType;
+
+/**
+ * There is a bug in the translator framework that causes
+ * enumerators in xml elements and enumerators in xml attributes
+ * to be treated differently. When the enumerator is an attribute
+ * setting the model to the default causes the attribute to be removed.
+ * With an element is causes the default literal to be placed in
+ * the tag.
+ *
+ * The problem is wrapped up in the emf unsettable attribute as well.
+ * For attributes the eIsSet method returns false for the default value
+ * For elements the eIsSet method returns true for the default value.
+ * I don't want to have to use the unsettable option in emf since that would
+ * require that I call different api. I am not sure yet what the bug is in
+ * the translator, so I have entered one ~KFM
+ */
+public class AccessTypeElementTranslator extends EnumeratorTranslator
+{
+
+ public AccessTypeElementTranslator(String domNameAndPath, EStructuralFeature aFeature, int style) {
+ super(domNameAndPath, aFeature, style);
+ }
+
+ @Override
+ public Object getMOFValue(EObject mofObject) {
+ AccessType access = (AccessType) super.getMOFValue(mofObject);
+ if (access == AccessType.DEFAULT) {
+ return null;
+ }
+ return access;
+ }
+
+ @Override
+ public List getMOFChildren(EObject mofObject) {
+ List result = super.getMOFChildren(mofObject);
+ if(result != null && result.size() > 0) {
+ AccessType accessType = (AccessType) result.get(0);
+ if(accessType.getValue() == AccessType.DEFAULT_VALUE)
+ result = Collections.EMPTY_LIST;
+ }
+ return result;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AssociationOverrideTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AssociationOverrideTranslator.java
new file mode 100644
index 0000000000..faba3fa29e
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AssociationOverrideTranslator.java
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.content.orm.OrmFactory;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.content.orm.resource.JoinColumnTranslator.JoinColumnBuilder;
+import org.eclipse.jpt.core.internal.mappings.IAssociationOverride;
+import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.core.internal.mappings.IAssociationOverride.JoinColumnOwner;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class AssociationOverrideTranslator extends Translator implements OrmXmlMapper
+{
+ private AssociationOverrideBuilder associationOverrideBuilder;
+
+ private IAssociationOverride associationOverride;
+
+ protected static final JpaCoreMappingsPackage MAPPINGS_PKG =
+ JpaCoreMappingsPackage.eINSTANCE;
+ protected static final OrmPackage JPA_CORE_XML_PKG =
+ OrmPackage.eINSTANCE;
+
+
+ private Translator[] children;
+ private JoinColumnTranslator joinColumnsTranslator;
+
+ public AssociationOverrideTranslator(String domNameAndPath, EStructuralFeature aFeature, AssociationOverrideBuilder associationOverrideBuilder) {
+ super(domNameAndPath, aFeature);
+ this.associationOverrideBuilder = associationOverrideBuilder;
+ this.joinColumnsTranslator = createJoinColumnsTranslator();
+ }
+
+ protected JoinColumnTranslator createJoinColumnsTranslator() {
+ return new JoinColumnTranslator(
+ JOIN_COLUMN,
+ JpaCoreMappingsPackage.eINSTANCE.getIAssociationOverride_SpecifiedJoinColumns(),
+ buildJoinColumnsBuilder());
+ }
+
+ private JoinColumnBuilder buildJoinColumnsBuilder() {
+ return new JoinColumnBuilder() {
+ public IJoinColumn createJoinColumn() {
+ return OrmFactory.eINSTANCE.createXmlJoinColumn(new JoinColumnOwner(associationOverride));
+ }
+ };
+ }
+
+ public Translator[] getChildren(Object target, int versionID) {
+ if (children == null) {
+ children = createChildren();
+ }
+ return children;
+ }
+
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ joinColumnsTranslator,
+ };
+ }
+ protected Translator createNameTranslator() {
+ return new Translator(ATTRIBUTE_OVERRIDE_NAME, MAPPINGS_PKG.getIOverride_Name(), DOM_ATTRIBUTE);
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ this.associationOverride = this.associationOverrideBuilder.createAssociationOverride();
+ return this.associationOverride;
+ }
+
+ public interface AssociationOverrideBuilder {
+ IAssociationOverride createAssociationOverride();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeMappingTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeMappingTranslator.java
new file mode 100644
index 0000000000..566293e8ba
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeMappingTranslator.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.jpt.core.internal.content.orm.OrmFactory;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public abstract class AttributeMappingTranslator extends Translator
+ implements OrmXmlMapper
+{
+ protected static final JpaCoreMappingsPackage MAPPINGS_PKG =
+ JpaCoreMappingsPackage.eINSTANCE;
+
+ protected static final OrmPackage JPA_CORE_XML_PKG =
+ OrmPackage.eINSTANCE;
+ protected static final OrmFactory JPA_CORE_XML_FACTORY =
+ OrmFactory.eINSTANCE;
+
+
+ private Translator[] children;
+
+
+ public AttributeMappingTranslator(String domNameAndPath, int style) {
+ super(domNameAndPath, JPA_CORE_XML_PKG.getXmlPersistentType_SpecifiedAttributeMappings(), style);
+ dependencyFeature = JPA_CORE_XML_PKG.getXmlAttributeMapping_PersistentAttribute();
+ }
+
+
+ public Translator[] getChildren(Object target, int versionID) {
+ if (this.children == null) {
+ this.children = createChildren();
+ }
+ return this.children;
+ }
+
+ protected abstract Translator[] createChildren();
+
+
+ protected Translator createNameTranslator() {
+ return new AttributeNameTranslator();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeMappingsTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeMappingsTranslator.java
new file mode 100644
index 0000000000..9c754cdd68
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeMappingsTranslator.java
@@ -0,0 +1,119 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class AttributeMappingsTranslator extends MultiObjectDependencyTranslator
+ implements OrmXmlMapper
+{
+ public static final String ATTRIBUTES_PATH =
+ ATTRIBUTES + '/' + ID + ',' + EMBEDDED_ID + ','+ BASIC + ',' + VERSION +',' + MANY_TO_ONE + "," + ONE_TO_MANY + ',' + ONE_TO_ONE + ',' + MANY_TO_MANY + ',' + EMBEDDED+ ',' + TRANSIENT;
+
+ private static final OrmPackage JPA_CORE_XML_PKG = OrmPackage.eINSTANCE;
+
+ public AttributeMappingsTranslator() {
+ super(ATTRIBUTES_PATH, JPA_CORE_XML_PKG.getXmlPersistentType_SpecifiedAttributeMappings(), JPA_CORE_XML_PKG.getXmlTypeMapping_PersistentType());
+ }
+
+ public Translator getDelegateFor(EObject o) {
+ Translator translator = super.getDelegateFor(o);
+ if (translator != null) {
+ return translator;
+ }
+ switch (o.eClass().getClassifierID()) {
+ case OrmPackage.XML_ID :
+ return new IdTranslator();
+
+ case OrmPackage.XML_BASIC :
+ return new BasicTranslator();
+
+ case OrmPackage.XML_ONE_TO_MANY :
+ return new OneToManyTranslator();
+
+ case OrmPackage.XML_MANY_TO_MANY :
+ return new ManyToManyTranslator();
+
+ case OrmPackage.XML_MANY_TO_ONE :
+ return new ManyToOneTranslator();
+
+ case OrmPackage.XML_TRANSIENT :
+ return new TransientTranslator();
+
+ case OrmPackage.XML_EMBEDDED :
+ return new EmbeddedTranslator();
+
+ case OrmPackage.XML_EMBEDDED_ID :
+ return new EmbeddedIdTranslator();
+
+ case OrmPackage.XML_ONE_TO_ONE :
+ return new OneToOneTranslator();
+
+ case OrmPackage.XML_VERSION :
+ return new VersionTranslator();
+ }
+
+ return null;
+ }
+
+
+ @Override
+ public Translator getDelegateFor(String domName, String readAheadName) {
+ if (domName.equals(ID)) {
+ return new IdTranslator();
+ }
+ if (domName.equals(BASIC)) {
+ return new BasicTranslator();
+ }
+ if (domName.equals(MANY_TO_ONE)) {
+ return new ManyToOneTranslator();
+ }
+ if (domName.equals(ONE_TO_MANY)) {
+ return new OneToManyTranslator();
+ }
+ if (domName.equals(MANY_TO_MANY)) {
+ return new ManyToManyTranslator();
+ }
+ if (domName.equals(TRANSIENT)) {
+ return new TransientTranslator();
+ }
+ if (domName.equals(EMBEDDED)) {
+ return new EmbeddedTranslator();
+ }
+ if (domName.equals(EMBEDDED_ID)) {
+ return new EmbeddedIdTranslator();
+ }
+ if (domName.equals(ONE_TO_ONE)) {
+ return new OneToOneTranslator();
+ }
+ if (domName.equals(VERSION)) {
+ return new VersionTranslator();
+ }
+ throw new IllegalStateException("Illegal dom name: " + domName); //$NON-NLS-1$
+ }
+
+ @Override
+ public boolean isDependencyParent() {
+ return true;
+ }
+
+ @Override
+ public EObject basicGetDependencyObject(EObject parent) {
+ Translator delegate = getDelegateFor(parent);
+
+ if (delegate != null) {
+ return delegate.basicGetDependencyObject(parent);
+ }
+ else {
+ return super.basicGetDependencyObject(parent);
+ }
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeNameTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeNameTranslator.java
new file mode 100644
index 0000000000..2278da6527
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeNameTranslator.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.wst.common.internal.emf.resource.DependencyTranslator;
+
+public class AttributeNameTranslator extends DependencyTranslator
+ implements OrmXmlMapper
+{
+ protected static final OrmPackage JPA_CORE_XML_PKG =
+ OrmPackage.eINSTANCE;
+
+
+ public AttributeNameTranslator() {
+ super(NAME, JPA_CORE_XML_PKG.getXmlPersistentAttribute_Name(),
+ JPA_CORE_XML_PKG.getXmlAttributeMapping_PersistentAttribute());
+ fStyle = DOM_ATTRIBUTE;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeOverrideTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeOverrideTranslator.java
new file mode 100644
index 0000000000..824b14e04d
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/AttributeOverrideTranslator.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.mappings.IAttributeOverride;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class AttributeOverrideTranslator extends Translator implements OrmXmlMapper
+{
+ private AttributeOverrideBuilder attributeOverrideBuilder;
+
+ protected static final JpaCoreMappingsPackage MAPPINGS_PKG =
+ JpaCoreMappingsPackage.eINSTANCE;
+ protected static final OrmPackage JPA_CORE_XML_PKG =
+ OrmPackage.eINSTANCE;
+
+
+ private Translator[] children;
+ private ColumnTranslator columnTranslator;
+
+ public AttributeOverrideTranslator(String domNameAndPath, EStructuralFeature aFeature, AttributeOverrideBuilder attributeOverrideBuilder) {
+ super(domNameAndPath, aFeature);
+ this.attributeOverrideBuilder = attributeOverrideBuilder;
+ this.columnTranslator = createColumnTranslator();
+ }
+
+ private ColumnTranslator createColumnTranslator() {
+ return new ColumnTranslator(ATTRIBUTE_OVERRIDE_COLUMN, JPA_CORE_XML_PKG.getIXmlColumnMapping_ColumnForXml());
+ }
+
+ public Translator[] getChildren(Object target, int versionID) {
+ if (children == null) {
+ children = createChildren();
+ }
+ return children;
+ }
+
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ columnTranslator,
+ };
+ }
+ protected Translator createNameTranslator() {
+ return new Translator(ATTRIBUTE_OVERRIDE_NAME, MAPPINGS_PKG.getIOverride_Name(), DOM_ATTRIBUTE);
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ IAttributeOverride attributeOverride = this.attributeOverrideBuilder.createAttributeOverride();
+ this.columnTranslator.setColumnMapping(attributeOverride);
+ return attributeOverride;
+ }
+
+ public interface AttributeOverrideBuilder {
+ IAttributeOverride createAttributeOverride();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/BasicTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/BasicTranslator.java
new file mode 100644
index 0000000000..2f563bf12a
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/BasicTranslator.java
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.mappings.IBasic;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class BasicTranslator extends AttributeMappingTranslator
+{
+ private ColumnTranslator columnTranslator;
+
+
+ public BasicTranslator() {
+ super(BASIC, NO_STYLE);
+ this.columnTranslator = createColumnTranslator();
+ }
+
+ private ColumnTranslator createColumnTranslator() {
+ return new ColumnTranslator(COLUMN, JPA_CORE_XML_PKG.getIXmlColumnMapping_ColumnForXml());
+ }
+
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ IBasic xmlBasic = JPA_CORE_XML_FACTORY.createXmlBasic();
+ this.columnTranslator.setColumnMapping(xmlBasic);
+ return xmlBasic;
+ }
+
+ @Override
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createFetchTypeTranslator(),
+ createOptionalTranslator(),
+ columnTranslator,
+ createLobTranslator(),
+ createTemporalTranslator(),
+ createEnumeratedTranslator(),
+ };
+ }
+
+ private Translator createPlaceHolderTranslator(String domNameAndPath) {
+ return new Translator(domNameAndPath, (EStructuralFeature) null);
+ }
+
+ private Translator createFetchTypeTranslator() {
+ return new EnumeratorTranslator(FETCH, JpaCoreMappingsPackage.eINSTANCE.getIBasic_Fetch(), DOM_ATTRIBUTE);
+ }
+
+ private Translator createOptionalTranslator() {
+ return new BooleanEnumeratorTranslator(OPTIONAL, JpaCoreMappingsPackage.eINSTANCE.getIBasic_Optional(), DOM_ATTRIBUTE);
+ }
+
+ private Translator createLobTranslator() {
+ return new EmptyTagBooleanTranslator(LOB, JpaCoreMappingsPackage.eINSTANCE.getIBasic_Lob());
+ }
+
+ private Translator createTemporalTranslator() {
+ return new TemporalTypeElementTranslator(TEMPORAL, JpaCoreMappingsPackage.eINSTANCE.getIBasic_Temporal(), NO_STYLE);
+ }
+
+ private Translator createEnumeratedTranslator() {
+ return new EnumeratedTypeElementTranslator(BASIC__ENUMERATED, JpaCoreMappingsPackage.eINSTANCE.getIBasic_Enumerated(), NO_STYLE);
+ }
+
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/BooleanEnumeratorTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/BooleanEnumeratorTranslator.java
new file mode 100644
index 0000000000..157f2f3409
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/BooleanEnumeratorTranslator.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+public class BooleanEnumeratorTranslator extends EnumeratorTranslator
+{
+ public BooleanEnumeratorTranslator(String domNameAndPath, EStructuralFeature aFeature) {
+ super(domNameAndPath, aFeature, BOOLEAN_FEATURE | BOOLEAN_LOWERCASE);
+ }
+
+ public BooleanEnumeratorTranslator(String domNameAndPath, EStructuralFeature aFeature, int style) {
+ super(domNameAndPath, aFeature, BOOLEAN_FEATURE | BOOLEAN_LOWERCASE | style);
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/ColumnTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/ColumnTranslator.java
new file mode 100644
index 0000000000..adf9ca1dcf
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/ColumnTranslator.java
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.mappings.IColumnMapping;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class ColumnTranslator extends AbstractColumnTranslator
+ implements OrmXmlMapper
+{
+
+ private IColumnMapping columnMapping;
+
+ public ColumnTranslator(String domNameAndPath, EStructuralFeature aFeature) {
+ super(domNameAndPath, aFeature);
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return getColumnMapping().getColumn();
+ }
+
+ private IColumnMapping getColumnMapping() {
+ return this.columnMapping;
+ }
+
+ void setColumnMapping(IColumnMapping columnMapping) {
+ this.columnMapping = columnMapping;
+ }
+
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createUniqueTranslator(),
+ createNullableTranslator(),
+ createInsertableTranslator(),
+ createUpdatableTranslator(),
+ createColumnDefinitionTranslator(),
+ createTableTranslator(),
+ createLengthTranslator(),
+ createPrecisionTranslator(),
+ createScaleTranslator(),
+ };
+ }
+
+ protected Translator createLengthTranslator() {
+ return new Translator(COLUMN__LENGTH, JPA_CORE_XML_PKG.getXmlColumn_LengthForXml(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createPrecisionTranslator() {
+ return new Translator(COLUMN__PRECISION, JPA_CORE_XML_PKG.getXmlColumn_PrecisionForXml(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createScaleTranslator() {
+ return new Translator(COLUMN__SCALE, JPA_CORE_XML_PKG.getXmlColumn_ScaleForXml(), DOM_ATTRIBUTE);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/DebugTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/DebugTranslator.java
new file mode 100644
index 0000000000..c080462564
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/DebugTranslator.java
@@ -0,0 +1,431 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import java.util.List;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.wst.common.internal.emf.resource.ReadAheadHelper;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+import org.eclipse.wst.common.internal.emf.resource.TranslatorPath;
+import org.eclipse.wst.common.internal.emf.resource.VariableTranslatorFactory;
+
+public class DebugTranslator extends Translator
+{
+ @Override
+ public String getDOMPath() {
+ // TODO Auto-generated method stub
+ return super.getDOMPath();
+ }
+
+ public DebugTranslator(String domNameAndPath, EStructuralFeature aFeature) {
+ super(domNameAndPath, aFeature);
+ // TODO Auto-generated constructor stub
+ }
+
+ public DebugTranslator(String domNameAndPath, EStructuralFeature aFeature, int style) {
+ super(domNameAndPath, aFeature, style);
+ // TODO Auto-generated constructor stub
+ }
+
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ // TODO Auto-generated method stub
+ return super.createEMFObject(nodeName, readAheadName);
+ }
+
+ @Override
+ public Translator[] getChildren(Object target, int versionID) {
+ // TODO Auto-generated method stub
+ return super.getChildren(target, versionID);
+ }
+
+ @Override
+ public String getDOMName(Object value) {
+ // TODO Auto-generated method stub
+ return super.getDOMName(value);
+ }
+
+ @Override
+ public boolean isManagedByParent() {
+ // TODO Auto-generated method stub
+ return super.isManagedByParent();
+ }
+
+ @Override
+ public void addReadAheadHelper(ReadAheadHelper helper) {
+ // TODO Auto-generated method stub
+ super.addReadAheadHelper(helper);
+ }
+
+ @Override
+ public EObject basicGetDependencyObject(EObject parent) {
+ // TODO Auto-generated method stub
+ return super.basicGetDependencyObject(parent);
+ }
+
+ @Override
+ public void clearList(EObject mofObject) {
+ // TODO Auto-generated method stub
+ super.clearList(mofObject);
+ }
+
+ @Override
+ public Object convertStringToValue(String strValue, EObject owner) {
+ // TODO Auto-generated method stub
+ return super.convertStringToValue(strValue, owner);
+ }
+
+ @Override
+ public Object convertStringToValue(String nodeName, String readAheadName,
+ String value, Notifier owner) {
+ // TODO Auto-generated method stub
+ return super.convertStringToValue(nodeName, readAheadName, value, owner);
+ }
+
+ @Override
+ public String convertValueToString(Object value, EObject owner) {
+ // TODO Auto-generated method stub
+ return super.convertValueToString(value, owner);
+ }
+
+ @Override
+ public boolean equals(Object object) {
+ // TODO Auto-generated method stub
+ return super.equals(object);
+ }
+
+ @Override
+ public String extractStringValue(EObject emfObject) {
+ // TODO Auto-generated method stub
+ return super.extractStringValue(emfObject);
+ }
+
+ @Override
+ public boolean featureExists(EObject emfObject) {
+ // TODO Auto-generated method stub
+ return super.featureExists(emfObject);
+ }
+
+ @Override
+ public Translator findChild(String tagName, Object target, int versionID) {
+ // TODO Auto-generated method stub
+ return super.findChild(tagName, target, versionID);
+ }
+
+ @Override
+ protected Translator[] getChildren() {
+ // TODO Auto-generated method stub
+ return super.getChildren();
+ }
+
+ @Override
+ public EStructuralFeature getDependencyFeature() {
+ // TODO Auto-generated method stub
+ return super.getDependencyFeature();
+ }
+
+ @Override
+ public String[] getDOMNames() {
+ // TODO Auto-generated method stub
+ return super.getDOMNames();
+ }
+
+ @Override
+ public EStructuralFeature getFeature() {
+ // TODO Auto-generated method stub
+ return super.getFeature();
+ }
+
+ @Override
+ public List getMOFChildren(EObject mofObject) {
+ // TODO Auto-generated method stub
+ return super.getMOFChildren(mofObject);
+ }
+
+ @Override
+ public Object getMOFValue(EObject mofObject) {
+ // TODO Auto-generated method stub
+ return super.getMOFValue(mofObject);
+ }
+
+ @Override
+ public String getNameSpace() {
+ // TODO Auto-generated method stub
+ return super.getNameSpace();
+ }
+
+ @Override
+ public ReadAheadHelper getReadAheadHelper(String parentName) {
+ // TODO Auto-generated method stub
+ return super.getReadAheadHelper(parentName);
+ }
+
+ @Override
+ public TranslatorPath[] getTranslatorPaths() {
+ // TODO Auto-generated method stub
+ return super.getTranslatorPaths();
+ }
+
+ @Override
+ public Translator[] getVariableChildren(Notifier target, int version) {
+ // TODO Auto-generated method stub
+ return super.getVariableChildren(target, version);
+ }
+
+ @Override
+ public VariableTranslatorFactory getVariableTranslatorFactory() {
+ // TODO Auto-generated method stub
+ return super.getVariableTranslatorFactory();
+ }
+
+ @Override
+ public boolean hasDOMPath() {
+ // TODO Auto-generated method stub
+ return super.hasDOMPath();
+ }
+
+ @Override
+ public boolean hasReadAheadNames() {
+ // TODO Auto-generated method stub
+ return super.hasReadAheadNames();
+ }
+
+ @Override
+ protected void initializeDOMNameAndPath(String domNameAndPathArg) {
+ // TODO Auto-generated method stub
+ super.initializeDOMNameAndPath(domNameAndPathArg);
+ }
+
+ @Override
+ public boolean isBooleanFeature() {
+ // TODO Auto-generated method stub
+ return super.isBooleanFeature();
+ }
+
+ @Override
+ public boolean isBooleanUppercase() {
+ // TODO Auto-generated method stub
+ return super.isBooleanUppercase();
+ }
+
+ @Override
+ public boolean isCDATAContent() {
+ // TODO Auto-generated method stub
+ return super.isCDATAContent();
+ }
+
+ @Override
+ public boolean isComment() {
+ // TODO Auto-generated method stub
+ return super.isComment();
+ }
+
+ @Override
+ public boolean isDataType() {
+ // TODO Auto-generated method stub
+ return super.isDataType();
+ }
+
+ @Override
+ public boolean isDependencyChild() {
+ // TODO Auto-generated method stub
+ return super.isDependencyChild();
+ }
+
+ @Override
+ public boolean isDependencyParent() {
+ // TODO Auto-generated method stub
+ return super.isDependencyParent();
+ }
+
+ @Override
+ public boolean isDOMAttribute() {
+ // TODO Auto-generated method stub
+ return super.isDOMAttribute();
+ }
+
+ @Override
+ public boolean isDOMTextValue() {
+ // TODO Auto-generated method stub
+ return super.isDOMTextValue();
+ }
+
+ @Override
+ public boolean isEmptyContentSignificant() {
+ // TODO Auto-generated method stub
+ return super.isEmptyContentSignificant();
+ }
+
+ @Override
+ public boolean isEmptyTag() {
+ // TODO Auto-generated method stub
+ return super.isEmptyTag();
+ }
+
+ @Override
+ public boolean isEnumFeature() {
+ // TODO Auto-generated method stub
+ return super.isEnumFeature();
+ }
+
+ @Override
+ public boolean isEnumWithHyphens() {
+ // TODO Auto-generated method stub
+ return super.isEnumWithHyphens();
+ }
+
+ @Override
+ public boolean isIDMap() {
+ // TODO Auto-generated method stub
+ return super.isIDMap();
+ }
+
+ @Override
+ public boolean isLinkMap() {
+ // TODO Auto-generated method stub
+ return super.isLinkMap();
+ }
+
+ @Override
+ public boolean isMapFor(Object aFeature, Object oldValue, Object newValue) {
+ // TODO Auto-generated method stub
+ return super.isMapFor(aFeature, oldValue, newValue);
+ }
+
+ @Override
+ public boolean isMapFor(String domName) {
+ // TODO Auto-generated method stub
+ return super.isMapFor(domName);
+ }
+
+ @Override
+ public boolean isMultiValued() {
+ // TODO Auto-generated method stub
+ return super.isMultiValued();
+ }
+
+ @Override
+ public boolean isObjectMap() {
+ // TODO Auto-generated method stub
+ return super.isObjectMap();
+ }
+
+ @Override
+ public boolean isSetMOFValue(EObject emfObject) {
+ // TODO Auto-generated method stub
+ return super.isSetMOFValue(emfObject);
+ }
+
+ @Override
+ public boolean isShared() {
+ // TODO Auto-generated method stub
+ return super.isShared();
+ }
+
+ @Override
+ public boolean isTargetLinkMap() {
+ // TODO Auto-generated method stub
+ return super.isTargetLinkMap();
+ }
+
+ @Override
+ public boolean isUnsettable() {
+ // TODO Auto-generated method stub
+ return super.isUnsettable();
+ }
+
+ @Override
+ protected String[] parseDOMNames(String domNamesString) {
+ // TODO Auto-generated method stub
+ return super.parseDOMNames(domNamesString);
+ }
+
+ @Override
+ public void removeMOFValue(Notifier owner, Object value) {
+ // TODO Auto-generated method stub
+ super.removeMOFValue(owner, value);
+ }
+
+ @Override
+ protected void setEMFClass(EClass anEClass) {
+ // TODO Auto-generated method stub
+ super.setEMFClass(anEClass);
+ }
+
+ @Override
+ protected void setFeature(EStructuralFeature aFeature) {
+ // TODO Auto-generated method stub
+ super.setFeature(aFeature);
+ }
+
+ @Override
+ public void setMOFValue(EObject emfObject, Object value) {
+ // TODO Auto-generated method stub
+ super.setMOFValue(emfObject, value);
+ }
+
+ @Override
+ public void setMOFValue(Notifier owner, Object value, int newIndex) {
+ // TODO Auto-generated method stub
+ super.setMOFValue(owner, value, newIndex);
+ }
+
+ @Override
+ public void setMOFValue(Notifier owner, Object value) {
+ // TODO Auto-generated method stub
+ super.setMOFValue(owner, value);
+ }
+
+ @Override
+ public void setMOFValue(Resource res, Object value) {
+ // TODO Auto-generated method stub
+ super.setMOFValue(res, value);
+ }
+
+ @Override
+ public void setMOFValueFromEmptyDOMPath(EObject eObject) {
+ // TODO Auto-generated method stub
+ super.setMOFValueFromEmptyDOMPath(eObject);
+ }
+
+ @Override
+ public void setNameSpace(String string) {
+ // TODO Auto-generated method stub
+ super.setNameSpace(string);
+ }
+
+ @Override
+ public void setTextValueIfNecessary(String textValue, Notifier owner, int versionId) {
+ // TODO Auto-generated method stub
+ super.setTextValueIfNecessary(textValue, owner, versionId);
+ }
+
+ @Override
+ public boolean shouldIndentEndTag() {
+ // TODO Auto-generated method stub
+ return super.shouldIndentEndTag();
+ }
+
+ @Override
+ public boolean shouldRenderEmptyDOMPath(EObject eObject) {
+ // TODO Auto-generated method stub
+ return super.shouldRenderEmptyDOMPath(eObject);
+ }
+
+ @Override
+ public void unSetMOFValue(EObject emfObject) {
+ // TODO Auto-generated method stub
+ super.unSetMOFValue(emfObject);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/DiscriminatorColumnTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/DiscriminatorColumnTranslator.java
new file mode 100644
index 0000000000..bf081918f4
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/DiscriminatorColumnTranslator.java
@@ -0,0 +1,84 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.content.orm.OrmFactory;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.mappings.IEntity;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class DiscriminatorColumnTranslator extends Translator
+ implements OrmXmlMapper
+{
+ private Translator[] children;
+
+ protected static final OrmPackage JPA_CORE_XML_PKG =
+ OrmPackage.eINSTANCE;
+ protected static final OrmFactory JPA_CORE_XML_FACTORY =
+ OrmFactory.eINSTANCE;
+ protected static final JpaCoreMappingsPackage MAPPINGS_PKG =
+ JpaCoreMappingsPackage.eINSTANCE;
+
+ private IEntity entity;
+
+ public DiscriminatorColumnTranslator() {
+ super(ENTITY__DISCRIMINATOR_COLUMN, JPA_CORE_XML_PKG.getXmlEntityForXml_DiscriminatorColumnForXml(), END_TAG_NO_INDENT);
+ }
+ public Translator[] getChildren(Object target, int versionID) {
+ if (children == null) {
+ children = createChildren();
+ }
+ return children;
+ }
+
+
+ protected IEntity getEntity() {
+ return this.entity;
+ }
+
+ void setEntity(IEntity entity) {
+ this.entity = entity;
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return getEntity().getDiscriminatorColumn();
+ }
+
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createDiscrminiatorTypeTranslator(),
+ createColumnDefinitationTranslator(),
+ createLengthTranslator(),
+ };
+ }
+
+ protected Translator createNameTranslator() {
+ return new Translator(DISCRIMINATOR_COLUMN__NAME, JPA_CORE_XML_PKG.getXmlDiscriminatorColumn_SpecifiedNameForXml(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createDiscrminiatorTypeTranslator() {
+ return new EnumeratorTranslator(DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE, JPA_CORE_XML_PKG.getXmlDiscriminatorColumn_DiscriminatorTypeForXml(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createColumnDefinitationTranslator() {
+ return new Translator(DISCRIMINATOR_COLUMN__COLUMN_DEFINITION, JPA_CORE_XML_PKG.getXmlDiscriminatorColumn_ColumnDefinitionForXml(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createLengthTranslator() {
+ return new Translator(DISCRIMINATOR_COLUMN__LENGTH, JPA_CORE_XML_PKG.getXmlDiscriminatorColumn_SpecifiedLengthForXml(), DOM_ATTRIBUTE);
+ }
+
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmbeddableTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmbeddableTranslator.java
new file mode 100644
index 0000000000..2ea7194414
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmbeddableTranslator.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class EmbeddableTranslator extends TypeMappingTranslator
+{
+ protected static final OrmPackage XML_PKG =
+ OrmPackage.eINSTANCE;
+
+
+ public EmbeddableTranslator() {
+ super(EMBEDDABLE);
+ }
+
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return JPA_CORE_XML_FACTORY.createXmlEmbeddable();
+ }
+
+ @Override
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createJavaClassTranslator(),
+ createAccessTypeTranslator(),
+ createMetadataCompleteTranslator(),
+ createPlaceHolderTranslator(EMBEDDABLE__DESCRIPTION),
+ createPersistentAttributesTranslator()
+ };
+ }
+
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmbeddedIdTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmbeddedIdTranslator.java
new file mode 100644
index 0000000000..1874a2d58c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmbeddedIdTranslator.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class EmbeddedIdTranslator extends AttributeMappingTranslator
+{
+ public EmbeddedIdTranslator() {
+ super(EMBEDDED_ID, NO_STYLE);
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return JPA_CORE_XML_FACTORY.createXmlEmbeddedId();
+ }
+
+ @Override
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createPlaceHolderTranslator(EMBEDDED_ID__ATTRIBUTE_OVERRIDE),
+ };
+ }
+ private Translator createPlaceHolderTranslator(String domNameAndPath) {
+ return new Translator(domNameAndPath, (EStructuralFeature) null);
+ }
+
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmbeddedTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmbeddedTranslator.java
new file mode 100644
index 0000000000..0e20f58a5c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmbeddedTranslator.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.content.orm.resource.AttributeOverrideTranslator.AttributeOverrideBuilder;
+import org.eclipse.jpt.core.internal.mappings.IAttributeOverride;
+import org.eclipse.jpt.core.internal.mappings.IEmbedded;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class EmbeddedTranslator extends AttributeMappingTranslator
+{
+ private IEmbedded embedded;
+
+ public EmbeddedTranslator() {
+ super(EMBEDDED, NO_STYLE);
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ this.embedded = JPA_CORE_XML_FACTORY.createXmlEmbedded();
+ return this.embedded;
+ }
+
+ @Override
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createAttributeOverridesTranslator(),
+ };
+ }
+ private Translator createAttributeOverridesTranslator() {
+ return new AttributeOverrideTranslator(EMBEDDED__ATTRIBUTE_OVERRIDE, MAPPINGS_PKG.getIEmbedded_SpecifiedAttributeOverrides(), buildAttributeOverrideBuilder());
+ }
+
+ private AttributeOverrideBuilder buildAttributeOverrideBuilder() {
+ return new AttributeOverrideBuilder() {
+ public IAttributeOverride createAttributeOverride() {
+ return EmbeddedTranslator.this.embedded.createAttributeOverride(0);
+ }
+ };
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmptyTagBooleanTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmptyTagBooleanTranslator.java
new file mode 100644
index 0000000000..c96a39095d
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EmptyTagBooleanTranslator.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+/**
+ * This translator is to be used for empty xml tags that correspond
+ * to a boolean attribute in the emf model.
+ * cascade-persist is an example from the orm.xsd:
+ *
+ * <persistence-unit-defaults>
+ * <cascade-persist/>
+ * </persistence-unit-defaults> ==> cascadePersist == true
+ *
+ * vs.
+ *
+ * <persistence-unit-defaults>
+ * </persistence-unit-defaults> ==> cascadePersist == false
+ *
+ */
+public class EmptyTagBooleanTranslator extends Translator
+{
+ public EmptyTagBooleanTranslator(String domNameAndPath, EStructuralFeature feature) {
+ super(domNameAndPath, feature, EMPTY_TAG | BOOLEAN_FEATURE);
+ }
+
+ public EmptyTagBooleanTranslator(String domNameAndPath, EStructuralFeature aFeature, int style) {
+ super(domNameAndPath, aFeature, style | EMPTY_TAG | BOOLEAN_FEATURE);
+ }
+
+ @Override
+ public Object getMOFValue(EObject mofObject) {
+ // I am overriding this method. This is so the tag will be removed when
+ // the value is false.
+ // I'm not sure if this is a bug in the ecore or maybe in the translators,
+ // but I really don't think that we should have to depend on the boolean
+ // being "unset" to remove the tag.
+ Boolean value = (Boolean) super.getMOFValue(mofObject);
+ return (value == true) ? value : null;
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EntityMappingsTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EntityMappingsTranslator.java
new file mode 100644
index 0000000000..4be35f1db5
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EntityMappingsTranslator.java
@@ -0,0 +1,116 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.content.orm.EntityMappings;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.wst.common.internal.emf.resource.ConstantAttributeTranslator;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.RootTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class EntityMappingsTranslator extends RootTranslator
+ implements OrmXmlMapper
+{
+ private Translator[] children;
+
+ private PersistenceUnitMetadataTranslator persistenceUnitMetadataTranslator;
+
+ public EntityMappingsTranslator() {
+ super(ENTITY_MAPPINGS, OrmPackage.eINSTANCE.getEntityMappingsInternal());
+ }
+
+ public Translator[] getChildren(Object target, int versionID) {
+ if (children == null) {
+ children = createChildren();
+ }
+ return children;
+ }
+
+ private Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ new ConstantAttributeTranslator(XML_NS, PERSISTENCE_NS_URL),
+ new ConstantAttributeTranslator(XML_NS_XSI, XSI_NS_URL),
+ new ConstantAttributeTranslator(XSI_SCHEMA_LOCATION, PERSISTENCE_NS_URL + ' ' + ORM_SCHEMA_LOC_1_0),
+ createVersionTranslator(),
+ createPlaceHolderTranslator(ENTITY_MAPPINGS__DESCRIPTION),
+ createPersistenceUnitMetadataTranslator(),
+ createPackageTranslator(),
+ createSchemaTranslator(),
+ createCatalogTranslator(),
+ createAccessTranslator(),
+ createSequenceGeneratorTranslator(),
+ createTableGeneratorTranslator(),
+ createNamedQueryTranslator(),
+ createNamedNativeQueryTranslator(),
+ createPlaceHolderTranslator(ENTITY_MAPPINGS__SQL_RESULT_SET_MAPPING),
+ createTypeMappingsTranslator()
+ };
+ }
+
+ private Translator createPlaceHolderTranslator(String domNameAndPath) {
+ return new Translator(domNameAndPath, (EStructuralFeature) null);
+ }
+
+ protected Translator createVersionTranslator() {
+ return new Translator(VERSION, OrmPackage.eINSTANCE.getEntityMappingsInternal_Version(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createPersistenceUnitMetadataTranslator() {
+ this.persistenceUnitMetadataTranslator = new PersistenceUnitMetadataTranslator();
+ return this.persistenceUnitMetadataTranslator;
+ }
+
+ protected Translator createPackageTranslator() {
+ return new Translator(ENTITY_MAPPINGS__PACKAGE, OrmPackage.eINSTANCE.getEntityMappingsForXml_PackageForXml());
+ }
+
+ protected Translator createSchemaTranslator() {
+ return new Translator(ENTITY_MAPPINGS__SCHEMA, OrmPackage.eINSTANCE.getEntityMappingsInternal_SpecifiedSchema());
+ }
+
+ protected Translator createCatalogTranslator() {
+ return new Translator(ENTITY_MAPPINGS__CATALOG, OrmPackage.eINSTANCE.getEntityMappingsInternal_SpecifiedCatalog());
+ }
+
+ protected Translator createAccessTranslator() {
+ return new AccessTypeElementTranslator(ENTITY_MAPPINGS__ACCESS, OrmPackage.eINSTANCE.getEntityMappingsInternal_SpecifiedAccess(), NO_STYLE);
+ }
+
+ protected Translator createTypeMappingsTranslator() {
+ return new TypeMappingsTranslator();
+ }
+
+ private Translator createTableGeneratorTranslator() {
+ return new TableGeneratorTranslator(TABLE_GENERATOR, OrmPackage.eINSTANCE.getEntityMappingsInternal_TableGenerators());
+ }
+
+ private Translator createSequenceGeneratorTranslator() {
+ return new SequenceGeneratorTranslator(SEQUENCE_GENERATOR, OrmPackage.eINSTANCE.getEntityMappingsInternal_SequenceGenerators());
+ }
+
+ private Translator createNamedQueryTranslator() {
+ return new NamedQueryTranslator(NAMED_QUERY, OrmPackage.eINSTANCE.getEntityMappingsInternal_NamedQueries());
+ }
+
+ private Translator createNamedNativeQueryTranslator() {
+ return new NamedNativeQueryTranslator(NAMED_NATIVE_QUERY, OrmPackage.eINSTANCE.getEntityMappingsInternal_NamedNativeQueries());
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ EntityMappings entityMappings = (EntityMappings) super.createEMFObject(nodeName, readAheadName);
+ this.persistenceUnitMetadataTranslator.setEntityMappings(entityMappings);
+ return entityMappings;
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EntityTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EntityTranslator.java
new file mode 100644
index 0000000000..bc4a1e0da1
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EntityTranslator.java
@@ -0,0 +1,179 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.content.orm.OrmFactory;
+import org.eclipse.jpt.core.internal.content.orm.resource.AssociationOverrideTranslator.AssociationOverrideBuilder;
+import org.eclipse.jpt.core.internal.content.orm.resource.AttributeOverrideTranslator.AttributeOverrideBuilder;
+import org.eclipse.jpt.core.internal.content.orm.resource.PrimaryKeyJoinColumnTranslator.PrimaryKeyJoinColumnBuilder;
+import org.eclipse.jpt.core.internal.mappings.IAssociationOverride;
+import org.eclipse.jpt.core.internal.mappings.IAttributeOverride;
+import org.eclipse.jpt.core.internal.mappings.IEntity;
+import org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class EntityTranslator extends TypeMappingTranslator
+{
+ protected static final JpaCoreMappingsPackage MAPPINGS_PKG =
+ JpaCoreMappingsPackage.eINSTANCE;
+
+ private TableTranslator tableTranslator;
+ private SecondaryTableTranslator secondaryTableTranslator;
+ private DiscriminatorColumnTranslator discriminatorColumnTranslator;
+
+ private IEntity entity;
+
+ public EntityTranslator() {
+ super(ENTITY);
+ this.tableTranslator = createTableTranslator();
+ this.secondaryTableTranslator = createSecondaryTableTranslator();
+ this.discriminatorColumnTranslator = createDiscriminatorColumnTranslator();
+ }
+
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ this.entity = JPA_CORE_XML_FACTORY.createXmlEntityInternal();
+ this.tableTranslator.setEntity(this.entity);
+ this.secondaryTableTranslator.setEntity(this.entity);
+ this.discriminatorColumnTranslator.setEntity(this.entity);
+ return this.entity;
+ }
+
+ @Override
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createJavaClassTranslator(),
+ createAccessTypeTranslator(),
+ createMetadataCompleteTranslator(),
+ createPlaceHolderTranslator(ENTITY__DESCRIPTION),
+ getTableTranslator(),
+ getSecondaryTableTranslator(),
+ createPrimaryKeyJoinColumnsTranslator(),
+ createPlaceHolderTranslator(ENTITY__ID_CLASS),
+ createInheritanceTranslator(),
+ createDiscriminatorValueTranslator(),
+ getDiscriminatorColumnTranslator(),
+ createSequenceGeneratorTranslator(),
+ createTableGeneratorTranslator(),
+ createNamedQueryTranslator(),
+ createNamedNativeQueryTranslator(),
+ createPlaceHolderTranslator(ENTITY__SQL_RESULT_SET_MAPPING),
+ createPlaceHolderTranslator(ENTITY__EXCLUDE_DEFAULT_LISTENERS),
+ createPlaceHolderTranslator(ENTITY__EXCLUDE_SUPERCLASS_LISTENERS),
+ createPlaceHolderTranslator(ENTITY__ENTITY_LISTENERS),
+ createPlaceHolderTranslator(ENTITY__PRE_PERSIST),
+ createPlaceHolderTranslator(ENTITY__POST_PERSIST),
+ createPlaceHolderTranslator(ENTITY__PRE_REMOVE),
+ createPlaceHolderTranslator(ENTITY__POST_REMOVE),
+ createPlaceHolderTranslator(ENTITY__PRE_UPDATE),
+ createPlaceHolderTranslator(ENTITY__POST_UPDATE),
+ createPlaceHolderTranslator(ENTITY__POST_LOAD),
+ createAttributeOverridesTranslator(),
+ createAssociationOverridesTranslator(),
+ createPersistentAttributesTranslator()
+ };
+ }
+
+ private Translator createNameTranslator() {
+ return new Translator(NAME, MAPPINGS_PKG.getIEntity_SpecifiedName(), DOM_ATTRIBUTE);
+ }
+
+ private Translator getTableTranslator() {
+ return this.tableTranslator;
+ }
+
+ private Translator getSecondaryTableTranslator() {
+ return this.secondaryTableTranslator;
+ }
+
+ private Translator getDiscriminatorColumnTranslator() {
+ return this.discriminatorColumnTranslator;
+ }
+
+ private TableTranslator createTableTranslator() {
+ return new TableTranslator();
+ }
+
+ private SecondaryTableTranslator createSecondaryTableTranslator() {
+ return new SecondaryTableTranslator();
+ }
+
+ private DiscriminatorColumnTranslator createDiscriminatorColumnTranslator() {
+ return new DiscriminatorColumnTranslator();
+ }
+
+ private Translator createTableGeneratorTranslator() {
+ return new TableGeneratorTranslator(TABLE_GENERATOR, JpaCoreMappingsPackage.eINSTANCE.getIEntity_TableGenerator());
+ }
+
+ private Translator createSequenceGeneratorTranslator() {
+ return new SequenceGeneratorTranslator(SEQUENCE_GENERATOR, JpaCoreMappingsPackage.eINSTANCE.getIEntity_SequenceGenerator());
+ }
+
+ private Translator createNamedQueryTranslator() {
+ return new NamedQueryTranslator(NAMED_QUERY, JpaCoreMappingsPackage.eINSTANCE.getIEntity_NamedQueries());
+ }
+
+ private Translator createNamedNativeQueryTranslator() {
+ return new NamedNativeQueryTranslator(NAMED_NATIVE_QUERY, JpaCoreMappingsPackage.eINSTANCE.getIEntity_NamedNativeQueries());
+ }
+
+ protected Translator createDiscriminatorValueTranslator() {
+ return new Translator(ENTITY__DISCRIMINATOR_VALUE, MAPPINGS_PKG.getIEntity_SpecifiedDiscriminatorValue(), NO_STYLE);
+ }
+
+ protected Translator createInheritanceTranslator() {
+ return new EnumeratorTranslator(ENTITY__INHERITANCE + "/" + STRATEGY, MAPPINGS_PKG.getIEntity_InheritanceStrategy(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createPrimaryKeyJoinColumnsTranslator() {
+ return new PrimaryKeyJoinColumnTranslator(
+ ENTITY__PRIMARY_KEY_JOIN_COLUMN,
+ JpaCoreMappingsPackage.eINSTANCE.getIEntity_SpecifiedPrimaryKeyJoinColumns(),
+ buildPrimaryKeyJoinColumnsBuilder());
+ }
+
+ private PrimaryKeyJoinColumnBuilder buildPrimaryKeyJoinColumnsBuilder() {
+ return new PrimaryKeyJoinColumnBuilder() {
+ public IPrimaryKeyJoinColumn createPrimaryKeyJoinColumn() {
+ return OrmFactory.eINSTANCE.createXmlPrimaryKeyJoinColumn(new IEntity.PrimaryKeyJoinColumnOwner(entity));
+ }
+ };
+ }
+
+ private Translator createAttributeOverridesTranslator() {
+ return new AttributeOverrideTranslator(ENTITY__ATTRIBUTE_OVERRIDE, MAPPINGS_PKG.getIEntity_SpecifiedAttributeOverrides(), buildAttributeOverrideBuilder());
+ }
+
+ private AttributeOverrideBuilder buildAttributeOverrideBuilder() {
+ return new AttributeOverrideBuilder() {
+ public IAttributeOverride createAttributeOverride() {
+ return EntityTranslator.this.entity.createAttributeOverride(0);
+ }
+ };
+ }
+
+ private Translator createAssociationOverridesTranslator() {
+ return new AssociationOverrideTranslator(ENTITY__ASSOCIATION_OVERRIDE, MAPPINGS_PKG.getIEntity_SpecifiedAssociationOverrides(), buildAssociationOverrideBuilder());
+ }
+
+ private AssociationOverrideBuilder buildAssociationOverrideBuilder() {
+ return new AssociationOverrideBuilder() {
+ public IAssociationOverride createAssociationOverride() {
+ return EntityTranslator.this.entity.createAssociationOverride(0);
+ }
+ };
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EnumeratedTypeElementTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EnumeratedTypeElementTranslator.java
new file mode 100644
index 0000000000..c926b883d7
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EnumeratedTypeElementTranslator.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import java.util.Collections;
+import java.util.List;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.mappings.EnumType;
+
+/**
+ * There is a bug in the translator framework that causes
+ * enumerators in xml elements and enumerators in xml attributes
+ * to be treated differently. When the enumerator is an attribute
+ * setting the model to the default causes the attribute to be removed.
+ * With an element is causes the default literal to be placed in
+ * the tag.
+ *
+ * The problem is wrapped up in the emf unsettable attribute as well.
+ * For attributes the eIsSet method returns false for the default value
+ * For elements the eIsSet method returns true for the default value.
+ * I don't want to have to use the unsettable option in emf since that would
+ * require that I call different api. I am not sure yet what the bug is in
+ * the translator, so I have entered one ~KFM
+ */
+public class EnumeratedTypeElementTranslator extends EnumeratorTranslator
+{
+
+ public EnumeratedTypeElementTranslator(String domNameAndPath, EStructuralFeature aFeature, int style) {
+ super(domNameAndPath, aFeature, style);
+ }
+
+ @Override
+ public Object getMOFValue(EObject mofObject) {
+ EnumType type = (EnumType) super.getMOFValue(mofObject);
+ if (type == EnumType.DEFAULT) {
+ return null;
+ }
+ return type;
+ }
+
+ @Override
+ public List getMOFChildren(EObject mofObject) {
+ List result = super.getMOFChildren(mofObject);
+ if(result != null && result.size() > 0) {
+ EnumType type = (EnumType) result.get(0);
+ if(type.getValue() == EnumType.DEFAULT_VALUE)
+ result = Collections.EMPTY_LIST;
+ }
+ return result;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EnumeratorTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EnumeratorTranslator.java
new file mode 100644
index 0000000000..2aed3cb282
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/EnumeratorTranslator.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.common.util.Enumerator;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+import org.eclipse.wst.common.internal.emf.resource.TranslatorPath;
+
+public class EnumeratorTranslator extends Translator
+{
+
+ public EnumeratorTranslator(String domNameAndPath, EStructuralFeature aFeature, int style) {
+ super(domNameAndPath, aFeature, style);
+ }
+
+ public EnumeratorTranslator(String domNameAndPath, EStructuralFeature aFeature, TranslatorPath translatorPath) {
+ super(domNameAndPath, aFeature, translatorPath);
+ }
+
+ /**
+ * Overriding this because the default functionality is to return
+ * the toString of the Enumerator. This returns the literal value
+ * while we want to return the name instead.
+ *
+ * An example is fetchType where the literal value is going to be "Lazy"
+ * and the name is "LAZY". The xml needs "LAZY" to be placed in it
+ * while the ui wants to display "Lazy"
+ */
+ @Override
+ public String convertValueToString(Object value, EObject owner) {
+ Enumerator enumerator = (Enumerator) value;
+ return enumerator.getName();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/GeneratedValueTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/GeneratedValueTranslator.java
new file mode 100644
index 0000000000..64734dfd2e
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/GeneratedValueTranslator.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.content.orm.OrmFactory;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class GeneratedValueTranslator extends Translator implements OrmXmlMapper
+{
+ protected static final JpaCoreMappingsPackage MAPPINGS_PKG =
+ JpaCoreMappingsPackage.eINSTANCE;
+ protected static final OrmPackage JPA_CORE_XML_PKG =
+ OrmPackage.eINSTANCE;
+
+
+ private Translator[] children;
+
+ public GeneratedValueTranslator(String domNameAndPath, EStructuralFeature aFeature) {
+ super(domNameAndPath, aFeature);
+ }
+
+ public Translator[] getChildren(Object target, int versionID) {
+ if (children == null) {
+ children = createChildren();
+ }
+ return children;
+ }
+
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createStrategyTranslator(),
+ createGeneratorTranslator(),
+ };
+ }
+
+ protected Translator createStrategyTranslator() {
+ return new Translator(GENERATED_VALUE__STRATEGY, MAPPINGS_PKG.getIGeneratedValue_Strategy(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createGeneratorTranslator() {
+ return new Translator(GENERATED_VALUE__GENERATOR, MAPPINGS_PKG.getIGeneratedValue_Generator(), DOM_ATTRIBUTE);
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return OrmFactory.eINSTANCE.createXmlGeneratedValue();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/GeneratorTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/GeneratorTranslator.java
new file mode 100644
index 0000000000..0ad1f08982
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/GeneratorTranslator.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public abstract class GeneratorTranslator extends Translator implements OrmXmlMapper
+{
+ protected static final JpaCoreMappingsPackage MAPPINGS_PKG =
+ JpaCoreMappingsPackage.eINSTANCE;
+ protected static final OrmPackage JPA_CORE_XML_PKG =
+ OrmPackage.eINSTANCE;
+
+
+ private Translator[] children;
+
+ public GeneratorTranslator(String domNameAndPath, EStructuralFeature aFeature, int style) {
+ super(domNameAndPath, aFeature, style);
+ }
+
+ public Translator[] getChildren(Object target, int versionID) {
+ if (children == null) {
+ children = createChildren();
+ }
+ return children;
+ }
+
+ protected abstract Translator[] createChildren();
+
+
+ protected Translator createNameTranslator() {
+ return new Translator(GENERATOR__NAME, MAPPINGS_PKG.getIGenerator_Name(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createInitialValueTranslator() {
+ return new Translator(GENERATOR__INITIAL_VALUE, MAPPINGS_PKG.getIGenerator_SpecifiedInitialValue(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createAllocationSizeTranslator() {
+ return new Translator(GENERATOR__ALLOCATION_SIZE, MAPPINGS_PKG.getIGenerator_SpecifiedAllocationSize(), DOM_ATTRIBUTE);
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/IdTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/IdTranslator.java
new file mode 100644
index 0000000000..076c1aead3
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/IdTranslator.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.mappings.IId;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class IdTranslator extends AttributeMappingTranslator
+{
+ private ColumnTranslator columnTranslator;
+
+ public IdTranslator() {
+ super(ID, NO_STYLE);
+ this.columnTranslator = createColumnTranslator();
+ }
+
+ private ColumnTranslator createColumnTranslator() {
+ return new ColumnTranslator(COLUMN, JPA_CORE_XML_PKG.getIXmlColumnMapping_ColumnForXml());
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ IId xmlId = JPA_CORE_XML_FACTORY.createXmlId();
+ this.columnTranslator.setColumnMapping(xmlId);
+ return xmlId;
+ }
+
+ @Override
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ columnTranslator,
+ createGeneratedValueTranslator(),
+ createTemporalTranslator(),
+ createTableGeneratorTranslator(),
+ createSequenceGeneratorTranslator(),
+ };
+ }
+
+ private Translator createGeneratedValueTranslator() {
+ return new GeneratedValueTranslator(GENERATED_VALUE, JpaCoreMappingsPackage.eINSTANCE.getIId_GeneratedValue());
+ }
+
+ private Translator createTemporalTranslator() {
+ return new TemporalTypeElementTranslator(ID__TEMPORAL, JpaCoreMappingsPackage.eINSTANCE.getIId_Temporal(), NO_STYLE);
+ }
+
+ private Translator createTableGeneratorTranslator() {
+ return new TableGeneratorTranslator(TABLE_GENERATOR, JpaCoreMappingsPackage.eINSTANCE.getIId_TableGenerator());
+ }
+
+ private Translator createSequenceGeneratorTranslator() {
+ return new SequenceGeneratorTranslator(SEQUENCE_GENERATOR, JpaCoreMappingsPackage.eINSTANCE.getIId_SequenceGenerator());
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/JoinColumnTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/JoinColumnTranslator.java
new file mode 100644
index 0000000000..95472e4324
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/JoinColumnTranslator.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class JoinColumnTranslator extends AbstractColumnTranslator
+ implements OrmXmlMapper
+{
+ private JoinColumnBuilder joinColumnBuilder;
+
+ public JoinColumnTranslator(String domNameAndPath, EStructuralFeature aFeature, JoinColumnBuilder joinColumnBuilder) {
+ super(domNameAndPath, aFeature);
+ this.joinColumnBuilder = joinColumnBuilder;
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return joinColumnBuilder.createJoinColumn();
+ }
+
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createReferencedColumnNameTranslator(),
+ createUniqueTranslator(),
+ createNullableTranslator(),
+ createInsertableTranslator(),
+ createUpdatableTranslator(),
+ createColumnDefinitionTranslator(),
+ createTableTranslator(),
+ };
+ }
+
+ protected Translator createReferencedColumnNameTranslator() {
+ return new Translator(REFERENCED_COLUMN_NAME, JPA_CORE_XML_PKG.getXmlJoinColumn_SpecifiedReferencedColumnNameForXml(), DOM_ATTRIBUTE);
+ }
+
+ public interface JoinColumnBuilder {
+ IJoinColumn createJoinColumn();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/JoinTableTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/JoinTableTranslator.java
new file mode 100644
index 0000000000..a84833a83d
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/JoinTableTranslator.java
@@ -0,0 +1,87 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.content.orm.OrmFactory;
+import org.eclipse.jpt.core.internal.content.orm.resource.JoinColumnTranslator.JoinColumnBuilder;
+import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.core.internal.mappings.IJoinTable.InverseJoinColumnOwner;
+import org.eclipse.jpt.core.internal.mappings.IJoinTable.JoinColumnOwner;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class JoinTableTranslator extends AbstractTableTranslator
+{
+
+ private IMultiRelationshipMapping mapping;
+
+
+ public JoinTableTranslator() {
+ super(JOIN_TABLE, JPA_CORE_XML_PKG.getXmlMultiRelationshipMappingForXml_JoinTableForXml());
+ }
+
+ protected IMultiRelationshipMapping getMapping() {
+ return this.mapping;
+ }
+
+ void setMapping(IMultiRelationshipMapping mapping) {
+ this.mapping = mapping;
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return getMapping().getJoinTable();
+ }
+
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createCatalogTranslator(),
+ createSchemaTranslator(),
+ createJoinColumnsTranslator(),
+ createInverseJoinColumnsTranslator(),
+ createUniqueConstraintTranslator(),
+ };
+ }
+
+ protected Translator createJoinColumnsTranslator() {
+ return new JoinColumnTranslator(
+ JOIN_COLUMN,
+ JpaCoreMappingsPackage.eINSTANCE.getIJoinTable_SpecifiedJoinColumns(),
+ buildJoinColumnsBuilder());
+ }
+
+ private JoinColumnBuilder buildJoinColumnsBuilder() {
+ return new JoinColumnBuilder() {
+ public IJoinColumn createJoinColumn() {
+ return OrmFactory.eINSTANCE.createXmlJoinColumn(new JoinColumnOwner(getMapping().getJoinTable()));
+ }
+ };
+ }
+
+ protected Translator createInverseJoinColumnsTranslator() {
+ return new JoinColumnTranslator(
+ INVERSE_JOIN_COLUMN,
+ JpaCoreMappingsPackage.eINSTANCE.getIJoinTable_SpecifiedInverseJoinColumns(),
+ buildInverseJoinColumnsBuilder());
+ }
+
+ private JoinColumnBuilder buildInverseJoinColumnsBuilder() {
+ return new JoinColumnBuilder() {
+ public IJoinColumn createJoinColumn() {
+ return OrmFactory.eINSTANCE.createXmlJoinColumn(new InverseJoinColumnOwner(getMapping().getJoinTable()));
+ }
+ };
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/ManyToManyTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/ManyToManyTranslator.java
new file mode 100644
index 0000000000..1321cf3537
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/ManyToManyTranslator.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.content.orm.XmlManyToMany;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class ManyToManyTranslator extends MultiRelationshipTranslator
+{
+ public ManyToManyTranslator() {
+ super(MANY_TO_MANY);
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ XmlManyToMany mapping = JPA_CORE_XML_FACTORY.createXmlManyToMany();
+ this.getJoinTableTranslator().setMapping(mapping);
+ //this.getOrderByTranslator().setMapping(mapping);
+ return mapping;
+ }
+
+ @Override
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createTargetEntityTranslator(),
+ createFetchTypeTranslator(),
+ createMappedByTranslator(),
+ createOrderByTranslator(),
+ //getOrderByTranslator(),
+ createMapKeyTranslator(),
+ getJoinTableTranslator(),
+ createCascadeTranslator()
+ };
+ }
+ protected Translator createMappedByTranslator() {
+ return new Translator(MAPPED_BY, JpaCoreMappingsPackage.eINSTANCE.getINonOwningMapping_MappedBy(), DOM_ATTRIBUTE);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/ManyToOneTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/ManyToOneTranslator.java
new file mode 100644
index 0000000000..73929fe56f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/ManyToOneTranslator.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class ManyToOneTranslator extends SingleRelationshipTranslator
+{
+ public ManyToOneTranslator() {
+ super(MANY_TO_ONE);
+ }
+
+ @Override
+ protected ISingleRelationshipMapping createMapping() {
+ return JPA_CORE_XML_FACTORY.createXmlManyToOne();
+ }
+
+ @Override
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createTargetEntityTranslator(),
+ createFetchTypeTranslator(),
+ createJoinColumnsTranslator(),
+ createCascadeTranslator()
+ };
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/MappedSuperclassTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/MappedSuperclassTranslator.java
new file mode 100644
index 0000000000..9851844640
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/MappedSuperclassTranslator.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class MappedSuperclassTranslator extends TypeMappingTranslator
+{
+ protected static final OrmPackage XML_PKG =
+ OrmPackage.eINSTANCE;
+
+
+ public MappedSuperclassTranslator() {
+ super(MAPPED_SUPERCLASS);
+ }
+
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return JPA_CORE_XML_FACTORY.createXmlMappedSuperclass();
+ }
+
+ @Override
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createJavaClassTranslator(),
+ createAccessTypeTranslator(),
+ createMetadataCompleteTranslator(),
+ createPlaceHolderTranslator(ENTITY__DESCRIPTION),
+ createPlaceHolderTranslator(ENTITY__ID_CLASS),
+ createPlaceHolderTranslator(ENTITY__EXCLUDE_DEFAULT_LISTENERS),
+ createPlaceHolderTranslator(ENTITY__EXCLUDE_SUPERCLASS_LISTENERS),
+ createPlaceHolderTranslator(ENTITY__ENTITY_LISTENERS),
+ createPlaceHolderTranslator(ENTITY__PRE_PERSIST),
+ createPlaceHolderTranslator(ENTITY__POST_PERSIST),
+ createPlaceHolderTranslator(ENTITY__PRE_REMOVE),
+ createPlaceHolderTranslator(ENTITY__POST_REMOVE),
+ createPlaceHolderTranslator(ENTITY__PRE_UPDATE),
+ createPlaceHolderTranslator(ENTITY__POST_UPDATE),
+ createPlaceHolderTranslator(ENTITY__POST_LOAD),
+ createPersistentAttributesTranslator()
+ };
+ }
+
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/MultiObjectDependencyTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/MultiObjectDependencyTranslator.java
new file mode 100644
index 0000000000..41d8845714
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/MultiObjectDependencyTranslator.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import java.util.HashMap;
+import java.util.Map;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.wst.common.internal.emf.resource.DependencyTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public abstract class MultiObjectDependencyTranslator extends DependencyTranslator
+{
+ private static final Translator[] EMPTY_TRANSLATORS = new Translator[]{};
+
+
+ private Map<EObject, Translator> translatorMap;
+
+ public MultiObjectDependencyTranslator(String domNameAndPath, EStructuralFeature aFeature, EStructuralFeature aDependentFeature) {
+ super(domNameAndPath, aFeature, aDependentFeature);
+ this.translatorMap = new HashMap<EObject, Translator>();
+ }
+
+
+ public Translator getDelegateFor(EObject o) {
+ return translatorMap.get(o);
+ }
+
+ public abstract Translator getDelegateFor(String domName, String readAheadName);
+
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ Translator translator = getDelegateFor(nodeName, readAheadName);
+ EObject eObject = translator.createEMFObject(nodeName, readAheadName);
+ this.translatorMap.put(eObject, translator);
+ return eObject;
+ }
+
+ public Translator[] getChildren(Object o, int version) {
+ if (o == null) {
+ return EMPTY_TRANSLATORS;
+ }
+ Translator[] children = getDelegateFor((EObject) o).getChildren(o, version);
+ if (children == null) {
+ return EMPTY_TRANSLATORS;
+ }
+ return children;
+ }
+
+ public String getDOMName(Object value) {
+ return getDelegateFor((EObject) value).getDOMName(value);
+ }
+
+ public boolean isManagedByParent() {
+ return false;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/MultiRelationshipTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/MultiRelationshipTranslator.java
new file mode 100644
index 0000000000..3a7de3df71
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/MultiRelationshipTranslator.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public abstract class MultiRelationshipTranslator extends RelationshipTranslator
+{
+ private JoinTableTranslator tableTranslator;
+
+ //private OrderByRefTranslator orderByTranslator;
+
+ public MultiRelationshipTranslator(String domNameAndPath) {
+ super(domNameAndPath);
+ this.tableTranslator = createTableTranslator();
+ //this.orderByTranslator = createOrderByTranslator();
+ }
+
+ protected Translator createFetchTypeTranslator() {
+ return new EnumeratorTranslator(FETCH, JpaCoreMappingsPackage.eINSTANCE.getIMultiRelationshipMapping_Fetch(), DOM_ATTRIBUTE);
+ }
+
+ protected JoinTableTranslator getJoinTableTranslator() {
+ return this.tableTranslator;
+ }
+
+ protected JoinTableTranslator createTableTranslator() {
+ this.tableTranslator = new JoinTableTranslator();
+ return this.tableTranslator;
+ }
+
+// protected OrderByRefTranslator getOrderByTranslator() {
+// return this.orderByTranslator;
+// }
+//
+// protected OrderByRefTranslator createOrderByTranslator() {
+// this.orderByTranslator = new OrderByRefTranslator();
+// return this.orderByTranslator;
+// }
+
+ protected Translator createOrderByTranslator() {
+ return new Translator(ORDER_BY , (EStructuralFeature) null);
+ }
+
+ //placeholder until we support in our model, this allow us
+ //to keep the elements in the proper order
+ protected Translator createMapKeyTranslator() {
+ return new Translator(MAP_KEY , (EStructuralFeature) null);
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/NamedNativeQueryTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/NamedNativeQueryTranslator.java
new file mode 100644
index 0000000000..480a67f36b
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/NamedNativeQueryTranslator.java
@@ -0,0 +1,77 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.content.orm.OrmFactory;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class NamedNativeQueryTranslator extends Translator implements OrmXmlMapper
+{
+ protected static final JpaCoreMappingsPackage MAPPINGS_PKG =
+ JpaCoreMappingsPackage.eINSTANCE;
+ protected static final OrmPackage JPA_CORE_XML_PKG =
+ OrmPackage.eINSTANCE;
+
+
+ private Translator[] children;
+
+ public NamedNativeQueryTranslator(String domNameAndPath, EStructuralFeature aFeature) {
+ super(domNameAndPath, aFeature, NO_STYLE);
+ }
+
+ public Translator[] getChildren(Object target, int versionID) {
+ if (children == null) {
+ children = createChildren();
+ }
+ return children;
+ }
+
+
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createResultClassTranslator(),
+ createResultSetMappingTranslator(),
+ createQueryTranslator(),
+ createQueryHintTranslator(),
+ };
+ }
+
+ protected Translator createNameTranslator() {
+ return new Translator(NAMED_NATIVE_QUERY__NAME, MAPPINGS_PKG.getIQuery_Name(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createQueryTranslator() {
+ return new Translator(NAMED_NATIVE_QUERY__QUERY, MAPPINGS_PKG.getIQuery_Query(), NO_STYLE);
+ }
+
+ protected Translator createResultClassTranslator() {
+ return new Translator(NAMED_NATIVE_QUERY__RESULT_CLASS, MAPPINGS_PKG.getINamedNativeQuery_ResultClass(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createResultSetMappingTranslator() {
+ return new Translator(NAMED_NATIVE_QUERY__RESULT_SET_MAPPING, MAPPINGS_PKG.getINamedNativeQuery_ResultSetMapping(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createQueryHintTranslator() {
+ return new QueryHintTranslator(NAMED_NATIVE_QUERY__HINT, MAPPINGS_PKG.getIQuery_Hints());
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return OrmFactory.eINSTANCE.createXmlNamedQuery();
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/NamedQueryTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/NamedQueryTranslator.java
new file mode 100644
index 0000000000..44afa3ce69
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/NamedQueryTranslator.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.content.orm.OrmFactory;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class NamedQueryTranslator extends Translator implements OrmXmlMapper
+{
+ protected static final JpaCoreMappingsPackage MAPPINGS_PKG =
+ JpaCoreMappingsPackage.eINSTANCE;
+ protected static final OrmPackage JPA_CORE_XML_PKG =
+ OrmPackage.eINSTANCE;
+
+
+ private Translator[] children;
+
+ public NamedQueryTranslator(String domNameAndPath, EStructuralFeature aFeature) {
+ super(domNameAndPath, aFeature, NO_STYLE);
+ }
+
+ public Translator[] getChildren(Object target, int versionID) {
+ if (children == null) {
+ children = createChildren();
+ }
+ return children;
+ }
+
+
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createQueryTranslator(),
+ createQueryHintTranslator(),
+ };
+ }
+
+ protected Translator createNameTranslator() {
+ return new Translator(NAMED_QUERY__NAME, MAPPINGS_PKG.getIQuery_Name(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createQueryTranslator() {
+ return new Translator(NAMED_QUERY__QUERY, MAPPINGS_PKG.getIQuery_Query(), NO_STYLE);
+ }
+
+ protected Translator createQueryHintTranslator() {
+ return new QueryHintTranslator(NAMED_QUERY__HINT, MAPPINGS_PKG.getIQuery_Hints());
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return OrmFactory.eINSTANCE.createXmlNamedQuery();
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OneToManyTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OneToManyTranslator.java
new file mode 100644
index 0000000000..53857d8d6f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OneToManyTranslator.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.content.orm.XmlOneToMany;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class OneToManyTranslator extends MultiRelationshipTranslator
+{
+ public OneToManyTranslator() {
+ super(ONE_TO_MANY);
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ XmlOneToMany mapping = JPA_CORE_XML_FACTORY.createXmlOneToMany();
+ this.getJoinTableTranslator().setMapping(mapping);
+ //this.getOrderByTranslator().setMapping(mapping);
+ return mapping;
+ }
+
+ @Override
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createTargetEntityTranslator(),
+ createFetchTypeTranslator(),
+ createMappedByTranslator(),
+ createOrderByTranslator(),
+ //getOrderByTranslator(),
+ createMapKeyTranslator(),
+ getJoinTableTranslator(),
+ createCascadeTranslator()
+ };
+ }
+
+ protected Translator createMappedByTranslator() {
+ return new Translator(MAPPED_BY, JpaCoreMappingsPackage.eINSTANCE.getINonOwningMapping_MappedBy(), DOM_ATTRIBUTE);
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OneToOneTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OneToOneTranslator.java
new file mode 100644
index 0000000000..6954e93e32
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OneToOneTranslator.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class OneToOneTranslator extends SingleRelationshipTranslator
+{
+ public OneToOneTranslator() {
+ super(ONE_TO_ONE);
+ }
+
+ @Override
+ protected ISingleRelationshipMapping createMapping() {
+ return JPA_CORE_XML_FACTORY.createXmlOneToOne();
+ }
+
+ @Override
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createTargetEntityTranslator(),
+ createFetchTypeTranslator(),
+ createPlaceHolderTranslator(ONE_TO_ONE__PRIMARY_KEY_JOIN_COLUMNS),
+ createJoinColumnsTranslator(),
+ createPlaceHolderTranslator(ONE_TO_ONE__JOIN_TABLE),
+ createCascadeTranslator()
+ };
+ }
+ private Translator createPlaceHolderTranslator(String domNameAndPath) {
+ return new Translator(domNameAndPath, (EStructuralFeature) null);
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrderByRefTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrderByRefTranslator.java
new file mode 100644
index 0000000000..a2a282ec02
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrderByRefTranslator.java
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.jpt.core.internal.mappings.OrderingType;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class OrderByRefTranslator extends Translator implements OrmXmlMapper
+{
+ protected static final OrmPackage JPA_CORE_XML_PKG =
+ OrmPackage.eINSTANCE;
+
+ private static Translator[] children;
+
+ private IMultiRelationshipMapping mapping;
+
+ public OrderByRefTranslator() {
+ super(ORDER_BY, JPA_CORE_XML_PKG.getXmlMultiRelationshipMappingForXml_OrderByForXml());
+ this.fStyle = EMPTY_TAG;
+ }
+
+
+ public Translator[] getChildren(Object target, int versionID) {
+ if (children == null) {
+ children = createChildren();
+ }
+ return children;
+ }
+
+ private static Translator[] createChildren() {
+ return new Translator[] {
+ new Translator(TEXT_ATTRIBUTE_VALUE, JpaCoreMappingsPackage.eINSTANCE.getIOrderBy_Value())
+ };
+ }
+
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return this.mapping.getOrderBy();
+ }
+
+ protected IMultiRelationshipMapping getMapping() {
+ return this.mapping;
+ }
+
+ void setMapping(IMultiRelationshipMapping mapping) {
+ this.mapping = mapping;
+ }
+
+ @Override
+ public Object convertStringToValue(String strValue, EObject owner) {
+ if (strValue == null) {
+ if (mapping.getOrderBy().getType() == OrderingType.PRIMARY_KEY) {
+ return Boolean.TRUE;
+ }
+ }
+ return super.convertStringToValue(strValue, owner);
+ }
+
+ public boolean isSetMOFValue(EObject emfObject) {
+ boolean isSet = feature != null && emfObject.eIsSet(feature);
+ return isSet && (mapping.getOrderBy().getType() == OrderingType.PRIMARY_KEY);
+ }
+
+ @Override
+ public boolean isManagedByParent() {
+ return (mapping.getOrderBy().getType() == OrderingType.PRIMARY_KEY);
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrmXmlMapper.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrmXmlMapper.java
new file mode 100644
index 0000000000..d45e5b3cec
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrmXmlMapper.java
@@ -0,0 +1,168 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+public interface OrmXmlMapper
+{
+ String XML_NS = "xmlns"; //$NON-NLS-1$
+ String XML_NS_XSI = "xmlns:xsi"; //$NON-NLS-1$
+ String XSI_SCHEMA_LOCATION = "xsi:schemaLocation"; //$NON-NLS-1$
+ String XSI_NS_URL = "http://www.w3.org/2001/XMLSchema-instance"; //$NON-NLS-1$
+ String PERSISTENCE_NS_URL = "http://java.sun.com/xml/ns/persistence/orm"; //$NON-NLS-1$
+ String ORM_SCHEMA_LOC_1_0 = "http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"; //$NON-NLS-1$
+
+ String FOO="foo"; //$NON-NLS-1$
+ String BAR="bar"; //$NON-NLS-1$
+
+ String ACCESS = "access"; //$NON-NLS-1$
+ String ATTRIBUTES = "attributes"; //$NON-NLS-1$
+ String ATTRIBUTE_OVERRIDE_NAME = "name"; //$NON-NLS-1$
+ String ATTRIBUTE_OVERRIDE_COLUMN = "column"; //$NON-NLS-1$
+ String ASSOCIATION_OVERRIDE_NAME = "name"; //$NON-NLS-1$
+ String ASSOCIATION_OVERRIDE_JOIN_COLUMN = "join-column"; //$NON-NLS-1$
+ String BASIC = "basic"; //$NON-NLS-1$
+ String BASIC__ENUMERATED = "enumerated"; //$NON-NLS-1$
+
+ String CASCADE = "cascade"; //$NON-NLS-1$
+ String CASCADE_PERSIST = "cascade-persist"; //$NON-NLS-1$
+ String CATALOG = "catalog"; //$NON-NLS-1$
+ String CLASS = "class"; //$NON-NLS-1$
+ String COLUMN = "column"; //$NON-NLS-1$
+ String COLUMN__LENGTH = "length"; //$NON-NLS-1$
+ String COLUMN__PRECISION= "precision"; //$NON-NLS-1$
+ String COLUMN__SCALE= "scale"; //$NON-NLS-1$
+ String COLUMN__COLUMN_DEFINITION= "column-definition"; //$NON-NLS-1$
+ String COLUMN__NULLABLE = "nullable"; //$NON-NLS-1$
+ String COLUMN__UNIQUE = "unique"; //$NON-NLS-1$
+ String COLUMN__UPDATABLE = "updatable"; //$NON-NLS-1$
+ String COLUMN__INSERTABLE = "insertable"; //$NON-NLS-1$
+ String COLUMN__TABLE = "table"; //$NON-NLS-1$
+ String COLUMN__NAME = "name"; //$NON-NLS-1$
+
+ String DISCRIMINATOR_COLUMN__NAME = "name"; //$NON-NLS-1$
+ String DISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE = "discriminator-type"; //$NON-NLS-1$
+ String DISCRIMINATOR_COLUMN__COLUMN_DEFINITION = "column-definition"; //$NON-NLS-1$
+ String DISCRIMINATOR_COLUMN__LENGTH = "length"; //$NON-NLS-1$
+ String EMBEDDABLE = "embeddable"; //$NON-NLS-1$
+ String EMBEDDABLE__DESCRIPTION = "description"; //$NON-NLS-1$
+
+ String EMBEDDED = "embedded"; //$NON-NLS-1$
+ String EMBEDDED__ATTRIBUTE_OVERRIDE = "attribute-override"; //$NON-NLS-1$
+ String EMBEDDED_ID = "embedded-id"; //$NON-NLS-1$
+ String EMBEDDED_ID__ATTRIBUTE_OVERRIDE = "attribute-override"; //$NON-NLS-1$
+
+ String ENTITY = "entity"; //$NON-NLS-1$
+ String ENTITY__DESCRIPTION = "description"; //$NON-NLS-1$
+ String ENTITY__TABLE = "table"; //$NON-NLS-1$
+ String ENTITY__PRIMARY_KEY_JOIN_COLUMN = "primary-key-join-column"; //$NON-NLS-1$
+ String ENTITY__ID_CLASS = "id-class"; //$NON-NLS-1$
+ String ENTITY__INHERITANCE = "inheritance"; //$NON-NLS-1$
+ String ENTITY__DISCRIMINATOR_VALUE = "discriminator-value"; //$NON-NLS-1$
+ String ENTITY__DISCRIMINATOR_COLUMN = "discriminator-column"; //$NON-NLS-1$
+ String ENTITY__SEQUENCE_GENERATOR = "sequence-generator"; //$NON-NLS-1$
+ String ENTITY__TABLE_GENERATOR = "table-generator"; //$NON-NLS-1$
+ String ENTITY__NAMED_QUERY = "named-query"; //$NON-NLS-1$
+ String ENTITY__NAMED_NATIVE_QUERY = "named-native-query"; //$NON-NLS-1$
+ String ENTITY__SQL_RESULT_SET_MAPPING = "sql-result-set-mapping"; //$NON-NLS-1$
+ String ENTITY__EXCLUDE_DEFAULT_LISTENERS = "exclude-default-listeners"; //$NON-NLS-1$
+ String ENTITY__EXCLUDE_SUPERCLASS_LISTENERS = "exclude-superclass-listeners"; //$NON-NLS-1$
+ String ENTITY__ENTITY_LISTENERS = "entity-listeners"; //$NON-NLS-1$
+ String ENTITY__PRE_PERSIST = "pre-persist"; //$NON-NLS-1$
+ String ENTITY__POST_PERSIST = "post-persist"; //$NON-NLS-1$
+ String ENTITY__PRE_REMOVE = "pre-remove"; //$NON-NLS-1$
+ String ENTITY__POST_REMOVE = "post-remove"; //$NON-NLS-1$
+ String ENTITY__PRE_UPDATE = "pre-update"; //$NON-NLS-1$
+ String ENTITY__POST_UPDATE = "post-update"; //$NON-NLS-1$
+ String ENTITY__POST_LOAD = "post-load"; //$NON-NLS-1$
+ String ENTITY__ATTRIBUTE_OVERRIDE = "attribute-override"; //$NON-NLS-1$
+ String ENTITY__ASSOCIATION_OVERRIDE = "association-override"; //$NON-NLS-1$
+
+ String ENTITY_MAPPINGS = "entity-mappings"; //$NON-NLS-1$
+ String ENTITY_MAPPINGS__DESCRIPTION = "description"; //$NON-NLS-1$
+ String ENTITY_MAPPINGS__PERSISTENCE_UNIT_METADATA = "persistence-unit-metadata"; //$NON-NLS-1$
+ String ENTITY_MAPPINGS__PACKAGE = "package"; //$NON-NLS-1$
+ String ENTITY_MAPPINGS__SCHEMA = "schema"; //$NON-NLS-1$
+ String ENTITY_MAPPINGS__CATALOG = "catalog"; //$NON-NLS-1$
+ String ENTITY_MAPPINGS__ACCESS = "access"; //$NON-NLS-1$
+ String ENTITY_MAPPINGS__SEQUENCE_GENERATOR = "sequence-generator"; //$NON-NLS-1$
+ String ENTITY_MAPPINGS__TABLE_GENERATOR = "table-generator"; //$NON-NLS-1$
+ String ENTITY_MAPPINGS__NAMED_QUERY = "named-query"; //$NON-NLS-1$
+ String ENTITY_MAPPINGS__NAMED_NATIVE_QUERY = "named-native-query"; //$NON-NLS-1$
+ String ENTITY_MAPPINGS__SQL_RESULT_SET_MAPPING = "sql-result-set-mapping"; //$NON-NLS-1$
+
+ String FETCH = "fetch"; //$NON-NLS-1$
+ String JOIN_COLUMN = "join-column"; //$NON-NLS-1$
+ String JOIN_TABLE = "join-table"; //$NON-NLS-1$
+ String ID = "id"; //$NON-NLS-1$
+ String ID__TEMPORAL = "temporal"; //$NON-NLS-1$
+ String GENERATED_VALUE = "generated-value"; //$NON-NLS-1$
+ String GENERATED_VALUE__STRATEGY = "strategy"; //$NON-NLS-1$
+ String GENERATED_VALUE__GENERATOR = "generator"; //$NON-NLS-1$
+ String GENERATOR__NAME = "name"; //$NON-NLS-1$
+ String GENERATOR__INITIAL_VALUE = "initial-value"; //$NON-NLS-1$
+ String GENERATOR__ALLOCATION_SIZE = "allocation-size"; //$NON-NLS-1$
+
+ String INVERSE_JOIN_COLUMN = "inverse-join-column"; //$NON-NLS-1$
+ String LOB = "lob"; //$NON-NLS-1$
+ String MANY_TO_MANY = "many-to-many"; //$NON-NLS-1$
+ String MANY_TO_ONE = "many-to-one"; //$NON-NLS-1$
+ String MAP_KEY = "map-key"; //$NON-NLS-1$
+ String MAPPED_BY = "mapped-by"; //$NON-NLS-1$
+ String MAPPED_SUPERCLASS = "mapped-superclass"; //$NON-NLS-1$
+ String METADATA_COMPLETE = "metadata-complete"; //$NON-NLS-1$
+ String NAME = "name"; //$NON-NLS-1$
+
+ String NAMED_NATIVE_QUERY = "named-native-query"; //$NON-NLS-1$
+ String NAMED_NATIVE_QUERY__NAME = "name"; //$NON-NLS-1$
+ String NAMED_NATIVE_QUERY__QUERY = "query"; //$NON-NLS-1$
+ String NAMED_NATIVE_QUERY__RESULT_CLASS = "result-class"; //$NON-NLS-1$
+ String NAMED_NATIVE_QUERY__RESULT_SET_MAPPING = "result-set-mapping"; //$NON-NLS-1$
+ String NAMED_NATIVE_QUERY__HINT = "hint"; //$NON-NLS-1$
+
+ String NAMED_QUERY = "named-query"; //$NON-NLS-1$
+ String NAMED_QUERY__NAME = "name"; //$NON-NLS-1$
+ String NAMED_QUERY__QUERY = "query"; //$NON-NLS-1$
+ String NAMED_QUERY__HINT = "hint"; //$NON-NLS-1$
+
+ String QUERY_HINT__NAME = "name"; //$NON-NLS-1$
+ String QUERY_HINT__VALUE = "value"; //$NON-NLS-1$
+
+ String ONE_TO_MANY = "one-to-many"; //$NON-NLS-1$
+ String ONE_TO_ONE = "one-to-one"; //$NON-NLS-1$
+ String ONE_TO_ONE__PRIMARY_KEY_JOIN_COLUMNS = "primary-key-join-columns"; //$NON-NLS-1$
+ String ONE_TO_ONE__JOIN_TABLE = "join-table"; //$NON-NLS-1$
+
+ String OPTIONAL = "optional"; //$NON-NLS-1$
+ String ORDER_BY = "order-by"; //$NON-NLS-1$
+ String PACKAGE="package"; //$NON-NLS-1$
+ String PERSISTENCE_UNIT_DEFAULTS="persistence-unit-defaults"; //$NON-NLS-1$
+ String PERSISTENCE_UNIT_DEFAULTS__ENTITY_LISTENERS="entity-listeners"; //$NON-NLS-1$
+
+ String PERSISTENCE_UNIT_METADATA="persistence-unit-metadata"; //$NON-NLS-1$
+ String REFERENCED_COLUMN_NAME="referenced-column-name"; //$NON-NLS-1$
+ String SCHEMA="schema"; //$NON-NLS-1$
+ String SECONDARY_TABLE = "secondary-table"; //$NON-NLS-1$
+ String SECONDARY_TABLE__PRIMARY_KEY_JOIN_COLUMN = "primary-key-join-column"; //$NON-NLS-1$
+ String SEQUENCE_GENERATOR = "sequence-generator"; //$NON-NLS-1$
+ String SEQUENCE_GENERATOR__SEQUENCE_NAME = "sequence-name"; //$NON-NLS-1$
+ String STRATEGY = "strategy"; //$NON-NLS-1$
+ String TABLE_GENERATOR = "table-generator"; //$NON-NLS-1$
+ String TABLE_GENERATOR__TABLE = "table"; //$NON-NLS-1$
+ String TABLE_GENERATOR__CATALOG = "catalog"; //$NON-NLS-1$
+ String TABLE_GENERATOR__SCHEMA = "schema"; //$NON-NLS-1$
+ String TABLE_GENERATOR__PK_COLUMN_NAME = "pk-column-name"; //$NON-NLS-1$
+ String TABLE_GENERATOR__VALUE_COLUMN_NAME = "value-column-name"; //$NON-NLS-1$
+ String TABLE_GENERATOR__PK_COLUMN_VALUE = "pk-column-value"; //$NON-NLS-1$
+ String TARGET_ENTITY = "target-entity"; //$NON-NLS-1$
+ String TEMPORAL = "temporal"; //$NON-NLS-1$
+ String TRANSIENT = "transient"; //$NON-NLS-1$
+ String UNIQUE_CONSTRAINT = "unique-constraint"; //$NON-NLS-1$
+ String VERSION = "version"; //$NON-NLS-1$
+ String XML_MAPPING_METADATA_COMPLETE = "xml-mapping-metadata-complete"; //$NON-NLS-1$
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrmXmlResourceFactory.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrmXmlResourceFactory.java
new file mode 100644
index 0000000000..684c7d411c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrmXmlResourceFactory.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.wst.common.componentcore.internal.impl.WTPResourceFactoryRegistry;
+import org.eclipse.wst.common.internal.emf.resource.Renderer;
+import org.eclipse.wst.common.internal.emf.resource.RendererFactory;
+import org.eclipse.wst.common.internal.emf.resource.TranslatorResource;
+import org.eclipse.wst.common.internal.emf.resource.TranslatorResourceFactory;
+import org.eclipse.wst.xml.core.internal.emf2xml.EMF2DOMSSERendererFactory;
+
+public class OrmXmlResourceFactory extends TranslatorResourceFactory
+{
+ public static final String ORM_XML_FILE_NAME = "orm.xml"; //$NON-NLS-1$
+ public static final URI ORM_XML_FILE_URI = URI.createURI(ORM_XML_FILE_NAME); //$NON-NLS-1$
+
+ /**
+ * Register myself with the Resource.Factory.Registry
+ */
+ public static void registerWith(RendererFactory rendererFactory) {
+ WTPResourceFactoryRegistry.INSTANCE.registerLastFileSegment(ORM_XML_FILE_NAME, new OrmXmlResourceFactory(rendererFactory));
+ }
+
+ /**
+ * Register myself using the default renderer factory.
+ * @see #registerWith(RendererFactory)
+ */
+ public static void register() {
+ registerWith(EMF2DOMSSERendererFactory.INSTANCE);
+ }
+
+ public static Resource.Factory getRegisteredFactory() {
+ return WTPResourceFactoryRegistry.INSTANCE.getFactory(ORM_XML_FILE_URI);
+ }
+
+
+ public OrmXmlResourceFactory(RendererFactory aRendererFactory, boolean listeningForUpdates) {
+ super(aRendererFactory, listeningForUpdates);
+ }
+
+ public OrmXmlResourceFactory(RendererFactory aRendererFactory) {
+ super(aRendererFactory);
+ }
+
+ /**
+ * @see TranslatorResourceFactory#createResource(URI, Renderer)
+ */
+ protected TranslatorResource createResource(URI uri, Renderer renderer) {
+ return new OrmXmlResourceImpl(uri, renderer);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrmXmlResourceImpl.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrmXmlResourceImpl.java
new file mode 100644
index 0000000000..517725393b
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/OrmXmlResourceImpl.java
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal;
+import org.eclipse.jpt.core.internal.content.orm.OrmXmlResource;
+import org.eclipse.wst.common.internal.emf.resource.Renderer;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+import org.eclipse.wst.common.internal.emf.resource.TranslatorResource;
+import org.eclipse.wst.common.internal.emf.resource.TranslatorResourceImpl;
+
+public class OrmXmlResourceImpl extends TranslatorResourceImpl
+ implements OrmXmlResource
+{
+
+ private Translator rootTranslator;
+
+ public OrmXmlResourceImpl(Renderer aRenderer) {
+ super(aRenderer);
+ }
+
+ public OrmXmlResourceImpl(URI uri, Renderer aRenderer) {
+ super(uri, aRenderer);
+ }
+
+ /**
+ * @see TranslatorResourceImpl#getDefaultPublicId()
+ */
+ protected String getDefaultPublicId() {
+ return null;
+ // only applicable for DTD-based files
+ }
+
+ /**
+ * @see TranslatorResourceImpl#getDefaultSystemId()
+ */
+ protected String getDefaultSystemId() {
+ return null;
+ // only applicable for DTD-based files
+ }
+
+ /**
+ * @see TranslatorResourceImpl#getDefaultVersionId()
+ */
+ protected int getDefaultVersionID() {
+ return 10;
+ // this seems to be the default version of the spec for this doc
+ // and the id 10 maps to the version 1.0
+ }
+
+ /**
+ * @see TranslatorResource#getDoctype()
+ */
+ public String getDoctype() {
+ return null;
+ // only applicable for DTD-based files
+ }
+
+ /**
+ * @see TranslatorResource#getRootTranslator()
+ */
+ public Translator getRootTranslator() {
+ if (this.rootTranslator == null) {
+ this.rootTranslator = buildRootTranslator();
+ }
+ return this.rootTranslator;
+ }
+
+ protected Translator buildRootTranslator() {
+ return new EntityMappingsTranslator();
+ }
+
+ /**
+ * @see OrmXmlResource#getXmlFileContent()
+ */
+ public EntityMappingsInternal getXmlFileContent() {
+ return (EntityMappingsInternal) getRootObject();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/PersistenceUnitDefaultsTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/PersistenceUnitDefaultsTranslator.java
new file mode 100644
index 0000000000..b21860381d
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/PersistenceUnitDefaultsTranslator.java
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadata;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class PersistenceUnitDefaultsTranslator extends Translator implements OrmXmlMapper
+{
+ private Translator[] children;
+
+ private PersistenceUnitMetadata persistenceUnitMetadata;
+
+ public PersistenceUnitDefaultsTranslator() {
+ super(PERSISTENCE_UNIT_DEFAULTS, OrmPackage.eINSTANCE.getPersistenceUnitMetadataForXml_PersistenceUnitDefaultsForXml());
+ }
+
+ public Translator[] getChildren(Object target, int versionID) {
+ if (this.children == null) {
+ this.children = createChildren();
+ }
+ return this.children;
+ }
+
+ private Translator[] createChildren() {
+ return new Translator[] {
+ createSchemaTranslator(),
+ createCatalogTranslator(),
+ createAccessTranslator(),
+ createCascadePersistTranslator(),
+ createPlaceHolderTranslator(PERSISTENCE_UNIT_DEFAULTS__ENTITY_LISTENERS),
+ };
+ }
+
+ private Translator createPlaceHolderTranslator(String domNameAndPath) {
+ return new Translator(domNameAndPath, (EStructuralFeature) null);
+ }
+
+ private Translator createSchemaTranslator() {
+ return new Translator(SCHEMA, OrmPackage.eINSTANCE.getPersistenceUnitDefaultsForXml_SchemaForXml());
+ }
+
+ private Translator createCatalogTranslator() {
+ return new Translator(CATALOG, OrmPackage.eINSTANCE.getPersistenceUnitDefaultsForXml_CatalogForXml());
+ }
+
+ private Translator createAccessTranslator() {
+ return new AccessTypeElementTranslator(ACCESS, OrmPackage.eINSTANCE.getPersistenceUnitDefaultsForXml_AccessForXml(), NO_STYLE);
+ }
+
+ private Translator createCascadePersistTranslator() {
+ return new EmptyTagBooleanTranslator(CASCADE_PERSIST, OrmPackage.eINSTANCE.getPersistenceUnitDefaultsForXml_CascadePersistForXml());
+ }
+
+ @Override
+ //This is called when the persistence-unit-defaults tag is added
+ //by hand through the xml editor. In this situation PersistenceUnitMetaData.persistenceUnitDefaultsForXml
+ //is null and we don't want to create a new PersistenceUnitDefaults object, we just want to
+ //reuse the one already created by our internal model
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return getPersistenceUnitMetadata().getPersistenceUnitDefaults();
+ }
+
+ private PersistenceUnitMetadata getPersistenceUnitMetadata() {
+ return this.persistenceUnitMetadata;
+ }
+
+ void setPersistenceUnitMetadata(PersistenceUnitMetadata persistenceUnitMetadata) {
+ this.persistenceUnitMetadata = persistenceUnitMetadata;
+ }
+
+ @Override
+ //if my object has containtment = true then the translators clear out all adapters
+ //even the ones it didn't add. if i have containtment = false then the translators
+ //are not removing the adapter they added
+ // the shared flag gets set when containment=true. isShared() is called in
+ //EMF2DOMAdapterImpl.primUpdateMOFFeature which then calls removeMOFValue() if
+ //isShared() returns false. removeMOFValue() removes the EMF2DOMSSEAdapter
+ //and then since isContainment() = false the call to ExtendedEcoreUtil.unload(value);
+ // does not occur. In that method the adapters are all cleared out thus my UI
+ //no longer has listeners on the model. Talk to KFM about this and maybe
+ //she'll remember the details. \
+
+ //Need to enter a bug against the translators as well. Now one other
+ //adapter is not being removed, the AnnotationsAdapter, this is being added by the translators
+ //and never removed. not sure
+ public boolean isShared() {
+ return false;
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/PersistenceUnitMetadataTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/PersistenceUnitMetadataTranslator.java
new file mode 100644
index 0000000000..16deb48060
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/PersistenceUnitMetadataTranslator.java
@@ -0,0 +1,84 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.content.orm.EntityMappings;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadata;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class PersistenceUnitMetadataTranslator extends Translator implements OrmXmlMapper
+{
+ private Translator[] children;
+
+ private PersistenceUnitDefaultsTranslator persistenceUnitDefaultsTranslator;
+ private EntityMappings entityMappings;
+
+ public PersistenceUnitMetadataTranslator() {
+ super(PERSISTENCE_UNIT_METADATA, OrmPackage.eINSTANCE.getEntityMappingsForXml_PersistenceUnitMetadataForXml());
+ }
+
+ public Translator[] getChildren(Object target, int versionID) {
+ if (children == null) {
+ children = createChildren();
+ }
+ return children;
+ }
+
+ private Translator[] createChildren() {
+ return new Translator[] {
+ createXmlMappingMetadataCompleteTranslator(),
+ createPersistenceUnitDefaultsTranslator(),
+ };
+ }
+
+ private Translator createXmlMappingMetadataCompleteTranslator() {
+ return new EmptyTagBooleanTranslator(XML_MAPPING_METADATA_COMPLETE, OrmPackage.eINSTANCE.getPersistenceUnitMetadataForXml_XmlMappingMetadataCompleteForXml());
+ }
+
+ private Translator createPersistenceUnitDefaultsTranslator() {
+ this.persistenceUnitDefaultsTranslator = new PersistenceUnitDefaultsTranslator();
+ return this.persistenceUnitDefaultsTranslator;
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ PersistenceUnitMetadata persistenceUnitMetadata = getEntityMappings().getPersistenceUnitMetadata();
+ this.persistenceUnitDefaultsTranslator.setPersistenceUnitMetadata(persistenceUnitMetadata);
+ return persistenceUnitMetadata;
+ }
+
+ private EntityMappings getEntityMappings() {
+ return this.entityMappings;
+ }
+
+ public void setEntityMappings(EntityMappings entityMappings) {
+ this.entityMappings = entityMappings;
+ }
+
+ @Override
+ //if my object has containtment = true then the translators clear out all adapters
+ //even the ones it didn't add. if i have containtment = false then the translators
+ //are not removing the adapter they added
+ // the shared flag gets set when containment=true. isShared() is called in
+ //EMF2DOMAdapterImpl.primUpdateMOFFeature which then calls removeMOFValue() if
+ //isShared() returns false. removeMOFValue() removes the EMF2DOMSSEAdapter
+ //and then since isContainment() = false the call to ExtendedEcoreUtil.unload(value);
+ // does not occur. In that method the adapters are all cleared out thus my UI
+ //no longer has listeners on the model. Talk to KFM about this and maybe
+ //she'll remember the details. \
+
+ //Need to enter a bug against the translators as well. Now one other
+ //adapter is not being removed, the AnnotationsAdapter, this is being added by the translators
+ //and never removed. not sure
+ public boolean isShared() {
+ return false;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/PrimaryKeyJoinColumnTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/PrimaryKeyJoinColumnTranslator.java
new file mode 100644
index 0000000000..74a14c07a8
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/PrimaryKeyJoinColumnTranslator.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class PrimaryKeyJoinColumnTranslator extends AbstractColumnTranslator
+ implements OrmXmlMapper
+{
+ private PrimaryKeyJoinColumnBuilder joinColumnBuilder;
+
+ public PrimaryKeyJoinColumnTranslator(String domNameAndPath, EStructuralFeature aFeature, PrimaryKeyJoinColumnBuilder joinColumnBuilder) {
+ super(domNameAndPath, aFeature);
+ this.joinColumnBuilder = joinColumnBuilder;
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return joinColumnBuilder.createPrimaryKeyJoinColumn();
+ }
+
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createReferencedColumnNameTranslator(),
+ createColumnDefinitionTranslator(),
+ };
+ }
+
+ protected Translator createReferencedColumnNameTranslator() {
+ return new Translator(REFERENCED_COLUMN_NAME, JPA_CORE_XML_PKG.getXmlPrimaryKeyJoinColumn_SpecifiedReferencedColumnNameForXml(), DOM_ATTRIBUTE);
+ }
+
+ public interface PrimaryKeyJoinColumnBuilder {
+ IPrimaryKeyJoinColumn createPrimaryKeyJoinColumn();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/QueryHintTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/QueryHintTranslator.java
new file mode 100644
index 0000000000..502440429f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/QueryHintTranslator.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.content.orm.OrmFactory;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class QueryHintTranslator extends Translator implements OrmXmlMapper
+{
+ protected static final JpaCoreMappingsPackage MAPPINGS_PKG =
+ JpaCoreMappingsPackage.eINSTANCE;
+ protected static final OrmPackage JPA_CORE_XML_PKG =
+ OrmPackage.eINSTANCE;
+
+
+ private Translator[] children;
+
+ public QueryHintTranslator(String domNameAndPath, EStructuralFeature aFeature) {
+ super(domNameAndPath, aFeature, NO_STYLE);
+ }
+
+ public Translator[] getChildren(Object target, int versionID) {
+ if (children == null) {
+ children = createChildren();
+ }
+ return children;
+ }
+
+
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createValueTranslator(),
+ };
+ }
+
+ protected Translator createNameTranslator() {
+ return new Translator(QUERY_HINT__NAME, MAPPINGS_PKG.getIQueryHint_Name(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createValueTranslator() {
+ return new Translator(QUERY_HINT__VALUE, MAPPINGS_PKG.getIQueryHint_Value(), DOM_ATTRIBUTE);
+ }
+
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return OrmFactory.eINSTANCE.createXmlQueryHint();
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/RelationshipTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/RelationshipTranslator.java
new file mode 100644
index 0000000000..bddf4eb67a
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/RelationshipTranslator.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public abstract class RelationshipTranslator extends AttributeMappingTranslator
+{
+ public RelationshipTranslator(String domNameAndPath) {
+ super(domNameAndPath, NO_STYLE);
+ }
+
+ protected Translator createTargetEntityTranslator() {
+ return new Translator(TARGET_ENTITY, JpaCoreMappingsPackage.eINSTANCE.getIRelationshipMapping_SpecifiedTargetEntity(), DOM_ATTRIBUTE);
+ }
+
+ //placeholder until we support in our model, this allow us
+ //to keep the elements in the proper order
+ protected Translator createCascadeTranslator() {
+ return new Translator(CASCADE , (EStructuralFeature) null);
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/SecondaryTableTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/SecondaryTableTranslator.java
new file mode 100644
index 0000000000..169dc17ef3
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/SecondaryTableTranslator.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.mappings.IEntity;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class SecondaryTableTranslator extends AbstractTableTranslator
+{
+
+ private IEntity entity;
+
+ public SecondaryTableTranslator() {
+ super(SECONDARY_TABLE, JPA_CORE_XML_PKG.getXmlEntity_SpecifiedSecondaryTables());
+ }
+
+
+ protected IEntity getEntity() {
+ return this.entity;
+ }
+
+ void setEntity(IEntity entity) {
+ this.entity = entity;
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return getEntity().createSecondaryTable(0);
+ }
+
+
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createCatalogTranslator(),
+ createSchemaTranslator(),
+ createPrimaryKeyJoinColumnTranslator(),
+ createUniqueConstraintTranslator(),
+ };
+ }
+
+ //placeholder until we support primaryKeyJoinColumns
+ protected Translator createPrimaryKeyJoinColumnTranslator() {
+ return new Translator(SECONDARY_TABLE__PRIMARY_KEY_JOIN_COLUMN, (EStructuralFeature) null);
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/SequenceGeneratorTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/SequenceGeneratorTranslator.java
new file mode 100644
index 0000000000..e9b3d69c4a
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/SequenceGeneratorTranslator.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.content.orm.OrmFactory;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class SequenceGeneratorTranslator extends GeneratorTranslator
+{
+
+ public SequenceGeneratorTranslator(String domNameAndPath, EStructuralFeature aFeature) {
+ super(domNameAndPath, aFeature, NO_STYLE);
+ }
+
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createSequenceNameTranslator(),
+ createInitialValueTranslator(),
+ createAllocationSizeTranslator(),
+ };
+ }
+
+ protected Translator createSequenceNameTranslator() {
+ return new Translator(SEQUENCE_GENERATOR__SEQUENCE_NAME, MAPPINGS_PKG.getISequenceGenerator_SpecifiedSequenceName(), DOM_ATTRIBUTE);
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return OrmFactory.eINSTANCE.createXmlSequenceGenerator();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/SingleRelationshipTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/SingleRelationshipTranslator.java
new file mode 100644
index 0000000000..97851092f0
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/SingleRelationshipTranslator.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.content.orm.OrmFactory;
+import org.eclipse.jpt.core.internal.content.orm.resource.JoinColumnTranslator.JoinColumnBuilder;
+import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public abstract class SingleRelationshipTranslator extends RelationshipTranslator
+{
+ private ISingleRelationshipMapping singleRelationshipMapping;
+
+ public SingleRelationshipTranslator(String domNameAndPath) {
+ super(domNameAndPath);
+ }
+
+ @Override
+ public final EObject createEMFObject(String nodeName, String readAheadName) {
+ this.singleRelationshipMapping = createMapping();
+ return this.singleRelationshipMapping;
+ }
+
+ protected abstract ISingleRelationshipMapping createMapping();
+
+ protected Translator createFetchTypeTranslator() {
+ return new EnumeratorTranslator(FETCH, JpaCoreMappingsPackage.eINSTANCE.getISingleRelationshipMapping_Fetch(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createJoinColumnsTranslator() {
+ return new JoinColumnTranslator(
+ JOIN_COLUMN,
+ JpaCoreMappingsPackage.eINSTANCE.getISingleRelationshipMapping_SpecifiedJoinColumns(),
+ buildJoinColumnsCreator());
+ }
+
+ private JoinColumnBuilder buildJoinColumnsCreator() {
+ return new JoinColumnBuilder() {
+ public IJoinColumn createJoinColumn() {
+ return OrmFactory.eINSTANCE.createXmlJoinColumn(new ISingleRelationshipMapping.JoinColumnOwner(singleRelationshipMapping));
+ }
+ };
+ }
+
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TableGeneratorTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TableGeneratorTranslator.java
new file mode 100644
index 0000000000..ab1e478805
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TableGeneratorTranslator.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.content.orm.OrmFactory;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class TableGeneratorTranslator extends GeneratorTranslator
+{
+
+ public TableGeneratorTranslator(String domNameAndPath, EStructuralFeature aFeature) {
+ super(domNameAndPath, aFeature, NO_STYLE);
+ }
+
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createTableTranslator(),
+ createCatalogTranslator(),
+ createSchemaTranslator(),
+ createPkColumnNameTranslator(),
+ createValueColumnNameTranslator(),
+ createPkColumnValueTranslator(),
+ createInitialValueTranslator(),
+ createAllocationSizeTranslator(),
+ };
+ }
+
+ protected Translator createTableTranslator() {
+ return new Translator(TABLE_GENERATOR__TABLE, MAPPINGS_PKG.getITableGenerator_SpecifiedTable(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createCatalogTranslator() {
+ return new Translator(TABLE_GENERATOR__CATALOG, MAPPINGS_PKG.getITableGenerator_SpecifiedCatalog(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createSchemaTranslator() {
+ return new Translator(TABLE_GENERATOR__SCHEMA, MAPPINGS_PKG.getITableGenerator_SpecifiedSchema(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createPkColumnNameTranslator() {
+ return new Translator(TABLE_GENERATOR__PK_COLUMN_NAME, MAPPINGS_PKG.getITableGenerator_SpecifiedPkColumnName(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createValueColumnNameTranslator() {
+ return new Translator(TABLE_GENERATOR__VALUE_COLUMN_NAME, MAPPINGS_PKG.getITableGenerator_SpecifiedValueColumnName(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createPkColumnValueTranslator() {
+ return new Translator(TABLE_GENERATOR__PK_COLUMN_VALUE, MAPPINGS_PKG.getITableGenerator_SpecifiedPkColumnValue(), DOM_ATTRIBUTE);
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return OrmFactory.eINSTANCE.createXmlTableGenerator();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TableTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TableTranslator.java
new file mode 100644
index 0000000000..2ee679f310
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TableTranslator.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.mappings.IEntity;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class TableTranslator extends AbstractTableTranslator
+ implements OrmXmlMapper
+{
+
+ private IEntity entity;
+
+
+ public TableTranslator() {
+ super(ENTITY__TABLE, JPA_CORE_XML_PKG.getXmlEntityForXml_TableForXml());
+ }
+
+ protected IEntity getEntity() {
+ return this.entity;
+ }
+
+ void setEntity(IEntity entity) {
+ this.entity = entity;
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return getEntity().getTable();
+ }
+
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ createCatalogTranslator(),
+ createSchemaTranslator(),
+ createUniqueConstraintTranslator(),
+ };
+ }
+
+
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TemporalTypeElementTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TemporalTypeElementTranslator.java
new file mode 100644
index 0000000000..2a6a50a61b
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TemporalTypeElementTranslator.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import java.util.Collections;
+import java.util.List;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.mappings.TemporalType;
+
+/**
+ * There is a bug in the translator framework that causes
+ * enumerators in xml elements and enumerators in xml attributes
+ * to be treated differently. When the enumerator is an attribute
+ * setting the model to the default causes the attribute to be removed.
+ * With an element is causes the default literal to be placed in
+ * the tag.
+ *
+ * The problem is wrapped up in the emf unsettable attribute as well.
+ * For attributes the eIsSet method returns false for the default value
+ * For elements the eIsSet method returns true for the default value.
+ * I don't want to have to use the unsettable option in emf since that would
+ * require that I call different api. I am not sure yet what the bug is in
+ * the translator, so I have entered one ~KFM
+ */
+public class TemporalTypeElementTranslator extends EnumeratorTranslator
+{
+
+ public TemporalTypeElementTranslator(String domNameAndPath, EStructuralFeature aFeature, int style) {
+ super(domNameAndPath, aFeature, style);
+ }
+
+ @Override
+ public Object getMOFValue(EObject mofObject) {
+ TemporalType type = (TemporalType) super.getMOFValue(mofObject);
+ if (type == TemporalType.NULL) {
+ return null;
+ }
+ return type;
+ }
+
+ @Override
+ public List getMOFChildren(EObject mofObject) {
+ List result = super.getMOFChildren(mofObject);
+ if(result != null && result.size() > 0) {
+ TemporalType type = (TemporalType) result.get(0);
+ if(type.getValue() == TemporalType.NULL_VALUE)
+ result = Collections.EMPTY_LIST;
+ }
+ return result;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TransientTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TransientTranslator.java
new file mode 100644
index 0000000000..461c9babf1
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TransientTranslator.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class TransientTranslator extends AttributeMappingTranslator
+{
+ public TransientTranslator() {
+ super(TRANSIENT, END_TAG_NO_INDENT);
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return JPA_CORE_XML_FACTORY.createXmlTransient();
+ }
+
+ @Override
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ };
+ }
+
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TypeJavaClassTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TypeJavaClassTranslator.java
new file mode 100644
index 0000000000..cd392a6556
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TypeJavaClassTranslator.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.wst.common.internal.emf.resource.DependencyTranslator;
+
+public class TypeJavaClassTranslator extends DependencyTranslator
+ implements OrmXmlMapper
+{
+ protected static final OrmPackage JPA_CORE_XML_PKG =
+ OrmPackage.eINSTANCE;
+
+
+ public TypeJavaClassTranslator() {
+ super(CLASS, JPA_CORE_XML_PKG.getXmlPersistentType_Class(),
+ JPA_CORE_XML_PKG.getXmlTypeMapping_PersistentType());
+ fStyle = DOM_ATTRIBUTE;
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TypeMappingTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TypeMappingTranslator.java
new file mode 100644
index 0000000000..5b582c3b2b
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TypeMappingTranslator.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.content.orm.OrmFactory;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public abstract class TypeMappingTranslator extends Translator
+ implements OrmXmlMapper
+{
+ protected static final OrmPackage JPA_CORE_XML_PKG =
+ OrmPackage.eINSTANCE;
+ protected static final OrmFactory JPA_CORE_XML_FACTORY =
+ OrmFactory.eINSTANCE;
+
+
+ private Translator[] children;
+
+
+ public TypeMappingTranslator(String domNameAndPath) {
+ super(domNameAndPath, JPA_CORE_XML_PKG.getEntityMappingsInternal_TypeMappings());
+ dependencyFeature = JPA_CORE_XML_PKG.getXmlTypeMapping_PersistentType();
+ }
+
+
+ public Translator[] getChildren(Object target, int versionID) {
+ if (children == null) {
+ children = createChildren();
+ }
+ return children;
+ }
+
+ protected abstract Translator[] createChildren();
+
+ protected Translator createJavaClassTranslator() {
+ return new TypeJavaClassTranslator();
+ }
+
+ protected Translator createMetadataCompleteTranslator() {
+ return new BooleanEnumeratorTranslator(METADATA_COMPLETE, JPA_CORE_XML_PKG.getXmlTypeMapping_MetadataComplete(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createAccessTypeTranslator() {
+ return new EnumeratorTranslator(ACCESS, JPA_CORE_XML_PKG.getXmlTypeMapping_SpecifiedAccess(), DOM_ATTRIBUTE);
+ }
+
+ protected Translator createPersistentAttributesTranslator() {
+ return new AttributeMappingsTranslator();
+ }
+
+
+ protected Translator createPlaceHolderTranslator(String domNameAndPath) {
+ return new Translator(domNameAndPath, (EStructuralFeature) null);
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TypeMappingsTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TypeMappingsTranslator.java
new file mode 100644
index 0000000000..b08ff5e9cc
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/TypeMappingsTranslator.java
@@ -0,0 +1,93 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import java.util.HashMap;
+import java.util.Map;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.wst.common.internal.emf.resource.MultiObjectTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class TypeMappingsTranslator extends MultiObjectTranslator
+ implements OrmXmlMapper
+{
+ public static final String ENTITY_MAPPINGS_PATH =
+ MAPPED_SUPERCLASS + ',' + ENTITY + ',' + EMBEDDABLE;
+
+ private static final OrmPackage JPA_CORE_XML_PKG = OrmPackage.eINSTANCE;
+
+ private Map<EObject, Translator> translatorMap;
+
+ public TypeMappingsTranslator() {
+ super(ENTITY_MAPPINGS_PATH, JPA_CORE_XML_PKG.getEntityMappingsInternal_TypeMappings());
+ this.translatorMap = new HashMap<EObject, Translator>();
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ Translator translator = getDelegateFor(nodeName, readAheadName);
+ EObject eObject = translator.createEMFObject(nodeName, readAheadName);
+ this.translatorMap.put(eObject, translator);
+ return eObject;
+ }
+ /* (non-Javadoc)
+ * @see MultiObjectTranslator#getDelegateFor(EObject)
+ */
+ @Override
+ public Translator getDelegateFor(EObject o) {
+ Translator translator = translatorMap.get(o);
+ if (translator != null) {
+ return translator;
+ }
+
+ switch (o.eClass().getClassifierID()) {
+ case OrmPackage.XML_ENTITY_INTERNAL :
+ return new EntityTranslator();
+ case OrmPackage.XML_MAPPED_SUPERCLASS:
+ return new MappedSuperclassTranslator();
+ case OrmPackage.XML_EMBEDDABLE:
+ return new EmbeddableTranslator();
+ }
+
+ return null;
+ }
+
+ @Override
+ public Translator getDelegateFor(String domName, String readAheadName) {
+ if (domName.equals(ENTITY)) {
+ return new EntityTranslator();
+ }
+ if (domName.equals(MAPPED_SUPERCLASS)) {
+ return new MappedSuperclassTranslator();
+ }
+ if (domName.equals(EMBEDDABLE)) {
+ return new EmbeddableTranslator();
+ }
+ throw new IllegalStateException("Illegal dom name: " + domName); //$NON-NLS-1$
+ }
+
+ @Override
+ public boolean isDependencyParent() {
+ return true;
+ }
+
+ @Override
+ public EObject basicGetDependencyObject(EObject parent) {
+ Translator delegate = getDelegateFor(parent);
+
+ if (delegate != null) {
+ return delegate.basicGetDependencyObject(parent);
+ }
+ else {
+ return super.basicGetDependencyObject(parent);
+ }
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/VersionTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/VersionTranslator.java
new file mode 100644
index 0000000000..b34af52439
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/resource/VersionTranslator.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class VersionTranslator extends AttributeMappingTranslator
+{
+ public VersionTranslator() {
+ super(VERSION, NO_STYLE);
+ }
+
+ @Override
+ public EObject createEMFObject(String nodeName, String readAheadName) {
+ return JPA_CORE_XML_FACTORY.createXmlVersion();
+ }
+
+ @Override
+ protected Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createNameTranslator(),
+ };
+ }
+
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/util/OrmAdapterFactory.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/util/OrmAdapterFactory.java
new file mode 100644
index 0000000000..95a7729c07
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/util/OrmAdapterFactory.java
@@ -0,0 +1,2284 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.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.jpt.core.internal.IAttributeMapping;
+import org.eclipse.jpt.core.internal.IJpaContentNode;
+import org.eclipse.jpt.core.internal.IJpaEObject;
+import org.eclipse.jpt.core.internal.IJpaRootContentNode;
+import org.eclipse.jpt.core.internal.IJpaSourceObject;
+import org.eclipse.jpt.core.internal.IPersistentAttribute;
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.IXmlEObject;
+import org.eclipse.jpt.core.internal.JpaEObject;
+import org.eclipse.jpt.core.internal.XmlEObject;
+import org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn;
+import org.eclipse.jpt.core.internal.content.orm.AbstractXmlNamedColumn;
+import org.eclipse.jpt.core.internal.content.orm.AbstractXmlQuery;
+import org.eclipse.jpt.core.internal.content.orm.AbstractXmlTable;
+import org.eclipse.jpt.core.internal.content.orm.EntityMappings;
+import org.eclipse.jpt.core.internal.content.orm.EntityMappingsForXml;
+import org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal;
+import org.eclipse.jpt.core.internal.content.orm.IXmlColumnMapping;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaults;
+import org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsForXml;
+import org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal;
+import org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadata;
+import org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataForXml;
+import org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataInternal;
+import org.eclipse.jpt.core.internal.content.orm.XmlAssociationOverride;
+import org.eclipse.jpt.core.internal.content.orm.XmlAttributeMapping;
+import org.eclipse.jpt.core.internal.content.orm.XmlAttributeOverride;
+import org.eclipse.jpt.core.internal.content.orm.XmlBasic;
+import org.eclipse.jpt.core.internal.content.orm.XmlColumn;
+import org.eclipse.jpt.core.internal.content.orm.XmlDiscriminatorColumn;
+import org.eclipse.jpt.core.internal.content.orm.XmlEmbeddable;
+import org.eclipse.jpt.core.internal.content.orm.XmlEmbedded;
+import org.eclipse.jpt.core.internal.content.orm.XmlEmbeddedId;
+import org.eclipse.jpt.core.internal.content.orm.XmlEntity;
+import org.eclipse.jpt.core.internal.content.orm.XmlEntityForXml;
+import org.eclipse.jpt.core.internal.content.orm.XmlEntityInternal;
+import org.eclipse.jpt.core.internal.content.orm.XmlGeneratedValue;
+import org.eclipse.jpt.core.internal.content.orm.XmlGenerator;
+import org.eclipse.jpt.core.internal.content.orm.XmlId;
+import org.eclipse.jpt.core.internal.content.orm.XmlJoinColumn;
+import org.eclipse.jpt.core.internal.content.orm.XmlJoinTable;
+import org.eclipse.jpt.core.internal.content.orm.XmlManyToMany;
+import org.eclipse.jpt.core.internal.content.orm.XmlManyToOne;
+import org.eclipse.jpt.core.internal.content.orm.XmlMappedSuperclass;
+import org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMapping;
+import org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMappingForXml;
+import org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMappingInternal;
+import org.eclipse.jpt.core.internal.content.orm.XmlNamedNativeQuery;
+import org.eclipse.jpt.core.internal.content.orm.XmlNamedQuery;
+import org.eclipse.jpt.core.internal.content.orm.XmlNullAttributeMapping;
+import org.eclipse.jpt.core.internal.content.orm.XmlOneToMany;
+import org.eclipse.jpt.core.internal.content.orm.XmlOneToOne;
+import org.eclipse.jpt.core.internal.content.orm.XmlOrderBy;
+import org.eclipse.jpt.core.internal.content.orm.XmlOverride;
+import org.eclipse.jpt.core.internal.content.orm.XmlPersistentAttribute;
+import org.eclipse.jpt.core.internal.content.orm.XmlPersistentType;
+import org.eclipse.jpt.core.internal.content.orm.XmlPrimaryKeyJoinColumn;
+import org.eclipse.jpt.core.internal.content.orm.XmlQueryHint;
+import org.eclipse.jpt.core.internal.content.orm.XmlRelationshipMapping;
+import org.eclipse.jpt.core.internal.content.orm.XmlRootContentNode;
+import org.eclipse.jpt.core.internal.content.orm.XmlSecondaryTable;
+import org.eclipse.jpt.core.internal.content.orm.XmlSequenceGenerator;
+import org.eclipse.jpt.core.internal.content.orm.XmlSingleRelationshipMapping;
+import org.eclipse.jpt.core.internal.content.orm.XmlTable;
+import org.eclipse.jpt.core.internal.content.orm.XmlTableGenerator;
+import org.eclipse.jpt.core.internal.content.orm.XmlTransient;
+import org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping;
+import org.eclipse.jpt.core.internal.content.orm.XmlVersion;
+import org.eclipse.jpt.core.internal.mappings.IAbstractColumn;
+import org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.IAssociationOverride;
+import org.eclipse.jpt.core.internal.mappings.IAttributeOverride;
+import org.eclipse.jpt.core.internal.mappings.IBasic;
+import org.eclipse.jpt.core.internal.mappings.IColumn;
+import org.eclipse.jpt.core.internal.mappings.IColumnMapping;
+import org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn;
+import org.eclipse.jpt.core.internal.mappings.IEmbeddable;
+import org.eclipse.jpt.core.internal.mappings.IEmbedded;
+import org.eclipse.jpt.core.internal.mappings.IEmbeddedId;
+import org.eclipse.jpt.core.internal.mappings.IEntity;
+import org.eclipse.jpt.core.internal.mappings.IGeneratedValue;
+import org.eclipse.jpt.core.internal.mappings.IGenerator;
+import org.eclipse.jpt.core.internal.mappings.IId;
+import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.IJoinTable;
+import org.eclipse.jpt.core.internal.mappings.IManyToMany;
+import org.eclipse.jpt.core.internal.mappings.IManyToOne;
+import org.eclipse.jpt.core.internal.mappings.IMappedSuperclass;
+import org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.INamedColumn;
+import org.eclipse.jpt.core.internal.mappings.INamedNativeQuery;
+import org.eclipse.jpt.core.internal.mappings.INamedQuery;
+import org.eclipse.jpt.core.internal.mappings.INonOwningMapping;
+import org.eclipse.jpt.core.internal.mappings.IOneToMany;
+import org.eclipse.jpt.core.internal.mappings.IOneToOne;
+import org.eclipse.jpt.core.internal.mappings.IOrderBy;
+import org.eclipse.jpt.core.internal.mappings.IOverride;
+import org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.IQuery;
+import org.eclipse.jpt.core.internal.mappings.IQueryHint;
+import org.eclipse.jpt.core.internal.mappings.IRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.ISecondaryTable;
+import org.eclipse.jpt.core.internal.mappings.ISequenceGenerator;
+import org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.ITable;
+import org.eclipse.jpt.core.internal.mappings.ITableGenerator;
+import org.eclipse.jpt.core.internal.mappings.ITransient;
+import org.eclipse.jpt.core.internal.mappings.IVersion;
+
+/**
+ * <!-- 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.jpt.core.internal.content.orm.OrmPackage
+ * @generated
+ */
+public class OrmAdapterFactory extends AdapterFactoryImpl
+{
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static OrmPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public OrmAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = OrmPackage.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 OrmSwitch<Adapter> modelSwitch = new OrmSwitch<Adapter>() {
+ @Override
+ public Adapter caseXmlRootContentNode(XmlRootContentNode object) {
+ return createXmlRootContentNodeAdapter();
+ }
+
+ @Override
+ public Adapter caseEntityMappingsInternal(EntityMappingsInternal object) {
+ return createEntityMappingsInternalAdapter();
+ }
+
+ @Override
+ public Adapter caseEntityMappings(EntityMappings object) {
+ return createEntityMappingsAdapter();
+ }
+
+ @Override
+ public Adapter caseEntityMappingsForXml(EntityMappingsForXml object) {
+ return createEntityMappingsForXmlAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlTypeMapping(XmlTypeMapping object) {
+ return createXmlTypeMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlPersistentType(XmlPersistentType object) {
+ return createXmlPersistentTypeAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlMappedSuperclass(XmlMappedSuperclass object) {
+ return createXmlMappedSuperclassAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlEntityInternal(XmlEntityInternal object) {
+ return createXmlEntityInternalAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlEntityForXml(XmlEntityForXml object) {
+ return createXmlEntityForXmlAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlEntity(XmlEntity object) {
+ return createXmlEntityAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlEmbeddable(XmlEmbeddable object) {
+ return createXmlEmbeddableAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlAttributeMapping(XmlAttributeMapping object) {
+ return createXmlAttributeMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlNullAttributeMapping(XmlNullAttributeMapping object) {
+ return createXmlNullAttributeMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlBasic(XmlBasic object) {
+ return createXmlBasicAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlId(XmlId object) {
+ return createXmlIdAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlTransient(XmlTransient object) {
+ return createXmlTransientAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlEmbedded(XmlEmbedded object) {
+ return createXmlEmbeddedAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlEmbeddedId(XmlEmbeddedId object) {
+ return createXmlEmbeddedIdAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlVersion(XmlVersion object) {
+ return createXmlVersionAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlMultiRelationshipMappingInternal(XmlMultiRelationshipMappingInternal object) {
+ return createXmlMultiRelationshipMappingInternalAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlMultiRelationshipMappingForXml(XmlMultiRelationshipMappingForXml object) {
+ return createXmlMultiRelationshipMappingForXmlAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlMultiRelationshipMapping(XmlMultiRelationshipMapping object) {
+ return createXmlMultiRelationshipMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlOneToMany(XmlOneToMany object) {
+ return createXmlOneToManyAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlManyToMany(XmlManyToMany object) {
+ return createXmlManyToManyAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlPersistentAttribute(XmlPersistentAttribute object) {
+ return createXmlPersistentAttributeAdapter();
+ }
+
+ @Override
+ public Adapter casePersistenceUnitMetadataInternal(PersistenceUnitMetadataInternal object) {
+ return createPersistenceUnitMetadataInternalAdapter();
+ }
+
+ @Override
+ public Adapter casePersistenceUnitMetadata(PersistenceUnitMetadata object) {
+ return createPersistenceUnitMetadataAdapter();
+ }
+
+ @Override
+ public Adapter casePersistenceUnitMetadataForXml(PersistenceUnitMetadataForXml object) {
+ return createPersistenceUnitMetadataForXmlAdapter();
+ }
+
+ @Override
+ public Adapter casePersistenceUnitDefaultsInternal(PersistenceUnitDefaultsInternal object) {
+ return createPersistenceUnitDefaultsInternalAdapter();
+ }
+
+ @Override
+ public Adapter casePersistenceUnitDefaults(PersistenceUnitDefaults object) {
+ return createPersistenceUnitDefaultsAdapter();
+ }
+
+ @Override
+ public Adapter casePersistenceUnitDefaultsForXml(PersistenceUnitDefaultsForXml object) {
+ return createPersistenceUnitDefaultsForXmlAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlTable(XmlTable object) {
+ return createXmlTableAdapter();
+ }
+
+ @Override
+ public Adapter caseAbstractXmlNamedColumn(AbstractXmlNamedColumn object) {
+ return createAbstractXmlNamedColumnAdapter();
+ }
+
+ @Override
+ public Adapter caseAbstractXmlColumn(AbstractXmlColumn object) {
+ return createAbstractXmlColumnAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlColumn(XmlColumn object) {
+ return createXmlColumnAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlJoinColumn(XmlJoinColumn object) {
+ return createXmlJoinColumnAdapter();
+ }
+
+ @Override
+ public Adapter caseIXmlColumnMapping(IXmlColumnMapping object) {
+ return createIXmlColumnMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlManyToOne(XmlManyToOne object) {
+ return createXmlManyToOneAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlOneToOne(XmlOneToOne object) {
+ return createXmlOneToOneAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlSingleRelationshipMapping(XmlSingleRelationshipMapping object) {
+ return createXmlSingleRelationshipMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlRelationshipMapping(XmlRelationshipMapping object) {
+ return createXmlRelationshipMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlJoinTable(XmlJoinTable object) {
+ return createXmlJoinTableAdapter();
+ }
+
+ @Override
+ public Adapter caseAbstractXmlTable(AbstractXmlTable object) {
+ return createAbstractXmlTableAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlOverride(XmlOverride object) {
+ return createXmlOverrideAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlAttributeOverride(XmlAttributeOverride object) {
+ return createXmlAttributeOverrideAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlAssociationOverride(XmlAssociationOverride object) {
+ return createXmlAssociationOverrideAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlDiscriminatorColumn(XmlDiscriminatorColumn object) {
+ return createXmlDiscriminatorColumnAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlSecondaryTable(XmlSecondaryTable object) {
+ return createXmlSecondaryTableAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlPrimaryKeyJoinColumn(XmlPrimaryKeyJoinColumn object) {
+ return createXmlPrimaryKeyJoinColumnAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlGeneratedValue(XmlGeneratedValue object) {
+ return createXmlGeneratedValueAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlGenerator(XmlGenerator object) {
+ return createXmlGeneratorAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlSequenceGenerator(XmlSequenceGenerator object) {
+ return createXmlSequenceGeneratorAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlTableGenerator(XmlTableGenerator object) {
+ return createXmlTableGeneratorAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlOrderBy(XmlOrderBy object) {
+ return createXmlOrderByAdapter();
+ }
+
+ @Override
+ public Adapter caseAbstractXmlQuery(AbstractXmlQuery object) {
+ return createAbstractXmlQueryAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlNamedQuery(XmlNamedQuery object) {
+ return createXmlNamedQueryAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlNamedNativeQuery(XmlNamedNativeQuery object) {
+ return createXmlNamedNativeQueryAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlQueryHint(XmlQueryHint object) {
+ return createXmlQueryHintAdapter();
+ }
+
+ @Override
+ public Adapter caseIJpaEObject(IJpaEObject object) {
+ return createIJpaEObjectAdapter();
+ }
+
+ @Override
+ public Adapter caseJpaEObject(JpaEObject object) {
+ return createJpaEObjectAdapter();
+ }
+
+ @Override
+ public Adapter caseIJpaSourceObject(IJpaSourceObject object) {
+ return createIJpaSourceObjectAdapter();
+ }
+
+ @Override
+ public Adapter caseIXmlEObject(IXmlEObject object) {
+ return createIXmlEObjectAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlEObject(XmlEObject object) {
+ return createXmlEObjectAdapter();
+ }
+
+ @Override
+ public Adapter caseIJpaContentNode(IJpaContentNode object) {
+ return createIJpaContentNodeAdapter();
+ }
+
+ @Override
+ public Adapter caseIJpaRootContentNode(IJpaRootContentNode object) {
+ return createIJpaRootContentNodeAdapter();
+ }
+
+ @Override
+ public Adapter caseITypeMapping(ITypeMapping object) {
+ return createITypeMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseIPersistentType(IPersistentType object) {
+ return createIPersistentTypeAdapter();
+ }
+
+ @Override
+ public Adapter caseIMappedSuperclass(IMappedSuperclass object) {
+ return createIMappedSuperclassAdapter();
+ }
+
+ @Override
+ public Adapter caseIEntity(IEntity object) {
+ return createIEntityAdapter();
+ }
+
+ @Override
+ public Adapter caseIEmbeddable(IEmbeddable object) {
+ return createIEmbeddableAdapter();
+ }
+
+ @Override
+ public Adapter caseIAttributeMapping(IAttributeMapping object) {
+ return createIAttributeMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseIColumnMapping(IColumnMapping object) {
+ return createIColumnMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseIBasic(IBasic object) {
+ return createIBasicAdapter();
+ }
+
+ @Override
+ public Adapter caseIId(IId object) {
+ return createIIdAdapter();
+ }
+
+ @Override
+ public Adapter caseITransient(ITransient object) {
+ return createITransientAdapter();
+ }
+
+ @Override
+ public Adapter caseIEmbedded(IEmbedded object) {
+ return createIEmbeddedAdapter();
+ }
+
+ @Override
+ public Adapter caseIEmbeddedId(IEmbeddedId object) {
+ return createIEmbeddedIdAdapter();
+ }
+
+ @Override
+ public Adapter caseIVersion(IVersion object) {
+ return createIVersionAdapter();
+ }
+
+ @Override
+ public Adapter caseIRelationshipMapping(IRelationshipMapping object) {
+ return createIRelationshipMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseINonOwningMapping(INonOwningMapping object) {
+ return createINonOwningMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseIMultiRelationshipMapping(IMultiRelationshipMapping object) {
+ return createIMultiRelationshipMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseIOneToMany(IOneToMany object) {
+ return createIOneToManyAdapter();
+ }
+
+ @Override
+ public Adapter caseIManyToMany(IManyToMany object) {
+ return createIManyToManyAdapter();
+ }
+
+ @Override
+ public Adapter caseIPersistentAttribute(IPersistentAttribute object) {
+ return createIPersistentAttributeAdapter();
+ }
+
+ @Override
+ public Adapter caseITable(ITable object) {
+ return createITableAdapter();
+ }
+
+ @Override
+ public Adapter caseINamedColumn(INamedColumn object) {
+ return createINamedColumnAdapter();
+ }
+
+ @Override
+ public Adapter caseIAbstractColumn(IAbstractColumn object) {
+ return createIAbstractColumnAdapter();
+ }
+
+ @Override
+ public Adapter caseIColumn(IColumn object) {
+ return createIColumnAdapter();
+ }
+
+ @Override
+ public Adapter caseIAbstractJoinColumn(IAbstractJoinColumn object) {
+ return createIAbstractJoinColumnAdapter();
+ }
+
+ @Override
+ public Adapter caseIJoinColumn(IJoinColumn object) {
+ return createIJoinColumnAdapter();
+ }
+
+ @Override
+ public Adapter caseISingleRelationshipMapping(ISingleRelationshipMapping object) {
+ return createISingleRelationshipMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseIManyToOne(IManyToOne object) {
+ return createIManyToOneAdapter();
+ }
+
+ @Override
+ public Adapter caseIOneToOne(IOneToOne object) {
+ return createIOneToOneAdapter();
+ }
+
+ @Override
+ public Adapter caseIJoinTable(IJoinTable object) {
+ return createIJoinTableAdapter();
+ }
+
+ @Override
+ public Adapter caseIOverride(IOverride object) {
+ return createIOverrideAdapter();
+ }
+
+ @Override
+ public Adapter caseIAttributeOverride(IAttributeOverride object) {
+ return createIAttributeOverrideAdapter();
+ }
+
+ @Override
+ public Adapter caseIAssociationOverride(IAssociationOverride object) {
+ return createIAssociationOverrideAdapter();
+ }
+
+ @Override
+ public Adapter caseIDiscriminatorColumn(IDiscriminatorColumn object) {
+ return createIDiscriminatorColumnAdapter();
+ }
+
+ @Override
+ public Adapter caseISecondaryTable(ISecondaryTable object) {
+ return createISecondaryTableAdapter();
+ }
+
+ @Override
+ public Adapter caseIPrimaryKeyJoinColumn(IPrimaryKeyJoinColumn object) {
+ return createIPrimaryKeyJoinColumnAdapter();
+ }
+
+ @Override
+ public Adapter caseIGeneratedValue(IGeneratedValue object) {
+ return createIGeneratedValueAdapter();
+ }
+
+ @Override
+ public Adapter caseIGenerator(IGenerator object) {
+ return createIGeneratorAdapter();
+ }
+
+ @Override
+ public Adapter caseISequenceGenerator(ISequenceGenerator object) {
+ return createISequenceGeneratorAdapter();
+ }
+
+ @Override
+ public Adapter caseITableGenerator(ITableGenerator object) {
+ return createITableGeneratorAdapter();
+ }
+
+ @Override
+ public Adapter caseIOrderBy(IOrderBy object) {
+ return createIOrderByAdapter();
+ }
+
+ @Override
+ public Adapter caseIQuery(IQuery object) {
+ return createIQueryAdapter();
+ }
+
+ @Override
+ public Adapter caseINamedQuery(INamedQuery object) {
+ return createINamedQueryAdapter();
+ }
+
+ @Override
+ public Adapter caseINamedNativeQuery(INamedNativeQuery object) {
+ return createINamedNativeQueryAdapter();
+ }
+
+ @Override
+ public Adapter caseIQueryHint(IQueryHint object) {
+ return createIQueryHintAdapter();
+ }
+
+ @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.jpt.core.internal.XmlEObject <em>Xml EObject</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.jpt.core.internal.XmlEObject
+ * @generated
+ */
+ public Adapter createXmlEObjectAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlRootContentNode <em>Xml Root Content 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.jpt.core.internal.content.orm.XmlRootContentNode
+ * @generated
+ */
+ public Adapter createXmlRootContentNodeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal <em>Entity Mappings Internal</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.jpt.core.internal.content.orm.EntityMappingsInternal
+ * @generated
+ */
+ public Adapter createEntityMappingsInternalAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappings <em>Entity Mappings</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.jpt.core.internal.content.orm.EntityMappings
+ * @generated
+ */
+ public Adapter createEntityMappingsAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.EntityMappingsForXml <em>Entity Mappings For Xml</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.jpt.core.internal.content.orm.EntityMappingsForXml
+ * @generated
+ */
+ public Adapter createEntityMappingsForXmlAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping <em>Xml Type Mapping</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.jpt.core.internal.content.orm.XmlTypeMapping
+ * @generated
+ */
+ public Adapter createXmlTypeMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentType <em>Xml Persistent Type</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.jpt.core.internal.content.orm.XmlPersistentType
+ * @generated
+ */
+ public Adapter createXmlPersistentTypeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlEntity <em>Xml Entity</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.jpt.core.internal.content.orm.XmlEntity
+ * @generated
+ */
+ public Adapter createXmlEntityAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlEmbeddable <em>Xml Embeddable</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.jpt.core.internal.content.orm.XmlEmbeddable
+ * @generated
+ */
+ public Adapter createXmlEmbeddableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlAttributeMapping <em>Xml Attribute Mapping</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.jpt.core.internal.content.orm.XmlAttributeMapping
+ * @generated
+ */
+ public Adapter createXmlAttributeMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlNullAttributeMapping <em>Xml Null Attribute Mapping</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.jpt.core.internal.content.orm.XmlNullAttributeMapping
+ * @generated
+ */
+ public Adapter createXmlNullAttributeMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlPersistentAttribute <em>Xml Persistent Attribute</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.jpt.core.internal.content.orm.XmlPersistentAttribute
+ * @generated
+ */
+ public Adapter createXmlPersistentAttributeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlBasic <em>Xml Basic</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.jpt.core.internal.content.orm.XmlBasic
+ * @generated
+ */
+ public Adapter createXmlBasicAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlId <em>Xml Id</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.jpt.core.internal.content.orm.XmlId
+ * @generated
+ */
+ public Adapter createXmlIdAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlTransient <em>Xml Transient</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.jpt.core.internal.content.orm.XmlTransient
+ * @generated
+ */
+ public Adapter createXmlTransientAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlEmbedded <em>Xml Embedded</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.jpt.core.internal.content.orm.XmlEmbedded
+ * @generated
+ */
+ public Adapter createXmlEmbeddedAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlEmbeddedId <em>Xml Embedded Id</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.jpt.core.internal.content.orm.XmlEmbeddedId
+ * @generated
+ */
+ public Adapter createXmlEmbeddedIdAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlVersion <em>Xml Version</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.jpt.core.internal.content.orm.XmlVersion
+ * @generated
+ */
+ public Adapter createXmlVersionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMappingInternal <em>Xml Multi Relationship Mapping Internal</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.jpt.core.internal.content.orm.XmlMultiRelationshipMappingInternal
+ * @generated
+ */
+ public Adapter createXmlMultiRelationshipMappingInternalAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMappingForXml <em>Xml Multi Relationship Mapping For Xml</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.jpt.core.internal.content.orm.XmlMultiRelationshipMappingForXml
+ * @generated
+ */
+ public Adapter createXmlMultiRelationshipMappingForXmlAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMapping <em>Xml Multi Relationship Mapping</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.jpt.core.internal.content.orm.XmlMultiRelationshipMapping
+ * @generated
+ */
+ public Adapter createXmlMultiRelationshipMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlOneToMany <em>Xml One To Many</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.jpt.core.internal.content.orm.XmlOneToMany
+ * @generated
+ */
+ public Adapter createXmlOneToManyAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlManyToMany <em>Xml Many To Many</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.jpt.core.internal.content.orm.XmlManyToMany
+ * @generated
+ */
+ public Adapter createXmlManyToManyAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataInternal <em>Persistence Unit Metadata Internal</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.jpt.core.internal.content.orm.PersistenceUnitMetadataInternal
+ * @generated
+ */
+ public Adapter createPersistenceUnitMetadataInternalAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadata <em>Persistence Unit Metadata</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.jpt.core.internal.content.orm.PersistenceUnitMetadata
+ * @generated
+ */
+ public Adapter createPersistenceUnitMetadataAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataForXml <em>Persistence Unit Metadata For Xml</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.jpt.core.internal.content.orm.PersistenceUnitMetadataForXml
+ * @generated
+ */
+ public Adapter createPersistenceUnitMetadataForXmlAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal <em>Persistence Unit Defaults Internal</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.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal
+ * @generated
+ */
+ public Adapter createPersistenceUnitDefaultsInternalAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaults <em>Persistence Unit Defaults</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.jpt.core.internal.content.orm.PersistenceUnitDefaults
+ * @generated
+ */
+ public Adapter createPersistenceUnitDefaultsAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsForXml <em>Persistence Unit Defaults For Xml</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.jpt.core.internal.content.orm.PersistenceUnitDefaultsForXml
+ * @generated
+ */
+ public Adapter createPersistenceUnitDefaultsForXmlAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlTable <em>Xml Table</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.jpt.core.internal.content.orm.XmlTable
+ * @generated
+ */
+ public Adapter createXmlTableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlNamedColumn <em>Abstract Xml Named Column</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.jpt.core.internal.content.orm.AbstractXmlNamedColumn
+ * @generated
+ */
+ public Adapter createAbstractXmlNamedColumnAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn <em>Abstract Xml Column</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.jpt.core.internal.content.orm.AbstractXmlColumn
+ * @generated
+ */
+ public Adapter createAbstractXmlColumnAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlColumn <em>Xml Column</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.jpt.core.internal.content.orm.XmlColumn
+ * @generated
+ */
+ public Adapter createXmlColumnAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlJoinColumn <em>Xml Join Column</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.jpt.core.internal.content.orm.XmlJoinColumn
+ * @generated
+ */
+ public Adapter createXmlJoinColumnAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.IXmlColumnMapping <em>IXml Column Mapping</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.jpt.core.internal.content.orm.IXmlColumnMapping
+ * @generated
+ */
+ public Adapter createIXmlColumnMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlManyToOne <em>Xml Many To One</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.jpt.core.internal.content.orm.XmlManyToOne
+ * @generated
+ */
+ public Adapter createXmlManyToOneAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlOneToOne <em>Xml One To One</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.jpt.core.internal.content.orm.XmlOneToOne
+ * @generated
+ */
+ public Adapter createXmlOneToOneAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlSingleRelationshipMapping <em>Xml Single Relationship Mapping</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.jpt.core.internal.content.orm.XmlSingleRelationshipMapping
+ * @generated
+ */
+ public Adapter createXmlSingleRelationshipMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlRelationshipMapping <em>Xml Relationship Mapping</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.jpt.core.internal.content.orm.XmlRelationshipMapping
+ * @generated
+ */
+ public Adapter createXmlRelationshipMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlJoinTable <em>Xml Join Table</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.jpt.core.internal.content.orm.XmlJoinTable
+ * @generated
+ */
+ public Adapter createXmlJoinTableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlTable <em>Abstract Xml Table</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.jpt.core.internal.content.orm.AbstractXmlTable
+ * @generated
+ */
+ public Adapter createAbstractXmlTableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlOverride <em>Xml Override</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.jpt.core.internal.content.orm.XmlOverride
+ * @generated
+ */
+ public Adapter createXmlOverrideAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlAttributeOverride <em>Xml Attribute Override</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.jpt.core.internal.content.orm.XmlAttributeOverride
+ * @generated
+ */
+ public Adapter createXmlAttributeOverrideAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlAssociationOverride <em>Xml Association Override</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.jpt.core.internal.content.orm.XmlAssociationOverride
+ * @generated
+ */
+ public Adapter createXmlAssociationOverrideAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlDiscriminatorColumn <em>Xml Discriminator Column</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.jpt.core.internal.content.orm.XmlDiscriminatorColumn
+ * @generated
+ */
+ public Adapter createXmlDiscriminatorColumnAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlSecondaryTable <em>Xml Secondary Table</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.jpt.core.internal.content.orm.XmlSecondaryTable
+ * @generated
+ */
+ public Adapter createXmlSecondaryTableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlPrimaryKeyJoinColumn <em>Xml Primary Key Join Column</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.jpt.core.internal.content.orm.XmlPrimaryKeyJoinColumn
+ * @generated
+ */
+ public Adapter createXmlPrimaryKeyJoinColumnAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlGeneratedValue <em>Xml Generated 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.jpt.core.internal.content.orm.XmlGeneratedValue
+ * @generated
+ */
+ public Adapter createXmlGeneratedValueAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlGenerator <em>Xml Generator</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.jpt.core.internal.content.orm.XmlGenerator
+ * @generated
+ */
+ public Adapter createXmlGeneratorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlSequenceGenerator <em>Xml Sequence Generator</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.jpt.core.internal.content.orm.XmlSequenceGenerator
+ * @generated
+ */
+ public Adapter createXmlSequenceGeneratorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlTableGenerator <em>Xml Table Generator</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.jpt.core.internal.content.orm.XmlTableGenerator
+ * @generated
+ */
+ public Adapter createXmlTableGeneratorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlOrderBy <em>Xml Order By</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.jpt.core.internal.content.orm.XmlOrderBy
+ * @generated
+ */
+ public Adapter createXmlOrderByAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.AbstractXmlQuery <em>Abstract Xml Query</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.jpt.core.internal.content.orm.AbstractXmlQuery
+ * @generated
+ */
+ public Adapter createAbstractXmlQueryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlNamedQuery <em>Xml Named Query</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.jpt.core.internal.content.orm.XmlNamedQuery
+ * @generated
+ */
+ public Adapter createXmlNamedQueryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlNamedNativeQuery <em>Xml Named Native Query</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.jpt.core.internal.content.orm.XmlNamedNativeQuery
+ * @generated
+ */
+ public Adapter createXmlNamedNativeQueryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlQueryHint <em>Xml Query Hint</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.jpt.core.internal.content.orm.XmlQueryHint
+ * @generated
+ */
+ public Adapter createXmlQueryHintAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IJpaEObject <em>IJpa EObject</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.jpt.core.internal.IJpaEObject
+ * @generated
+ */
+ public Adapter createIJpaEObjectAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.JpaEObject <em>Jpa EObject</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.jpt.core.internal.JpaEObject
+ * @generated
+ */
+ public Adapter createJpaEObjectAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IJpaSourceObject <em>IJpa Source Object</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.jpt.core.internal.IJpaSourceObject
+ * @generated
+ */
+ public Adapter createIJpaSourceObjectAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IXmlEObject <em>IXml EObject</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.jpt.core.internal.IXmlEObject
+ * @generated
+ */
+ public Adapter createIXmlEObjectAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IJpaContentNode <em>IJpa Content 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.jpt.core.internal.IJpaContentNode
+ * @generated
+ */
+ public Adapter createIJpaContentNodeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IJpaRootContentNode <em>IJpa Root Content 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.jpt.core.internal.IJpaRootContentNode
+ * @generated
+ */
+ public Adapter createIJpaRootContentNodeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlMappedSuperclass <em>Xml Mapped Superclass</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.jpt.core.internal.content.orm.XmlMappedSuperclass
+ * @generated
+ */
+ public Adapter createXmlMappedSuperclassAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlEntityInternal <em>Xml Entity Internal</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.jpt.core.internal.content.orm.XmlEntityInternal
+ * @generated
+ */
+ public Adapter createXmlEntityInternalAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.orm.XmlEntityForXml <em>Xml Entity For Xml</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.jpt.core.internal.content.orm.XmlEntityForXml
+ * @generated
+ */
+ public Adapter createXmlEntityForXmlAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IAttributeMapping <em>IAttribute Mapping</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.jpt.core.internal.IAttributeMapping
+ * @generated
+ */
+ public Adapter createIAttributeMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IColumnMapping <em>IColumn Mapping</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.jpt.core.internal.mappings.IColumnMapping
+ * @generated
+ */
+ public Adapter createIColumnMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IPersistentAttribute <em>IPersistent Attribute</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.jpt.core.internal.IPersistentAttribute
+ * @generated
+ */
+ public Adapter createIPersistentAttributeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.ITable <em>ITable</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.jpt.core.internal.mappings.ITable
+ * @generated
+ */
+ public Adapter createITableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.INamedColumn <em>INamed Column</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.jpt.core.internal.mappings.INamedColumn
+ * @generated
+ */
+ public Adapter createINamedColumnAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IAbstractColumn <em>IAbstract Column</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.jpt.core.internal.mappings.IAbstractColumn
+ * @generated
+ */
+ public Adapter createIAbstractColumnAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IColumn <em>IColumn</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.jpt.core.internal.mappings.IColumn
+ * @generated
+ */
+ public Adapter createIColumnAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn <em>IAbstract Join Column</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.jpt.core.internal.mappings.IAbstractJoinColumn
+ * @generated
+ */
+ public Adapter createIAbstractJoinColumnAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IJoinColumn <em>IJoin Column</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.jpt.core.internal.mappings.IJoinColumn
+ * @generated
+ */
+ public Adapter createIJoinColumnAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping <em>ISingle Relationship Mapping</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.jpt.core.internal.mappings.ISingleRelationshipMapping
+ * @generated
+ */
+ public Adapter createISingleRelationshipMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IManyToOne <em>IMany To One</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.jpt.core.internal.mappings.IManyToOne
+ * @generated
+ */
+ public Adapter createIManyToOneAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IOneToOne <em>IOne To One</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.jpt.core.internal.mappings.IOneToOne
+ * @generated
+ */
+ public Adapter createIOneToOneAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IJoinTable <em>IJoin Table</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.jpt.core.internal.mappings.IJoinTable
+ * @generated
+ */
+ public Adapter createIJoinTableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IOverride <em>IOverride</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.jpt.core.internal.mappings.IOverride
+ * @generated
+ */
+ public Adapter createIOverrideAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride <em>IAttribute Override</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.jpt.core.internal.mappings.IAttributeOverride
+ * @generated
+ */
+ public Adapter createIAttributeOverrideAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IAssociationOverride <em>IAssociation Override</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.jpt.core.internal.mappings.IAssociationOverride
+ * @generated
+ */
+ public Adapter createIAssociationOverrideAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn <em>IDiscriminator Column</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.jpt.core.internal.mappings.IDiscriminatorColumn
+ * @generated
+ */
+ public Adapter createIDiscriminatorColumnAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.ISecondaryTable <em>ISecondary Table</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.jpt.core.internal.mappings.ISecondaryTable
+ * @generated
+ */
+ public Adapter createISecondaryTableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn <em>IPrimary Key Join Column</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.jpt.core.internal.mappings.IPrimaryKeyJoinColumn
+ * @generated
+ */
+ public Adapter createIPrimaryKeyJoinColumnAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IGeneratedValue <em>IGenerated 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.jpt.core.internal.mappings.IGeneratedValue
+ * @generated
+ */
+ public Adapter createIGeneratedValueAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IGenerator <em>IGenerator</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.jpt.core.internal.mappings.IGenerator
+ * @generated
+ */
+ public Adapter createIGeneratorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.ISequenceGenerator <em>ISequence Generator</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.jpt.core.internal.mappings.ISequenceGenerator
+ * @generated
+ */
+ public Adapter createISequenceGeneratorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator <em>ITable Generator</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.jpt.core.internal.mappings.ITableGenerator
+ * @generated
+ */
+ public Adapter createITableGeneratorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IOrderBy <em>IOrder By</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.jpt.core.internal.mappings.IOrderBy
+ * @generated
+ */
+ public Adapter createIOrderByAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IQuery <em>IQuery</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.jpt.core.internal.mappings.IQuery
+ * @generated
+ */
+ public Adapter createIQueryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.INamedQuery <em>INamed Query</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.jpt.core.internal.mappings.INamedQuery
+ * @generated
+ */
+ public Adapter createINamedQueryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.INamedNativeQuery <em>INamed Native Query</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.jpt.core.internal.mappings.INamedNativeQuery
+ * @generated
+ */
+ public Adapter createINamedNativeQueryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IQueryHint <em>IQuery Hint</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.jpt.core.internal.mappings.IQueryHint
+ * @generated
+ */
+ public Adapter createIQueryHintAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IBasic <em>IBasic</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.jpt.core.internal.mappings.IBasic
+ * @generated
+ */
+ public Adapter createIBasicAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IId <em>IId</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.jpt.core.internal.mappings.IId
+ * @generated
+ */
+ public Adapter createIIdAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.ITransient <em>ITransient</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.jpt.core.internal.mappings.ITransient
+ * @generated
+ */
+ public Adapter createITransientAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IEmbedded <em>IEmbedded</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.jpt.core.internal.mappings.IEmbedded
+ * @generated
+ */
+ public Adapter createIEmbeddedAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IEmbeddedId <em>IEmbedded Id</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.jpt.core.internal.mappings.IEmbeddedId
+ * @generated
+ */
+ public Adapter createIEmbeddedIdAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IVersion <em>IVersion</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.jpt.core.internal.mappings.IVersion
+ * @generated
+ */
+ public Adapter createIVersionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IRelationshipMapping <em>IRelationship Mapping</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.jpt.core.internal.mappings.IRelationshipMapping
+ * @generated
+ */
+ public Adapter createIRelationshipMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.INonOwningMapping <em>INon Owning Mapping</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.jpt.core.internal.mappings.INonOwningMapping
+ * @generated
+ */
+ public Adapter createINonOwningMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping <em>IMulti Relationship Mapping</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.jpt.core.internal.mappings.IMultiRelationshipMapping
+ * @generated
+ */
+ public Adapter createIMultiRelationshipMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IOneToMany <em>IOne To Many</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.jpt.core.internal.mappings.IOneToMany
+ * @generated
+ */
+ public Adapter createIOneToManyAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IManyToMany <em>IMany To Many</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.jpt.core.internal.mappings.IManyToMany
+ * @generated
+ */
+ public Adapter createIManyToManyAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IPersistentType <em>IPersistent Type</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.jpt.core.internal.IPersistentType
+ * @generated
+ */
+ public Adapter createIPersistentTypeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IMappedSuperclass <em>IMapped Superclass</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.jpt.core.internal.mappings.IMappedSuperclass
+ * @generated
+ */
+ public Adapter createIMappedSuperclassAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IEntity <em>IEntity</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.jpt.core.internal.mappings.IEntity
+ * @generated
+ */
+ public Adapter createIEntityAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IEmbeddable <em>IEmbeddable</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.jpt.core.internal.mappings.IEmbeddable
+ * @generated
+ */
+ public Adapter createIEmbeddableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.ITypeMapping <em>IType Mapping</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.jpt.core.internal.ITypeMapping
+ * @generated
+ */
+ public Adapter createITypeMappingAdapter() {
+ 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;
+ }
+} //JpaCoreXmlAdapterFactory
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/util/OrmSwitch.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/util/OrmSwitch.java
new file mode 100644
index 0000000000..752f88f99b
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/orm/util/OrmSwitch.java
@@ -0,0 +1,3090 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.orm.util;
+
+import java.util.List;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.IAttributeMapping;
+import org.eclipse.jpt.core.internal.IJpaContentNode;
+import org.eclipse.jpt.core.internal.IJpaEObject;
+import org.eclipse.jpt.core.internal.IJpaRootContentNode;
+import org.eclipse.jpt.core.internal.IJpaSourceObject;
+import org.eclipse.jpt.core.internal.IPersistentAttribute;
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.IXmlEObject;
+import org.eclipse.jpt.core.internal.JpaEObject;
+import org.eclipse.jpt.core.internal.XmlEObject;
+import org.eclipse.jpt.core.internal.content.orm.AbstractXmlColumn;
+import org.eclipse.jpt.core.internal.content.orm.AbstractXmlNamedColumn;
+import org.eclipse.jpt.core.internal.content.orm.AbstractXmlQuery;
+import org.eclipse.jpt.core.internal.content.orm.AbstractXmlTable;
+import org.eclipse.jpt.core.internal.content.orm.EntityMappings;
+import org.eclipse.jpt.core.internal.content.orm.EntityMappingsForXml;
+import org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal;
+import org.eclipse.jpt.core.internal.content.orm.IXmlColumnMapping;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaults;
+import org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsForXml;
+import org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaultsInternal;
+import org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadata;
+import org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataForXml;
+import org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadataInternal;
+import org.eclipse.jpt.core.internal.content.orm.XmlAssociationOverride;
+import org.eclipse.jpt.core.internal.content.orm.XmlAttributeMapping;
+import org.eclipse.jpt.core.internal.content.orm.XmlAttributeOverride;
+import org.eclipse.jpt.core.internal.content.orm.XmlBasic;
+import org.eclipse.jpt.core.internal.content.orm.XmlColumn;
+import org.eclipse.jpt.core.internal.content.orm.XmlDiscriminatorColumn;
+import org.eclipse.jpt.core.internal.content.orm.XmlEmbeddable;
+import org.eclipse.jpt.core.internal.content.orm.XmlEmbedded;
+import org.eclipse.jpt.core.internal.content.orm.XmlEmbeddedId;
+import org.eclipse.jpt.core.internal.content.orm.XmlEntity;
+import org.eclipse.jpt.core.internal.content.orm.XmlEntityForXml;
+import org.eclipse.jpt.core.internal.content.orm.XmlEntityInternal;
+import org.eclipse.jpt.core.internal.content.orm.XmlGeneratedValue;
+import org.eclipse.jpt.core.internal.content.orm.XmlGenerator;
+import org.eclipse.jpt.core.internal.content.orm.XmlId;
+import org.eclipse.jpt.core.internal.content.orm.XmlJoinColumn;
+import org.eclipse.jpt.core.internal.content.orm.XmlJoinTable;
+import org.eclipse.jpt.core.internal.content.orm.XmlManyToMany;
+import org.eclipse.jpt.core.internal.content.orm.XmlManyToOne;
+import org.eclipse.jpt.core.internal.content.orm.XmlMappedSuperclass;
+import org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMapping;
+import org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMappingForXml;
+import org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMappingInternal;
+import org.eclipse.jpt.core.internal.content.orm.XmlNamedNativeQuery;
+import org.eclipse.jpt.core.internal.content.orm.XmlNamedQuery;
+import org.eclipse.jpt.core.internal.content.orm.XmlNullAttributeMapping;
+import org.eclipse.jpt.core.internal.content.orm.XmlOneToMany;
+import org.eclipse.jpt.core.internal.content.orm.XmlOneToOne;
+import org.eclipse.jpt.core.internal.content.orm.XmlOrderBy;
+import org.eclipse.jpt.core.internal.content.orm.XmlOverride;
+import org.eclipse.jpt.core.internal.content.orm.XmlPersistentAttribute;
+import org.eclipse.jpt.core.internal.content.orm.XmlPersistentType;
+import org.eclipse.jpt.core.internal.content.orm.XmlPrimaryKeyJoinColumn;
+import org.eclipse.jpt.core.internal.content.orm.XmlQueryHint;
+import org.eclipse.jpt.core.internal.content.orm.XmlRelationshipMapping;
+import org.eclipse.jpt.core.internal.content.orm.XmlRootContentNode;
+import org.eclipse.jpt.core.internal.content.orm.XmlSecondaryTable;
+import org.eclipse.jpt.core.internal.content.orm.XmlSequenceGenerator;
+import org.eclipse.jpt.core.internal.content.orm.XmlSingleRelationshipMapping;
+import org.eclipse.jpt.core.internal.content.orm.XmlTable;
+import org.eclipse.jpt.core.internal.content.orm.XmlTableGenerator;
+import org.eclipse.jpt.core.internal.content.orm.XmlTransient;
+import org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping;
+import org.eclipse.jpt.core.internal.content.orm.XmlVersion;
+import org.eclipse.jpt.core.internal.mappings.IAbstractColumn;
+import org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.IAssociationOverride;
+import org.eclipse.jpt.core.internal.mappings.IAttributeOverride;
+import org.eclipse.jpt.core.internal.mappings.IBasic;
+import org.eclipse.jpt.core.internal.mappings.IColumn;
+import org.eclipse.jpt.core.internal.mappings.IColumnMapping;
+import org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn;
+import org.eclipse.jpt.core.internal.mappings.IEmbeddable;
+import org.eclipse.jpt.core.internal.mappings.IEmbedded;
+import org.eclipse.jpt.core.internal.mappings.IEmbeddedId;
+import org.eclipse.jpt.core.internal.mappings.IEntity;
+import org.eclipse.jpt.core.internal.mappings.IGeneratedValue;
+import org.eclipse.jpt.core.internal.mappings.IGenerator;
+import org.eclipse.jpt.core.internal.mappings.IId;
+import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.IJoinTable;
+import org.eclipse.jpt.core.internal.mappings.IManyToMany;
+import org.eclipse.jpt.core.internal.mappings.IManyToOne;
+import org.eclipse.jpt.core.internal.mappings.IMappedSuperclass;
+import org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.INamedColumn;
+import org.eclipse.jpt.core.internal.mappings.INamedNativeQuery;
+import org.eclipse.jpt.core.internal.mappings.INamedQuery;
+import org.eclipse.jpt.core.internal.mappings.INonOwningMapping;
+import org.eclipse.jpt.core.internal.mappings.IOneToMany;
+import org.eclipse.jpt.core.internal.mappings.IOneToOne;
+import org.eclipse.jpt.core.internal.mappings.IOrderBy;
+import org.eclipse.jpt.core.internal.mappings.IOverride;
+import org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.IQuery;
+import org.eclipse.jpt.core.internal.mappings.IQueryHint;
+import org.eclipse.jpt.core.internal.mappings.IRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.ISecondaryTable;
+import org.eclipse.jpt.core.internal.mappings.ISequenceGenerator;
+import org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.ITable;
+import org.eclipse.jpt.core.internal.mappings.ITableGenerator;
+import org.eclipse.jpt.core.internal.mappings.ITransient;
+import org.eclipse.jpt.core.internal.mappings.IVersion;
+
+/**
+ * <!-- 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.jpt.core.internal.content.orm.OrmPackage
+ * @generated
+ */
+public class OrmSwitch<T>
+{
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static OrmPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public OrmSwitch() {
+ if (modelPackage == null) {
+ modelPackage = OrmPackage.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 T 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 T 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 T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case OrmPackage.XML_ROOT_CONTENT_NODE : {
+ XmlRootContentNode xmlRootContentNode = (XmlRootContentNode) theEObject;
+ T result = caseXmlRootContentNode(xmlRootContentNode);
+ if (result == null)
+ result = caseXmlEObject(xmlRootContentNode);
+ if (result == null)
+ result = caseIJpaRootContentNode(xmlRootContentNode);
+ if (result == null)
+ result = caseJpaEObject(xmlRootContentNode);
+ if (result == null)
+ result = caseIXmlEObject(xmlRootContentNode);
+ if (result == null)
+ result = caseIJpaContentNode(xmlRootContentNode);
+ if (result == null)
+ result = caseIJpaEObject(xmlRootContentNode);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlRootContentNode);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.ENTITY_MAPPINGS_INTERNAL : {
+ EntityMappingsInternal entityMappingsInternal = (EntityMappingsInternal) theEObject;
+ T result = caseEntityMappingsInternal(entityMappingsInternal);
+ if (result == null)
+ result = caseXmlEObject(entityMappingsInternal);
+ if (result == null)
+ result = caseIJpaContentNode(entityMappingsInternal);
+ if (result == null)
+ result = caseEntityMappingsForXml(entityMappingsInternal);
+ if (result == null)
+ result = caseEntityMappings(entityMappingsInternal);
+ if (result == null)
+ result = caseJpaEObject(entityMappingsInternal);
+ if (result == null)
+ result = caseIXmlEObject(entityMappingsInternal);
+ if (result == null)
+ result = caseIJpaSourceObject(entityMappingsInternal);
+ if (result == null)
+ result = caseIJpaEObject(entityMappingsInternal);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.ENTITY_MAPPINGS : {
+ EntityMappings entityMappings = (EntityMappings) theEObject;
+ T result = caseEntityMappings(entityMappings);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.ENTITY_MAPPINGS_FOR_XML : {
+ EntityMappingsForXml entityMappingsForXml = (EntityMappingsForXml) theEObject;
+ T result = caseEntityMappingsForXml(entityMappingsForXml);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_TYPE_MAPPING : {
+ XmlTypeMapping xmlTypeMapping = (XmlTypeMapping) theEObject;
+ T result = caseXmlTypeMapping(xmlTypeMapping);
+ if (result == null)
+ result = caseXmlEObject(xmlTypeMapping);
+ if (result == null)
+ result = caseITypeMapping(xmlTypeMapping);
+ if (result == null)
+ result = caseJpaEObject(xmlTypeMapping);
+ if (result == null)
+ result = caseIXmlEObject(xmlTypeMapping);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlTypeMapping);
+ if (result == null)
+ result = caseIJpaEObject(xmlTypeMapping);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_PERSISTENT_TYPE : {
+ XmlPersistentType xmlPersistentType = (XmlPersistentType) theEObject;
+ T result = caseXmlPersistentType(xmlPersistentType);
+ if (result == null)
+ result = caseXmlEObject(xmlPersistentType);
+ if (result == null)
+ result = caseIPersistentType(xmlPersistentType);
+ if (result == null)
+ result = caseJpaEObject(xmlPersistentType);
+ if (result == null)
+ result = caseIXmlEObject(xmlPersistentType);
+ if (result == null)
+ result = caseIJpaContentNode(xmlPersistentType);
+ if (result == null)
+ result = caseIJpaEObject(xmlPersistentType);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlPersistentType);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_MAPPED_SUPERCLASS : {
+ XmlMappedSuperclass xmlMappedSuperclass = (XmlMappedSuperclass) theEObject;
+ T result = caseXmlMappedSuperclass(xmlMappedSuperclass);
+ if (result == null)
+ result = caseXmlTypeMapping(xmlMappedSuperclass);
+ if (result == null)
+ result = caseIMappedSuperclass(xmlMappedSuperclass);
+ if (result == null)
+ result = caseXmlEObject(xmlMappedSuperclass);
+ if (result == null)
+ result = caseITypeMapping(xmlMappedSuperclass);
+ if (result == null)
+ result = caseJpaEObject(xmlMappedSuperclass);
+ if (result == null)
+ result = caseIXmlEObject(xmlMappedSuperclass);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlMappedSuperclass);
+ if (result == null)
+ result = caseIJpaEObject(xmlMappedSuperclass);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_ENTITY_INTERNAL : {
+ XmlEntityInternal xmlEntityInternal = (XmlEntityInternal) theEObject;
+ T result = caseXmlEntityInternal(xmlEntityInternal);
+ if (result == null)
+ result = caseXmlTypeMapping(xmlEntityInternal);
+ if (result == null)
+ result = caseXmlEntityForXml(xmlEntityInternal);
+ if (result == null)
+ result = caseXmlEntity(xmlEntityInternal);
+ if (result == null)
+ result = caseXmlEObject(xmlEntityInternal);
+ if (result == null)
+ result = caseITypeMapping(xmlEntityInternal);
+ if (result == null)
+ result = caseIEntity(xmlEntityInternal);
+ if (result == null)
+ result = caseJpaEObject(xmlEntityInternal);
+ if (result == null)
+ result = caseIXmlEObject(xmlEntityInternal);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlEntityInternal);
+ if (result == null)
+ result = caseIJpaEObject(xmlEntityInternal);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_ENTITY_FOR_XML : {
+ XmlEntityForXml xmlEntityForXml = (XmlEntityForXml) theEObject;
+ T result = caseXmlEntityForXml(xmlEntityForXml);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_ENTITY : {
+ XmlEntity xmlEntity = (XmlEntity) theEObject;
+ T result = caseXmlEntity(xmlEntity);
+ if (result == null)
+ result = caseIEntity(xmlEntity);
+ if (result == null)
+ result = caseITypeMapping(xmlEntity);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlEntity);
+ if (result == null)
+ result = caseIJpaEObject(xmlEntity);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_EMBEDDABLE : {
+ XmlEmbeddable xmlEmbeddable = (XmlEmbeddable) theEObject;
+ T result = caseXmlEmbeddable(xmlEmbeddable);
+ if (result == null)
+ result = caseXmlTypeMapping(xmlEmbeddable);
+ if (result == null)
+ result = caseIEmbeddable(xmlEmbeddable);
+ if (result == null)
+ result = caseXmlEObject(xmlEmbeddable);
+ if (result == null)
+ result = caseITypeMapping(xmlEmbeddable);
+ if (result == null)
+ result = caseJpaEObject(xmlEmbeddable);
+ if (result == null)
+ result = caseIXmlEObject(xmlEmbeddable);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlEmbeddable);
+ if (result == null)
+ result = caseIJpaEObject(xmlEmbeddable);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_ATTRIBUTE_MAPPING : {
+ XmlAttributeMapping xmlAttributeMapping = (XmlAttributeMapping) theEObject;
+ T result = caseXmlAttributeMapping(xmlAttributeMapping);
+ if (result == null)
+ result = caseXmlEObject(xmlAttributeMapping);
+ if (result == null)
+ result = caseIAttributeMapping(xmlAttributeMapping);
+ if (result == null)
+ result = caseJpaEObject(xmlAttributeMapping);
+ if (result == null)
+ result = caseIXmlEObject(xmlAttributeMapping);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlAttributeMapping);
+ if (result == null)
+ result = caseIJpaEObject(xmlAttributeMapping);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_NULL_ATTRIBUTE_MAPPING : {
+ XmlNullAttributeMapping xmlNullAttributeMapping = (XmlNullAttributeMapping) theEObject;
+ T result = caseXmlNullAttributeMapping(xmlNullAttributeMapping);
+ if (result == null)
+ result = caseXmlAttributeMapping(xmlNullAttributeMapping);
+ if (result == null)
+ result = caseXmlEObject(xmlNullAttributeMapping);
+ if (result == null)
+ result = caseIAttributeMapping(xmlNullAttributeMapping);
+ if (result == null)
+ result = caseJpaEObject(xmlNullAttributeMapping);
+ if (result == null)
+ result = caseIXmlEObject(xmlNullAttributeMapping);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlNullAttributeMapping);
+ if (result == null)
+ result = caseIJpaEObject(xmlNullAttributeMapping);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_BASIC : {
+ XmlBasic xmlBasic = (XmlBasic) theEObject;
+ T result = caseXmlBasic(xmlBasic);
+ if (result == null)
+ result = caseXmlAttributeMapping(xmlBasic);
+ if (result == null)
+ result = caseIBasic(xmlBasic);
+ if (result == null)
+ result = caseIXmlColumnMapping(xmlBasic);
+ if (result == null)
+ result = caseXmlEObject(xmlBasic);
+ if (result == null)
+ result = caseIAttributeMapping(xmlBasic);
+ if (result == null)
+ result = caseIColumnMapping(xmlBasic);
+ if (result == null)
+ result = caseJpaEObject(xmlBasic);
+ if (result == null)
+ result = caseIXmlEObject(xmlBasic);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlBasic);
+ if (result == null)
+ result = caseIJpaEObject(xmlBasic);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_ID : {
+ XmlId xmlId = (XmlId) theEObject;
+ T result = caseXmlId(xmlId);
+ if (result == null)
+ result = caseXmlAttributeMapping(xmlId);
+ if (result == null)
+ result = caseIId(xmlId);
+ if (result == null)
+ result = caseIXmlColumnMapping(xmlId);
+ if (result == null)
+ result = caseXmlEObject(xmlId);
+ if (result == null)
+ result = caseIAttributeMapping(xmlId);
+ if (result == null)
+ result = caseIColumnMapping(xmlId);
+ if (result == null)
+ result = caseJpaEObject(xmlId);
+ if (result == null)
+ result = caseIXmlEObject(xmlId);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlId);
+ if (result == null)
+ result = caseIJpaEObject(xmlId);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_TRANSIENT : {
+ XmlTransient xmlTransient = (XmlTransient) theEObject;
+ T result = caseXmlTransient(xmlTransient);
+ if (result == null)
+ result = caseXmlAttributeMapping(xmlTransient);
+ if (result == null)
+ result = caseITransient(xmlTransient);
+ if (result == null)
+ result = caseXmlEObject(xmlTransient);
+ if (result == null)
+ result = caseIAttributeMapping(xmlTransient);
+ if (result == null)
+ result = caseJpaEObject(xmlTransient);
+ if (result == null)
+ result = caseIXmlEObject(xmlTransient);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlTransient);
+ if (result == null)
+ result = caseIJpaEObject(xmlTransient);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_EMBEDDED : {
+ XmlEmbedded xmlEmbedded = (XmlEmbedded) theEObject;
+ T result = caseXmlEmbedded(xmlEmbedded);
+ if (result == null)
+ result = caseXmlAttributeMapping(xmlEmbedded);
+ if (result == null)
+ result = caseIEmbedded(xmlEmbedded);
+ if (result == null)
+ result = caseXmlEObject(xmlEmbedded);
+ if (result == null)
+ result = caseIAttributeMapping(xmlEmbedded);
+ if (result == null)
+ result = caseJpaEObject(xmlEmbedded);
+ if (result == null)
+ result = caseIXmlEObject(xmlEmbedded);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlEmbedded);
+ if (result == null)
+ result = caseIJpaEObject(xmlEmbedded);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_EMBEDDED_ID : {
+ XmlEmbeddedId xmlEmbeddedId = (XmlEmbeddedId) theEObject;
+ T result = caseXmlEmbeddedId(xmlEmbeddedId);
+ if (result == null)
+ result = caseXmlAttributeMapping(xmlEmbeddedId);
+ if (result == null)
+ result = caseIEmbeddedId(xmlEmbeddedId);
+ if (result == null)
+ result = caseXmlEObject(xmlEmbeddedId);
+ if (result == null)
+ result = caseIAttributeMapping(xmlEmbeddedId);
+ if (result == null)
+ result = caseJpaEObject(xmlEmbeddedId);
+ if (result == null)
+ result = caseIXmlEObject(xmlEmbeddedId);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlEmbeddedId);
+ if (result == null)
+ result = caseIJpaEObject(xmlEmbeddedId);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_VERSION : {
+ XmlVersion xmlVersion = (XmlVersion) theEObject;
+ T result = caseXmlVersion(xmlVersion);
+ if (result == null)
+ result = caseXmlAttributeMapping(xmlVersion);
+ if (result == null)
+ result = caseIVersion(xmlVersion);
+ if (result == null)
+ result = caseIXmlColumnMapping(xmlVersion);
+ if (result == null)
+ result = caseXmlEObject(xmlVersion);
+ if (result == null)
+ result = caseIAttributeMapping(xmlVersion);
+ if (result == null)
+ result = caseIColumnMapping(xmlVersion);
+ if (result == null)
+ result = caseJpaEObject(xmlVersion);
+ if (result == null)
+ result = caseIXmlEObject(xmlVersion);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlVersion);
+ if (result == null)
+ result = caseIJpaEObject(xmlVersion);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_INTERNAL : {
+ XmlMultiRelationshipMappingInternal xmlMultiRelationshipMappingInternal = (XmlMultiRelationshipMappingInternal) theEObject;
+ T result = caseXmlMultiRelationshipMappingInternal(xmlMultiRelationshipMappingInternal);
+ if (result == null)
+ result = caseXmlRelationshipMapping(xmlMultiRelationshipMappingInternal);
+ if (result == null)
+ result = caseIMultiRelationshipMapping(xmlMultiRelationshipMappingInternal);
+ if (result == null)
+ result = caseXmlMultiRelationshipMappingForXml(xmlMultiRelationshipMappingInternal);
+ if (result == null)
+ result = caseXmlMultiRelationshipMapping(xmlMultiRelationshipMappingInternal);
+ if (result == null)
+ result = caseXmlAttributeMapping(xmlMultiRelationshipMappingInternal);
+ if (result == null)
+ result = caseIRelationshipMapping(xmlMultiRelationshipMappingInternal);
+ if (result == null)
+ result = caseINonOwningMapping(xmlMultiRelationshipMappingInternal);
+ if (result == null)
+ result = caseXmlEObject(xmlMultiRelationshipMappingInternal);
+ if (result == null)
+ result = caseIAttributeMapping(xmlMultiRelationshipMappingInternal);
+ if (result == null)
+ result = caseJpaEObject(xmlMultiRelationshipMappingInternal);
+ if (result == null)
+ result = caseIXmlEObject(xmlMultiRelationshipMappingInternal);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlMultiRelationshipMappingInternal);
+ if (result == null)
+ result = caseIJpaEObject(xmlMultiRelationshipMappingInternal);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING_FOR_XML : {
+ XmlMultiRelationshipMappingForXml xmlMultiRelationshipMappingForXml = (XmlMultiRelationshipMappingForXml) theEObject;
+ T result = caseXmlMultiRelationshipMappingForXml(xmlMultiRelationshipMappingForXml);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_MULTI_RELATIONSHIP_MAPPING : {
+ XmlMultiRelationshipMapping xmlMultiRelationshipMapping = (XmlMultiRelationshipMapping) theEObject;
+ T result = caseXmlMultiRelationshipMapping(xmlMultiRelationshipMapping);
+ if (result == null)
+ result = caseIMultiRelationshipMapping(xmlMultiRelationshipMapping);
+ if (result == null)
+ result = caseINonOwningMapping(xmlMultiRelationshipMapping);
+ if (result == null)
+ result = caseIRelationshipMapping(xmlMultiRelationshipMapping);
+ if (result == null)
+ result = caseIAttributeMapping(xmlMultiRelationshipMapping);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlMultiRelationshipMapping);
+ if (result == null)
+ result = caseIJpaEObject(xmlMultiRelationshipMapping);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_ONE_TO_MANY : {
+ XmlOneToMany xmlOneToMany = (XmlOneToMany) theEObject;
+ T result = caseXmlOneToMany(xmlOneToMany);
+ if (result == null)
+ result = caseXmlMultiRelationshipMappingInternal(xmlOneToMany);
+ if (result == null)
+ result = caseIOneToMany(xmlOneToMany);
+ if (result == null)
+ result = caseXmlRelationshipMapping(xmlOneToMany);
+ if (result == null)
+ result = caseIMultiRelationshipMapping(xmlOneToMany);
+ if (result == null)
+ result = caseXmlMultiRelationshipMappingForXml(xmlOneToMany);
+ if (result == null)
+ result = caseXmlMultiRelationshipMapping(xmlOneToMany);
+ if (result == null)
+ result = caseXmlAttributeMapping(xmlOneToMany);
+ if (result == null)
+ result = caseIRelationshipMapping(xmlOneToMany);
+ if (result == null)
+ result = caseINonOwningMapping(xmlOneToMany);
+ if (result == null)
+ result = caseXmlEObject(xmlOneToMany);
+ if (result == null)
+ result = caseIAttributeMapping(xmlOneToMany);
+ if (result == null)
+ result = caseJpaEObject(xmlOneToMany);
+ if (result == null)
+ result = caseIXmlEObject(xmlOneToMany);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlOneToMany);
+ if (result == null)
+ result = caseIJpaEObject(xmlOneToMany);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_MANY_TO_MANY : {
+ XmlManyToMany xmlManyToMany = (XmlManyToMany) theEObject;
+ T result = caseXmlManyToMany(xmlManyToMany);
+ if (result == null)
+ result = caseXmlMultiRelationshipMappingInternal(xmlManyToMany);
+ if (result == null)
+ result = caseIManyToMany(xmlManyToMany);
+ if (result == null)
+ result = caseXmlRelationshipMapping(xmlManyToMany);
+ if (result == null)
+ result = caseIMultiRelationshipMapping(xmlManyToMany);
+ if (result == null)
+ result = caseXmlMultiRelationshipMappingForXml(xmlManyToMany);
+ if (result == null)
+ result = caseXmlMultiRelationshipMapping(xmlManyToMany);
+ if (result == null)
+ result = caseXmlAttributeMapping(xmlManyToMany);
+ if (result == null)
+ result = caseIRelationshipMapping(xmlManyToMany);
+ if (result == null)
+ result = caseINonOwningMapping(xmlManyToMany);
+ if (result == null)
+ result = caseXmlEObject(xmlManyToMany);
+ if (result == null)
+ result = caseIAttributeMapping(xmlManyToMany);
+ if (result == null)
+ result = caseJpaEObject(xmlManyToMany);
+ if (result == null)
+ result = caseIXmlEObject(xmlManyToMany);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlManyToMany);
+ if (result == null)
+ result = caseIJpaEObject(xmlManyToMany);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_PERSISTENT_ATTRIBUTE : {
+ XmlPersistentAttribute xmlPersistentAttribute = (XmlPersistentAttribute) theEObject;
+ T result = caseXmlPersistentAttribute(xmlPersistentAttribute);
+ if (result == null)
+ result = caseXmlEObject(xmlPersistentAttribute);
+ if (result == null)
+ result = caseIPersistentAttribute(xmlPersistentAttribute);
+ if (result == null)
+ result = caseJpaEObject(xmlPersistentAttribute);
+ if (result == null)
+ result = caseIXmlEObject(xmlPersistentAttribute);
+ if (result == null)
+ result = caseIJpaContentNode(xmlPersistentAttribute);
+ if (result == null)
+ result = caseIJpaEObject(xmlPersistentAttribute);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlPersistentAttribute);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.PERSISTENCE_UNIT_METADATA_INTERNAL : {
+ PersistenceUnitMetadataInternal persistenceUnitMetadataInternal = (PersistenceUnitMetadataInternal) theEObject;
+ T result = casePersistenceUnitMetadataInternal(persistenceUnitMetadataInternal);
+ if (result == null)
+ result = caseXmlEObject(persistenceUnitMetadataInternal);
+ if (result == null)
+ result = casePersistenceUnitMetadataForXml(persistenceUnitMetadataInternal);
+ if (result == null)
+ result = casePersistenceUnitMetadata(persistenceUnitMetadataInternal);
+ if (result == null)
+ result = caseJpaEObject(persistenceUnitMetadataInternal);
+ if (result == null)
+ result = caseIXmlEObject(persistenceUnitMetadataInternal);
+ if (result == null)
+ result = caseIJpaEObject(persistenceUnitMetadataInternal);
+ if (result == null)
+ result = caseIJpaSourceObject(persistenceUnitMetadataInternal);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.PERSISTENCE_UNIT_METADATA : {
+ PersistenceUnitMetadata persistenceUnitMetadata = (PersistenceUnitMetadata) theEObject;
+ T result = casePersistenceUnitMetadata(persistenceUnitMetadata);
+ if (result == null)
+ result = caseIXmlEObject(persistenceUnitMetadata);
+ if (result == null)
+ result = caseIJpaEObject(persistenceUnitMetadata);
+ if (result == null)
+ result = caseIJpaSourceObject(persistenceUnitMetadata);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.PERSISTENCE_UNIT_METADATA_FOR_XML : {
+ PersistenceUnitMetadataForXml persistenceUnitMetadataForXml = (PersistenceUnitMetadataForXml) theEObject;
+ T result = casePersistenceUnitMetadataForXml(persistenceUnitMetadataForXml);
+ if (result == null)
+ result = caseIXmlEObject(persistenceUnitMetadataForXml);
+ if (result == null)
+ result = caseIJpaEObject(persistenceUnitMetadataForXml);
+ if (result == null)
+ result = caseIJpaSourceObject(persistenceUnitMetadataForXml);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_INTERNAL : {
+ PersistenceUnitDefaultsInternal persistenceUnitDefaultsInternal = (PersistenceUnitDefaultsInternal) theEObject;
+ T result = casePersistenceUnitDefaultsInternal(persistenceUnitDefaultsInternal);
+ if (result == null)
+ result = caseXmlEObject(persistenceUnitDefaultsInternal);
+ if (result == null)
+ result = casePersistenceUnitDefaults(persistenceUnitDefaultsInternal);
+ if (result == null)
+ result = casePersistenceUnitDefaultsForXml(persistenceUnitDefaultsInternal);
+ if (result == null)
+ result = caseJpaEObject(persistenceUnitDefaultsInternal);
+ if (result == null)
+ result = caseIXmlEObject(persistenceUnitDefaultsInternal);
+ if (result == null)
+ result = caseIJpaEObject(persistenceUnitDefaultsInternal);
+ if (result == null)
+ result = caseIJpaSourceObject(persistenceUnitDefaultsInternal);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS : {
+ PersistenceUnitDefaults persistenceUnitDefaults = (PersistenceUnitDefaults) theEObject;
+ T result = casePersistenceUnitDefaults(persistenceUnitDefaults);
+ if (result == null)
+ result = caseIXmlEObject(persistenceUnitDefaults);
+ if (result == null)
+ result = caseIJpaEObject(persistenceUnitDefaults);
+ if (result == null)
+ result = caseIJpaSourceObject(persistenceUnitDefaults);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.PERSISTENCE_UNIT_DEFAULTS_FOR_XML : {
+ PersistenceUnitDefaultsForXml persistenceUnitDefaultsForXml = (PersistenceUnitDefaultsForXml) theEObject;
+ T result = casePersistenceUnitDefaultsForXml(persistenceUnitDefaultsForXml);
+ if (result == null)
+ result = caseIXmlEObject(persistenceUnitDefaultsForXml);
+ if (result == null)
+ result = caseIJpaEObject(persistenceUnitDefaultsForXml);
+ if (result == null)
+ result = caseIJpaSourceObject(persistenceUnitDefaultsForXml);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_TABLE : {
+ XmlTable xmlTable = (XmlTable) theEObject;
+ T result = caseXmlTable(xmlTable);
+ if (result == null)
+ result = caseAbstractXmlTable(xmlTable);
+ if (result == null)
+ result = caseITable(xmlTable);
+ if (result == null)
+ result = caseXmlEObject(xmlTable);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlTable);
+ if (result == null)
+ result = caseJpaEObject(xmlTable);
+ if (result == null)
+ result = caseIXmlEObject(xmlTable);
+ if (result == null)
+ result = caseIJpaEObject(xmlTable);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.ABSTRACT_XML_NAMED_COLUMN : {
+ AbstractXmlNamedColumn abstractXmlNamedColumn = (AbstractXmlNamedColumn) theEObject;
+ T result = caseAbstractXmlNamedColumn(abstractXmlNamedColumn);
+ if (result == null)
+ result = caseXmlEObject(abstractXmlNamedColumn);
+ if (result == null)
+ result = caseINamedColumn(abstractXmlNamedColumn);
+ if (result == null)
+ result = caseJpaEObject(abstractXmlNamedColumn);
+ if (result == null)
+ result = caseIXmlEObject(abstractXmlNamedColumn);
+ if (result == null)
+ result = caseIJpaSourceObject(abstractXmlNamedColumn);
+ if (result == null)
+ result = caseIJpaEObject(abstractXmlNamedColumn);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.ABSTRACT_XML_COLUMN : {
+ AbstractXmlColumn abstractXmlColumn = (AbstractXmlColumn) theEObject;
+ T result = caseAbstractXmlColumn(abstractXmlColumn);
+ if (result == null)
+ result = caseAbstractXmlNamedColumn(abstractXmlColumn);
+ if (result == null)
+ result = caseIAbstractColumn(abstractXmlColumn);
+ if (result == null)
+ result = caseXmlEObject(abstractXmlColumn);
+ if (result == null)
+ result = caseINamedColumn(abstractXmlColumn);
+ if (result == null)
+ result = caseJpaEObject(abstractXmlColumn);
+ if (result == null)
+ result = caseIXmlEObject(abstractXmlColumn);
+ if (result == null)
+ result = caseIJpaSourceObject(abstractXmlColumn);
+ if (result == null)
+ result = caseIJpaEObject(abstractXmlColumn);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_COLUMN : {
+ XmlColumn xmlColumn = (XmlColumn) theEObject;
+ T result = caseXmlColumn(xmlColumn);
+ if (result == null)
+ result = caseAbstractXmlColumn(xmlColumn);
+ if (result == null)
+ result = caseIColumn(xmlColumn);
+ if (result == null)
+ result = caseAbstractXmlNamedColumn(xmlColumn);
+ if (result == null)
+ result = caseIAbstractColumn(xmlColumn);
+ if (result == null)
+ result = caseXmlEObject(xmlColumn);
+ if (result == null)
+ result = caseINamedColumn(xmlColumn);
+ if (result == null)
+ result = caseJpaEObject(xmlColumn);
+ if (result == null)
+ result = caseIXmlEObject(xmlColumn);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlColumn);
+ if (result == null)
+ result = caseIJpaEObject(xmlColumn);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_JOIN_COLUMN : {
+ XmlJoinColumn xmlJoinColumn = (XmlJoinColumn) theEObject;
+ T result = caseXmlJoinColumn(xmlJoinColumn);
+ if (result == null)
+ result = caseAbstractXmlColumn(xmlJoinColumn);
+ if (result == null)
+ result = caseIJoinColumn(xmlJoinColumn);
+ if (result == null)
+ result = caseAbstractXmlNamedColumn(xmlJoinColumn);
+ if (result == null)
+ result = caseIAbstractColumn(xmlJoinColumn);
+ if (result == null)
+ result = caseIAbstractJoinColumn(xmlJoinColumn);
+ if (result == null)
+ result = caseXmlEObject(xmlJoinColumn);
+ if (result == null)
+ result = caseINamedColumn(xmlJoinColumn);
+ if (result == null)
+ result = caseJpaEObject(xmlJoinColumn);
+ if (result == null)
+ result = caseIXmlEObject(xmlJoinColumn);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlJoinColumn);
+ if (result == null)
+ result = caseIJpaEObject(xmlJoinColumn);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.IXML_COLUMN_MAPPING : {
+ IXmlColumnMapping iXmlColumnMapping = (IXmlColumnMapping) theEObject;
+ T result = caseIXmlColumnMapping(iXmlColumnMapping);
+ if (result == null)
+ result = caseIColumnMapping(iXmlColumnMapping);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_MANY_TO_ONE : {
+ XmlManyToOne xmlManyToOne = (XmlManyToOne) theEObject;
+ T result = caseXmlManyToOne(xmlManyToOne);
+ if (result == null)
+ result = caseXmlSingleRelationshipMapping(xmlManyToOne);
+ if (result == null)
+ result = caseIManyToOne(xmlManyToOne);
+ if (result == null)
+ result = caseXmlRelationshipMapping(xmlManyToOne);
+ if (result == null)
+ result = caseISingleRelationshipMapping(xmlManyToOne);
+ if (result == null)
+ result = caseXmlAttributeMapping(xmlManyToOne);
+ if (result == null)
+ result = caseIRelationshipMapping(xmlManyToOne);
+ if (result == null)
+ result = caseXmlEObject(xmlManyToOne);
+ if (result == null)
+ result = caseIAttributeMapping(xmlManyToOne);
+ if (result == null)
+ result = caseJpaEObject(xmlManyToOne);
+ if (result == null)
+ result = caseIXmlEObject(xmlManyToOne);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlManyToOne);
+ if (result == null)
+ result = caseIJpaEObject(xmlManyToOne);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_ONE_TO_ONE : {
+ XmlOneToOne xmlOneToOne = (XmlOneToOne) theEObject;
+ T result = caseXmlOneToOne(xmlOneToOne);
+ if (result == null)
+ result = caseXmlSingleRelationshipMapping(xmlOneToOne);
+ if (result == null)
+ result = caseIOneToOne(xmlOneToOne);
+ if (result == null)
+ result = caseXmlRelationshipMapping(xmlOneToOne);
+ if (result == null)
+ result = caseISingleRelationshipMapping(xmlOneToOne);
+ if (result == null)
+ result = caseINonOwningMapping(xmlOneToOne);
+ if (result == null)
+ result = caseXmlAttributeMapping(xmlOneToOne);
+ if (result == null)
+ result = caseIRelationshipMapping(xmlOneToOne);
+ if (result == null)
+ result = caseXmlEObject(xmlOneToOne);
+ if (result == null)
+ result = caseIAttributeMapping(xmlOneToOne);
+ if (result == null)
+ result = caseJpaEObject(xmlOneToOne);
+ if (result == null)
+ result = caseIXmlEObject(xmlOneToOne);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlOneToOne);
+ if (result == null)
+ result = caseIJpaEObject(xmlOneToOne);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_SINGLE_RELATIONSHIP_MAPPING : {
+ XmlSingleRelationshipMapping xmlSingleRelationshipMapping = (XmlSingleRelationshipMapping) theEObject;
+ T result = caseXmlSingleRelationshipMapping(xmlSingleRelationshipMapping);
+ if (result == null)
+ result = caseXmlRelationshipMapping(xmlSingleRelationshipMapping);
+ if (result == null)
+ result = caseISingleRelationshipMapping(xmlSingleRelationshipMapping);
+ if (result == null)
+ result = caseXmlAttributeMapping(xmlSingleRelationshipMapping);
+ if (result == null)
+ result = caseIRelationshipMapping(xmlSingleRelationshipMapping);
+ if (result == null)
+ result = caseXmlEObject(xmlSingleRelationshipMapping);
+ if (result == null)
+ result = caseIAttributeMapping(xmlSingleRelationshipMapping);
+ if (result == null)
+ result = caseJpaEObject(xmlSingleRelationshipMapping);
+ if (result == null)
+ result = caseIXmlEObject(xmlSingleRelationshipMapping);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlSingleRelationshipMapping);
+ if (result == null)
+ result = caseIJpaEObject(xmlSingleRelationshipMapping);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_RELATIONSHIP_MAPPING : {
+ XmlRelationshipMapping xmlRelationshipMapping = (XmlRelationshipMapping) theEObject;
+ T result = caseXmlRelationshipMapping(xmlRelationshipMapping);
+ if (result == null)
+ result = caseXmlAttributeMapping(xmlRelationshipMapping);
+ if (result == null)
+ result = caseIRelationshipMapping(xmlRelationshipMapping);
+ if (result == null)
+ result = caseXmlEObject(xmlRelationshipMapping);
+ if (result == null)
+ result = caseIAttributeMapping(xmlRelationshipMapping);
+ if (result == null)
+ result = caseJpaEObject(xmlRelationshipMapping);
+ if (result == null)
+ result = caseIXmlEObject(xmlRelationshipMapping);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlRelationshipMapping);
+ if (result == null)
+ result = caseIJpaEObject(xmlRelationshipMapping);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_JOIN_TABLE : {
+ XmlJoinTable xmlJoinTable = (XmlJoinTable) theEObject;
+ T result = caseXmlJoinTable(xmlJoinTable);
+ if (result == null)
+ result = caseAbstractXmlTable(xmlJoinTable);
+ if (result == null)
+ result = caseIJoinTable(xmlJoinTable);
+ if (result == null)
+ result = caseXmlEObject(xmlJoinTable);
+ if (result == null)
+ result = caseITable(xmlJoinTable);
+ if (result == null)
+ result = caseJpaEObject(xmlJoinTable);
+ if (result == null)
+ result = caseIXmlEObject(xmlJoinTable);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlJoinTable);
+ if (result == null)
+ result = caseIJpaEObject(xmlJoinTable);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.ABSTRACT_XML_TABLE : {
+ AbstractXmlTable abstractXmlTable = (AbstractXmlTable) theEObject;
+ T result = caseAbstractXmlTable(abstractXmlTable);
+ if (result == null)
+ result = caseXmlEObject(abstractXmlTable);
+ if (result == null)
+ result = caseITable(abstractXmlTable);
+ if (result == null)
+ result = caseJpaEObject(abstractXmlTable);
+ if (result == null)
+ result = caseIXmlEObject(abstractXmlTable);
+ if (result == null)
+ result = caseIJpaSourceObject(abstractXmlTable);
+ if (result == null)
+ result = caseIJpaEObject(abstractXmlTable);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_OVERRIDE : {
+ XmlOverride xmlOverride = (XmlOverride) theEObject;
+ T result = caseXmlOverride(xmlOverride);
+ if (result == null)
+ result = caseXmlEObject(xmlOverride);
+ if (result == null)
+ result = caseIOverride(xmlOverride);
+ if (result == null)
+ result = caseJpaEObject(xmlOverride);
+ if (result == null)
+ result = caseIXmlEObject(xmlOverride);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlOverride);
+ if (result == null)
+ result = caseIJpaEObject(xmlOverride);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_ATTRIBUTE_OVERRIDE : {
+ XmlAttributeOverride xmlAttributeOverride = (XmlAttributeOverride) theEObject;
+ T result = caseXmlAttributeOverride(xmlAttributeOverride);
+ if (result == null)
+ result = caseXmlOverride(xmlAttributeOverride);
+ if (result == null)
+ result = caseIAttributeOverride(xmlAttributeOverride);
+ if (result == null)
+ result = caseIXmlColumnMapping(xmlAttributeOverride);
+ if (result == null)
+ result = caseXmlEObject(xmlAttributeOverride);
+ if (result == null)
+ result = caseIOverride(xmlAttributeOverride);
+ if (result == null)
+ result = caseIColumnMapping(xmlAttributeOverride);
+ if (result == null)
+ result = caseJpaEObject(xmlAttributeOverride);
+ if (result == null)
+ result = caseIXmlEObject(xmlAttributeOverride);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlAttributeOverride);
+ if (result == null)
+ result = caseIJpaEObject(xmlAttributeOverride);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_ASSOCIATION_OVERRIDE : {
+ XmlAssociationOverride xmlAssociationOverride = (XmlAssociationOverride) theEObject;
+ T result = caseXmlAssociationOverride(xmlAssociationOverride);
+ if (result == null)
+ result = caseXmlOverride(xmlAssociationOverride);
+ if (result == null)
+ result = caseIAssociationOverride(xmlAssociationOverride);
+ if (result == null)
+ result = caseXmlEObject(xmlAssociationOverride);
+ if (result == null)
+ result = caseIOverride(xmlAssociationOverride);
+ if (result == null)
+ result = caseJpaEObject(xmlAssociationOverride);
+ if (result == null)
+ result = caseIXmlEObject(xmlAssociationOverride);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlAssociationOverride);
+ if (result == null)
+ result = caseIJpaEObject(xmlAssociationOverride);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_DISCRIMINATOR_COLUMN : {
+ XmlDiscriminatorColumn xmlDiscriminatorColumn = (XmlDiscriminatorColumn) theEObject;
+ T result = caseXmlDiscriminatorColumn(xmlDiscriminatorColumn);
+ if (result == null)
+ result = caseXmlEObject(xmlDiscriminatorColumn);
+ if (result == null)
+ result = caseIDiscriminatorColumn(xmlDiscriminatorColumn);
+ if (result == null)
+ result = caseJpaEObject(xmlDiscriminatorColumn);
+ if (result == null)
+ result = caseIXmlEObject(xmlDiscriminatorColumn);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlDiscriminatorColumn);
+ if (result == null)
+ result = caseIJpaEObject(xmlDiscriminatorColumn);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_SECONDARY_TABLE : {
+ XmlSecondaryTable xmlSecondaryTable = (XmlSecondaryTable) theEObject;
+ T result = caseXmlSecondaryTable(xmlSecondaryTable);
+ if (result == null)
+ result = caseAbstractXmlTable(xmlSecondaryTable);
+ if (result == null)
+ result = caseISecondaryTable(xmlSecondaryTable);
+ if (result == null)
+ result = caseXmlEObject(xmlSecondaryTable);
+ if (result == null)
+ result = caseITable(xmlSecondaryTable);
+ if (result == null)
+ result = caseJpaEObject(xmlSecondaryTable);
+ if (result == null)
+ result = caseIXmlEObject(xmlSecondaryTable);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlSecondaryTable);
+ if (result == null)
+ result = caseIJpaEObject(xmlSecondaryTable);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_PRIMARY_KEY_JOIN_COLUMN : {
+ XmlPrimaryKeyJoinColumn xmlPrimaryKeyJoinColumn = (XmlPrimaryKeyJoinColumn) theEObject;
+ T result = caseXmlPrimaryKeyJoinColumn(xmlPrimaryKeyJoinColumn);
+ if (result == null)
+ result = caseAbstractXmlNamedColumn(xmlPrimaryKeyJoinColumn);
+ if (result == null)
+ result = caseIPrimaryKeyJoinColumn(xmlPrimaryKeyJoinColumn);
+ if (result == null)
+ result = caseXmlEObject(xmlPrimaryKeyJoinColumn);
+ if (result == null)
+ result = caseINamedColumn(xmlPrimaryKeyJoinColumn);
+ if (result == null)
+ result = caseIAbstractJoinColumn(xmlPrimaryKeyJoinColumn);
+ if (result == null)
+ result = caseJpaEObject(xmlPrimaryKeyJoinColumn);
+ if (result == null)
+ result = caseIXmlEObject(xmlPrimaryKeyJoinColumn);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlPrimaryKeyJoinColumn);
+ if (result == null)
+ result = caseIJpaEObject(xmlPrimaryKeyJoinColumn);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_GENERATED_VALUE : {
+ XmlGeneratedValue xmlGeneratedValue = (XmlGeneratedValue) theEObject;
+ T result = caseXmlGeneratedValue(xmlGeneratedValue);
+ if (result == null)
+ result = caseXmlEObject(xmlGeneratedValue);
+ if (result == null)
+ result = caseIGeneratedValue(xmlGeneratedValue);
+ if (result == null)
+ result = caseJpaEObject(xmlGeneratedValue);
+ if (result == null)
+ result = caseIXmlEObject(xmlGeneratedValue);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlGeneratedValue);
+ if (result == null)
+ result = caseIJpaEObject(xmlGeneratedValue);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_GENERATOR : {
+ XmlGenerator xmlGenerator = (XmlGenerator) theEObject;
+ T result = caseXmlGenerator(xmlGenerator);
+ if (result == null)
+ result = caseXmlEObject(xmlGenerator);
+ if (result == null)
+ result = caseIGenerator(xmlGenerator);
+ if (result == null)
+ result = caseJpaEObject(xmlGenerator);
+ if (result == null)
+ result = caseIXmlEObject(xmlGenerator);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlGenerator);
+ if (result == null)
+ result = caseIJpaEObject(xmlGenerator);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_SEQUENCE_GENERATOR : {
+ XmlSequenceGenerator xmlSequenceGenerator = (XmlSequenceGenerator) theEObject;
+ T result = caseXmlSequenceGenerator(xmlSequenceGenerator);
+ if (result == null)
+ result = caseXmlGenerator(xmlSequenceGenerator);
+ if (result == null)
+ result = caseISequenceGenerator(xmlSequenceGenerator);
+ if (result == null)
+ result = caseXmlEObject(xmlSequenceGenerator);
+ if (result == null)
+ result = caseIGenerator(xmlSequenceGenerator);
+ if (result == null)
+ result = caseJpaEObject(xmlSequenceGenerator);
+ if (result == null)
+ result = caseIXmlEObject(xmlSequenceGenerator);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlSequenceGenerator);
+ if (result == null)
+ result = caseIJpaEObject(xmlSequenceGenerator);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_TABLE_GENERATOR : {
+ XmlTableGenerator xmlTableGenerator = (XmlTableGenerator) theEObject;
+ T result = caseXmlTableGenerator(xmlTableGenerator);
+ if (result == null)
+ result = caseXmlGenerator(xmlTableGenerator);
+ if (result == null)
+ result = caseITableGenerator(xmlTableGenerator);
+ if (result == null)
+ result = caseXmlEObject(xmlTableGenerator);
+ if (result == null)
+ result = caseIGenerator(xmlTableGenerator);
+ if (result == null)
+ result = caseJpaEObject(xmlTableGenerator);
+ if (result == null)
+ result = caseIXmlEObject(xmlTableGenerator);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlTableGenerator);
+ if (result == null)
+ result = caseIJpaEObject(xmlTableGenerator);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_ORDER_BY : {
+ XmlOrderBy xmlOrderBy = (XmlOrderBy) theEObject;
+ T result = caseXmlOrderBy(xmlOrderBy);
+ if (result == null)
+ result = caseXmlEObject(xmlOrderBy);
+ if (result == null)
+ result = caseIOrderBy(xmlOrderBy);
+ if (result == null)
+ result = caseJpaEObject(xmlOrderBy);
+ if (result == null)
+ result = caseIXmlEObject(xmlOrderBy);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlOrderBy);
+ if (result == null)
+ result = caseIJpaEObject(xmlOrderBy);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.ABSTRACT_XML_QUERY : {
+ AbstractXmlQuery abstractXmlQuery = (AbstractXmlQuery) theEObject;
+ T result = caseAbstractXmlQuery(abstractXmlQuery);
+ if (result == null)
+ result = caseXmlEObject(abstractXmlQuery);
+ if (result == null)
+ result = caseIQuery(abstractXmlQuery);
+ if (result == null)
+ result = caseJpaEObject(abstractXmlQuery);
+ if (result == null)
+ result = caseIXmlEObject(abstractXmlQuery);
+ if (result == null)
+ result = caseIJpaSourceObject(abstractXmlQuery);
+ if (result == null)
+ result = caseIJpaEObject(abstractXmlQuery);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_NAMED_QUERY : {
+ XmlNamedQuery xmlNamedQuery = (XmlNamedQuery) theEObject;
+ T result = caseXmlNamedQuery(xmlNamedQuery);
+ if (result == null)
+ result = caseAbstractXmlQuery(xmlNamedQuery);
+ if (result == null)
+ result = caseINamedQuery(xmlNamedQuery);
+ if (result == null)
+ result = caseXmlEObject(xmlNamedQuery);
+ if (result == null)
+ result = caseIQuery(xmlNamedQuery);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlNamedQuery);
+ if (result == null)
+ result = caseJpaEObject(xmlNamedQuery);
+ if (result == null)
+ result = caseIXmlEObject(xmlNamedQuery);
+ if (result == null)
+ result = caseIJpaEObject(xmlNamedQuery);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_NAMED_NATIVE_QUERY : {
+ XmlNamedNativeQuery xmlNamedNativeQuery = (XmlNamedNativeQuery) theEObject;
+ T result = caseXmlNamedNativeQuery(xmlNamedNativeQuery);
+ if (result == null)
+ result = caseAbstractXmlQuery(xmlNamedNativeQuery);
+ if (result == null)
+ result = caseINamedNativeQuery(xmlNamedNativeQuery);
+ if (result == null)
+ result = caseXmlEObject(xmlNamedNativeQuery);
+ if (result == null)
+ result = caseIQuery(xmlNamedNativeQuery);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlNamedNativeQuery);
+ if (result == null)
+ result = caseJpaEObject(xmlNamedNativeQuery);
+ if (result == null)
+ result = caseIXmlEObject(xmlNamedNativeQuery);
+ if (result == null)
+ result = caseIJpaEObject(xmlNamedNativeQuery);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case OrmPackage.XML_QUERY_HINT : {
+ XmlQueryHint xmlQueryHint = (XmlQueryHint) theEObject;
+ T result = caseXmlQueryHint(xmlQueryHint);
+ if (result == null)
+ result = caseXmlEObject(xmlQueryHint);
+ if (result == null)
+ result = caseIQueryHint(xmlQueryHint);
+ if (result == null)
+ result = caseJpaEObject(xmlQueryHint);
+ if (result == null)
+ result = caseIXmlEObject(xmlQueryHint);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlQueryHint);
+ if (result == null)
+ result = caseIJpaEObject(xmlQueryHint);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ default :
+ return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml EObject</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 interpretting the object as an instance of '<em>Xml EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlEObject(XmlEObject object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Root Content 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 interpretting the object as an instance of '<em>Xml Root Content Node</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlRootContentNode(XmlRootContentNode object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Entity Mappings Internal</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 interpretting the object as an instance of '<em>Entity Mappings Internal</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseEntityMappingsInternal(EntityMappingsInternal object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Entity Mappings</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 interpretting the object as an instance of '<em>Entity Mappings</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseEntityMappings(EntityMappings object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Entity Mappings For Xml</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 interpretting the object as an instance of '<em>Entity Mappings For Xml</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseEntityMappingsForXml(EntityMappingsForXml object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Type Mapping</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 interpretting the object as an instance of '<em>Xml Type Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlTypeMapping(XmlTypeMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Persistent Type</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 interpretting the object as an instance of '<em>Xml Persistent Type</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlPersistentType(XmlPersistentType object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Embeddable</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 interpretting the object as an instance of '<em>Xml Embeddable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlEmbeddable(XmlEmbeddable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Attribute Mapping</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 interpretting the object as an instance of '<em>Xml Attribute Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlAttributeMapping(XmlAttributeMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Null Attribute Mapping</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 interpretting the object as an instance of '<em>Xml Null Attribute Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlNullAttributeMapping(XmlNullAttributeMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Persistent Attribute</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 interpretting the object as an instance of '<em>Xml Persistent Attribute</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlPersistentAttribute(XmlPersistentAttribute object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Basic</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 interpretting the object as an instance of '<em>Xml Basic</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlBasic(XmlBasic object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Id</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 interpretting the object as an instance of '<em>Xml Id</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlId(XmlId object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Transient</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 interpretting the object as an instance of '<em>Xml Transient</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlTransient(XmlTransient object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Embedded</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 interpretting the object as an instance of '<em>Xml Embedded</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlEmbedded(XmlEmbedded object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Embedded Id</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 interpretting the object as an instance of '<em>Xml Embedded Id</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlEmbeddedId(XmlEmbeddedId object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Version</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 interpretting the object as an instance of '<em>Xml Version</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlVersion(XmlVersion object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Multi Relationship Mapping Internal</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 interpretting the object as an instance of '<em>Xml Multi Relationship Mapping Internal</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlMultiRelationshipMappingInternal(XmlMultiRelationshipMappingInternal object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Multi Relationship Mapping For Xml</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 interpretting the object as an instance of '<em>Xml Multi Relationship Mapping For Xml</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlMultiRelationshipMappingForXml(XmlMultiRelationshipMappingForXml object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Multi Relationship Mapping</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 interpretting the object as an instance of '<em>Xml Multi Relationship Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlMultiRelationshipMapping(XmlMultiRelationshipMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml One To Many</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 interpretting the object as an instance of '<em>Xml One To Many</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlOneToMany(XmlOneToMany object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Many To Many</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 interpretting the object as an instance of '<em>Xml Many To Many</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlManyToMany(XmlManyToMany object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Persistence Unit Metadata Internal</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 interpretting the object as an instance of '<em>Persistence Unit Metadata Internal</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T casePersistenceUnitMetadataInternal(PersistenceUnitMetadataInternal object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Persistence Unit Metadata</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 interpretting the object as an instance of '<em>Persistence Unit Metadata</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T casePersistenceUnitMetadata(PersistenceUnitMetadata object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Persistence Unit Metadata For Xml</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 interpretting the object as an instance of '<em>Persistence Unit Metadata For Xml</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T casePersistenceUnitMetadataForXml(PersistenceUnitMetadataForXml object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Persistence Unit Defaults Internal</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 interpretting the object as an instance of '<em>Persistence Unit Defaults Internal</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T casePersistenceUnitDefaultsInternal(PersistenceUnitDefaultsInternal object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Persistence Unit Defaults</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 interpretting the object as an instance of '<em>Persistence Unit Defaults</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T casePersistenceUnitDefaults(PersistenceUnitDefaults object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Persistence Unit Defaults For Xml</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 interpretting the object as an instance of '<em>Persistence Unit Defaults For Xml</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T casePersistenceUnitDefaultsForXml(PersistenceUnitDefaultsForXml object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Table</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 interpretting the object as an instance of '<em>Xml Table</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlTable(XmlTable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Abstract Xml Named Column</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 interpretting the object as an instance of '<em>Abstract Xml Named Column</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAbstractXmlNamedColumn(AbstractXmlNamedColumn object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Abstract Xml Column</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 interpretting the object as an instance of '<em>Abstract Xml Column</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAbstractXmlColumn(AbstractXmlColumn object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Column</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 interpretting the object as an instance of '<em>Xml Column</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlColumn(XmlColumn object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Join Column</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 interpretting the object as an instance of '<em>Xml Join Column</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlJoinColumn(XmlJoinColumn object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IXml Column Mapping</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 interpretting the object as an instance of '<em>IXml Column Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIXmlColumnMapping(IXmlColumnMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Many To One</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 interpretting the object as an instance of '<em>Xml Many To One</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlManyToOne(XmlManyToOne object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml One To One</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 interpretting the object as an instance of '<em>Xml One To One</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlOneToOne(XmlOneToOne object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Single Relationship Mapping</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 interpretting the object as an instance of '<em>Xml Single Relationship Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlSingleRelationshipMapping(XmlSingleRelationshipMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Relationship Mapping</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 interpretting the object as an instance of '<em>Xml Relationship Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlRelationshipMapping(XmlRelationshipMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Join Table</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 interpretting the object as an instance of '<em>Xml Join Table</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlJoinTable(XmlJoinTable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Abstract Xml Table</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 interpretting the object as an instance of '<em>Abstract Xml Table</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAbstractXmlTable(AbstractXmlTable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Override</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 interpretting the object as an instance of '<em>Xml Override</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlOverride(XmlOverride object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Attribute Override</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 interpretting the object as an instance of '<em>Xml Attribute Override</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlAttributeOverride(XmlAttributeOverride object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Association Override</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 interpretting the object as an instance of '<em>Xml Association Override</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlAssociationOverride(XmlAssociationOverride object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Discriminator Column</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 interpretting the object as an instance of '<em>Xml Discriminator Column</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlDiscriminatorColumn(XmlDiscriminatorColumn object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Secondary Table</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 interpretting the object as an instance of '<em>Xml Secondary Table</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlSecondaryTable(XmlSecondaryTable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Primary Key Join Column</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 interpretting the object as an instance of '<em>Xml Primary Key Join Column</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlPrimaryKeyJoinColumn(XmlPrimaryKeyJoinColumn object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Generated 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 interpretting the object as an instance of '<em>Xml Generated Value</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlGeneratedValue(XmlGeneratedValue object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Generator</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 interpretting the object as an instance of '<em>Xml Generator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlGenerator(XmlGenerator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Sequence Generator</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 interpretting the object as an instance of '<em>Xml Sequence Generator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlSequenceGenerator(XmlSequenceGenerator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Table Generator</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 interpretting the object as an instance of '<em>Xml Table Generator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlTableGenerator(XmlTableGenerator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Order By</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 interpretting the object as an instance of '<em>Xml Order By</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlOrderBy(XmlOrderBy object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Abstract Xml Query</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 interpretting the object as an instance of '<em>Abstract Xml Query</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAbstractXmlQuery(AbstractXmlQuery object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Named Query</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 interpretting the object as an instance of '<em>Xml Named Query</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlNamedQuery(XmlNamedQuery object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Named Native Query</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 interpretting the object as an instance of '<em>Xml Named Native Query</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlNamedNativeQuery(XmlNamedNativeQuery object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Query Hint</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 interpretting the object as an instance of '<em>Xml Query Hint</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlQueryHint(XmlQueryHint object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IJpa EObject</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 interpretting the object as an instance of '<em>IJpa EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIJpaEObject(IJpaEObject object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Jpa EObject</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 interpretting the object as an instance of '<em>Jpa EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJpaEObject(JpaEObject object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IJpa Source Object</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 interpretting the object as an instance of '<em>IJpa Source Object</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIJpaSourceObject(IJpaSourceObject object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IXml EObject</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 interpretting the object as an instance of '<em>IXml EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIXmlEObject(IXmlEObject object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IJpa Content 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 interpretting the object as an instance of '<em>IJpa Content Node</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIJpaContentNode(IJpaContentNode object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IJpa Root Content 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 interpretting the object as an instance of '<em>IJpa Root Content Node</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIJpaRootContentNode(IJpaRootContentNode object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Mapped Superclass</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 interpretting the object as an instance of '<em>Xml Mapped Superclass</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlMappedSuperclass(XmlMappedSuperclass object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Entity Internal</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 interpretting the object as an instance of '<em>Xml Entity Internal</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlEntityInternal(XmlEntityInternal object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Entity For Xml</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 interpretting the object as an instance of '<em>Xml Entity For Xml</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlEntityForXml(XmlEntityForXml object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Entity</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 interpretting the object as an instance of '<em>Xml Entity</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlEntity(XmlEntity object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IAttribute Mapping</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 interpretting the object as an instance of '<em>IAttribute Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIAttributeMapping(IAttributeMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IColumn Mapping</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 interpretting the object as an instance of '<em>IColumn Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIColumnMapping(IColumnMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IPersistent Attribute</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 interpretting the object as an instance of '<em>IPersistent Attribute</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIPersistentAttribute(IPersistentAttribute object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>ITable</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 interpretting the object as an instance of '<em>ITable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseITable(ITable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>INamed Column</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 interpretting the object as an instance of '<em>INamed Column</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseINamedColumn(INamedColumn object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IAbstract Column</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 interpretting the object as an instance of '<em>IAbstract Column</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIAbstractColumn(IAbstractColumn object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IColumn</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 interpretting the object as an instance of '<em>IColumn</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIColumn(IColumn object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IAbstract Join Column</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 interpretting the object as an instance of '<em>IAbstract Join Column</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIAbstractJoinColumn(IAbstractJoinColumn object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IJoin Column</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 interpretting the object as an instance of '<em>IJoin Column</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIJoinColumn(IJoinColumn object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>ISingle Relationship Mapping</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 interpretting the object as an instance of '<em>ISingle Relationship Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseISingleRelationshipMapping(ISingleRelationshipMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IMany To One</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 interpretting the object as an instance of '<em>IMany To One</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIManyToOne(IManyToOne object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IOne To One</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 interpretting the object as an instance of '<em>IOne To One</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIOneToOne(IOneToOne object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IJoin Table</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 interpretting the object as an instance of '<em>IJoin Table</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIJoinTable(IJoinTable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IOverride</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 interpretting the object as an instance of '<em>IOverride</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIOverride(IOverride object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IAttribute Override</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 interpretting the object as an instance of '<em>IAttribute Override</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIAttributeOverride(IAttributeOverride object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IAssociation Override</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 interpretting the object as an instance of '<em>IAssociation Override</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIAssociationOverride(IAssociationOverride object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IDiscriminator Column</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 interpretting the object as an instance of '<em>IDiscriminator Column</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIDiscriminatorColumn(IDiscriminatorColumn object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>ISecondary Table</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 interpretting the object as an instance of '<em>ISecondary Table</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseISecondaryTable(ISecondaryTable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IPrimary Key Join Column</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 interpretting the object as an instance of '<em>IPrimary Key Join Column</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIPrimaryKeyJoinColumn(IPrimaryKeyJoinColumn object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IGenerated 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 interpretting the object as an instance of '<em>IGenerated Value</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIGeneratedValue(IGeneratedValue object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IGenerator</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 interpretting the object as an instance of '<em>IGenerator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIGenerator(IGenerator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>ISequence Generator</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 interpretting the object as an instance of '<em>ISequence Generator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseISequenceGenerator(ISequenceGenerator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>ITable Generator</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 interpretting the object as an instance of '<em>ITable Generator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseITableGenerator(ITableGenerator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IOrder By</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 interpretting the object as an instance of '<em>IOrder By</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIOrderBy(IOrderBy object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IQuery</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 interpretting the object as an instance of '<em>IQuery</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIQuery(IQuery object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>INamed Query</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 interpretting the object as an instance of '<em>INamed Query</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseINamedQuery(INamedQuery object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>INamed Native Query</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 interpretting the object as an instance of '<em>INamed Native Query</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseINamedNativeQuery(INamedNativeQuery object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IQuery Hint</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 interpretting the object as an instance of '<em>IQuery Hint</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIQueryHint(IQueryHint object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IBasic</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 interpretting the object as an instance of '<em>IBasic</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIBasic(IBasic object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IId</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 interpretting the object as an instance of '<em>IId</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIId(IId object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>ITransient</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 interpretting the object as an instance of '<em>ITransient</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseITransient(ITransient object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IEmbedded</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 interpretting the object as an instance of '<em>IEmbedded</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIEmbedded(IEmbedded object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IEmbedded Id</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 interpretting the object as an instance of '<em>IEmbedded Id</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIEmbeddedId(IEmbeddedId object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IVersion</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 interpretting the object as an instance of '<em>IVersion</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIVersion(IVersion object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IRelationship Mapping</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 interpretting the object as an instance of '<em>IRelationship Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIRelationshipMapping(IRelationshipMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>INon Owning Mapping</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 interpretting the object as an instance of '<em>INon Owning Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseINonOwningMapping(INonOwningMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IMulti Relationship Mapping</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 interpretting the object as an instance of '<em>IMulti Relationship Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIMultiRelationshipMapping(IMultiRelationshipMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IOne To Many</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 interpretting the object as an instance of '<em>IOne To Many</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIOneToMany(IOneToMany object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IMany To Many</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 interpretting the object as an instance of '<em>IMany To Many</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIManyToMany(IManyToMany object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IPersistent Type</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 interpretting the object as an instance of '<em>IPersistent Type</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIPersistentType(IPersistentType object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IMapped Superclass</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 interpretting the object as an instance of '<em>IMapped Superclass</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIMappedSuperclass(IMappedSuperclass object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IEntity</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 interpretting the object as an instance of '<em>IEntity</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIEntity(IEntity object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IEmbeddable</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 interpretting the object as an instance of '<em>IEmbeddable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIEmbeddable(IEmbeddable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IType Mapping</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 interpretting the object as an instance of '<em>IType Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseITypeMapping(ITypeMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting 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 interpretting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ public T defaultCase(EObject object) {
+ return null;
+ }
+} //JpaCoreXmlSwitch
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/JavaClassRef.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/JavaClassRef.java
new file mode 100644
index 0000000000..3a4e455e11
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/JavaClassRef.java
@@ -0,0 +1,168 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.persistence;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jem.java.JavaClass;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.XmlEObject;
+import org.eclipse.wst.common.internal.emf.utilities.DOMUtilities;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Class Ref</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.persistence.JavaClassRef#getJavaClass <em>Java Class</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getJavaClassRef()
+ * @model kind="class"
+ * @generated
+ */
+public class JavaClassRef extends XmlEObject
+{
+ /**
+ * The cached value of the '{@link #getJavaClass() <em>Java Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getJavaClass()
+ * @generated
+ * @ordered
+ */
+ protected JavaClass javaClass;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected JavaClassRef() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PersistencePackage.Literals.JAVA_CLASS_REF;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Java Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Java Class</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Java Class</em>' reference.
+ * @see #setJavaClass(JavaClass)
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getJavaClassRef_JavaClass()
+ * @model resolveProxies="false" required="true" ordered="false"
+ * @generated
+ */
+ public JavaClass getJavaClass() {
+ return javaClass;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.persistence.JavaClassRef#getJavaClass <em>Java Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Java Class</em>' reference.
+ * @see #getJavaClass()
+ * @generated
+ */
+ public void setJavaClass(JavaClass newJavaClass) {
+ JavaClass oldJavaClass = javaClass;
+ javaClass = newJavaClass;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PersistencePackage.JAVA_CLASS_REF__JAVA_CLASS, oldJavaClass, javaClass));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PersistencePackage.JAVA_CLASS_REF__JAVA_CLASS :
+ return getJavaClass();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PersistencePackage.JAVA_CLASS_REF__JAVA_CLASS :
+ setJavaClass((JavaClass) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PersistencePackage.JAVA_CLASS_REF__JAVA_CLASS :
+ setJavaClass((JavaClass) null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PersistencePackage.JAVA_CLASS_REF__JAVA_CLASS :
+ return javaClass != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ @Override
+ public ITextRange getTextRange() {
+ IDOMNode textNode = (IDOMNode) DOMUtilities.getChildTextNode(node);
+ if (textNode != null) {
+ return getTextRange(textNode);
+ }
+ else {
+ return getTextRange(node);
+ }
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/MappingFileRef.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/MappingFileRef.java
new file mode 100644
index 0000000000..6dc8685218
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/MappingFileRef.java
@@ -0,0 +1,231 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.persistence;
+
+import java.util.Iterator;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jdt.core.IPackageFragmentRoot;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jpt.core.internal.IJpaFile;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.JpaCorePlugin;
+import org.eclipse.jpt.core.internal.XmlEObject;
+import org.eclipse.jpt.utility.internal.CollectionTools;
+import org.eclipse.jpt.utility.internal.iterators.EmptyIterator;
+import org.eclipse.jpt.utility.internal.iterators.FilteringIterator;
+import org.eclipse.wst.common.internal.emf.utilities.DOMUtilities;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Mapping File Ref</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.persistence.MappingFileRef#getFileName <em>File Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getMappingFileRef()
+ * @model kind="class"
+ * @generated
+ */
+public class MappingFileRef extends XmlEObject
+{
+ /**
+ * The default value of the '{@link #getFileName() <em>File Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFileName()
+ * @generated
+ * @ordered
+ */
+ protected static final String FILE_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getFileName() <em>File Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getFileName()
+ * @generated
+ * @ordered
+ */
+ protected String fileName = FILE_NAME_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected MappingFileRef() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PersistencePackage.Literals.MAPPING_FILE_REF;
+ }
+
+ /**
+ * Returns the value of the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>File Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>File Name</em>' attribute.
+ * @see #setFileName(String)
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getMappingFileRef_FileName()
+ * @model unique="false" required="true" ordered="false"
+ * @generated
+ */
+ public String getFileName() {
+ return fileName;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.persistence.MappingFileRef#getFileName <em>File Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>File Name</em>' attribute.
+ * @see #getFileName()
+ * @generated
+ */
+ public void setFileName(String newFileName) {
+ String oldFileName = fileName;
+ fileName = newFileName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PersistencePackage.MAPPING_FILE_REF__FILE_NAME, oldFileName, fileName));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PersistencePackage.MAPPING_FILE_REF__FILE_NAME :
+ return getFileName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PersistencePackage.MAPPING_FILE_REF__FILE_NAME :
+ setFileName((String) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PersistencePackage.MAPPING_FILE_REF__FILE_NAME :
+ setFileName(FILE_NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PersistencePackage.MAPPING_FILE_REF__FILE_NAME :
+ return FILE_NAME_EDEFAULT == null ? fileName != null : !FILE_NAME_EDEFAULT.equals(fileName);
+ }
+ 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(" (fileName: ");
+ result.append(fileName);
+ result.append(')');
+ return result.toString();
+ }
+
+ @Override
+ public ITextRange getTextRange() {
+ IDOMNode textNode = (IDOMNode) DOMUtilities.getChildTextNode(node);
+ return (textNode == null) ? getTextRange(node) : getTextRange(textNode);
+ }
+
+ public IJpaFile getMappingFile() {
+ IJpaFile mappingFile = null;
+ for (Iterator stream = javaSourceFolders(); stream.hasNext();) {
+ IFolder sourceFolder = (IFolder) ((IPackageFragmentRoot) stream.next()).getResource();
+ IFile file = sourceFolder.getFile(fileName);
+ IJpaFile jpaFile = JpaCorePlugin.getJpaFile(file);
+ if (mappingFile != null && jpaFile != null) {
+ return null; // multiple possibilities == not resolved
+ }
+ mappingFile = jpaFile;
+ }
+ return mappingFile;
+ }
+
+ private Iterator javaSourceFolders() {
+ Iterator nestedIterator = EmptyIterator.instance();
+ try {
+ nestedIterator = CollectionTools.iterator(getJpaProject().getJavaProject().getPackageFragmentRoots());
+ }
+ catch (JavaModelException jme) { /* do nothing */}
+ return new FilteringIterator(nestedIterator) {
+ @Override
+ protected boolean accept(Object o) {
+ try {
+ return ((IPackageFragmentRoot) o).getKind() == IPackageFragmentRoot.K_SOURCE;
+ }
+ catch (JavaModelException jme) {
+ return false;
+ }
+ }
+ };
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/Persistence.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/Persistence.java
new file mode 100644
index 0000000000..6187b685ea
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/Persistence.java
@@ -0,0 +1,348 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.persistence;
+
+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.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.jpt.core.internal.IJpaFile;
+import org.eclipse.jpt.core.internal.IJpaProject;
+import org.eclipse.jpt.core.internal.XmlEObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Persistence</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.persistence.Persistence#getPersistenceUnits <em>Persistence Units</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.persistence.Persistence#getVersion <em>Version</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.persistence.Persistence#getRoot <em>Root</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getPersistence()
+ * @model kind="class"
+ * @generated
+ */
+public class Persistence extends XmlEObject
+{
+ /**
+ * The cached value of the '{@link #getPersistenceUnits() <em>Persistence Units</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPersistenceUnits()
+ * @generated
+ * @ordered
+ */
+ protected EList<PersistenceUnit> persistenceUnits;
+
+ /**
+ * The default value of the '{@link #getVersion() <em>Version</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getVersion()
+ * @generated
+ * @ordered
+ */
+ protected static final String VERSION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getVersion() <em>Version</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getVersion()
+ * @generated
+ * @ordered
+ */
+ protected String version = VERSION_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getRoot() <em>Root</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRoot()
+ * @generated
+ * @ordered
+ */
+ protected PersistenceXmlRootContentNode root;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Persistence() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PersistencePackage.Literals.PERSISTENCE;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Persistence Units</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Persistence Units</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getPersistence_PersistenceUnits()
+ * @model type="org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit" containment="true"
+ * @generated
+ */
+ public EList<PersistenceUnit> getPersistenceUnits() {
+ if (persistenceUnits == null) {
+ persistenceUnits = new EObjectContainmentEList<PersistenceUnit>(PersistenceUnit.class, this, PersistencePackage.PERSISTENCE__PERSISTENCE_UNITS);
+ }
+ return persistenceUnits;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Version</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Version</em>' attribute.
+ * @see #setVersion(String)
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getPersistence_Version()
+ * @model unique="false" dataType="org.eclipse.jpt.core.internal.content.persistence.Version" required="true"
+ * @generated
+ */
+ public String getVersion() {
+ return version;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.persistence.Persistence#getVersion <em>Version</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Version</em>' attribute.
+ * @see #getVersion()
+ * @generated
+ */
+ public void setVersion(String newVersion) {
+ String oldVersion = version;
+ version = newVersion;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PersistencePackage.PERSISTENCE__VERSION, oldVersion, version));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Root</b></em>' reference.
+ * It is bidirectional and its opposite is '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceXmlRootContentNode#getPersistence <em>Persistence</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Root</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Root</em>' reference.
+ * @see #setRoot(PersistenceXmlRootContentNode)
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getPersistence_Root()
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistenceXmlRootContentNode#getPersistence
+ * @model opposite="persistence" resolveProxies="false" required="true" ordered="false"
+ * @generated
+ */
+ public PersistenceXmlRootContentNode getRoot() {
+ return root;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetRoot(PersistenceXmlRootContentNode newRoot, NotificationChain msgs) {
+ PersistenceXmlRootContentNode oldRoot = root;
+ root = newRoot;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, PersistencePackage.PERSISTENCE__ROOT, oldRoot, newRoot);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.persistence.Persistence#getRoot <em>Root</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Root</em>' reference.
+ * @see #getRoot()
+ * @generated
+ */
+ public void setRoot(PersistenceXmlRootContentNode newRoot) {
+ if (newRoot != root) {
+ NotificationChain msgs = null;
+ if (root != null)
+ msgs = ((InternalEObject) root).eInverseRemove(this, PersistencePackage.PERSISTENCE_XML_ROOT_CONTENT_NODE__PERSISTENCE, PersistenceXmlRootContentNode.class, msgs);
+ if (newRoot != null)
+ msgs = ((InternalEObject) newRoot).eInverseAdd(this, PersistencePackage.PERSISTENCE_XML_ROOT_CONTENT_NODE__PERSISTENCE, PersistenceXmlRootContentNode.class, msgs);
+ msgs = basicSetRoot(newRoot, msgs);
+ if (msgs != null)
+ msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PersistencePackage.PERSISTENCE__ROOT, newRoot, newRoot));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case PersistencePackage.PERSISTENCE__ROOT :
+ if (root != null)
+ msgs = ((InternalEObject) root).eInverseRemove(this, PersistencePackage.PERSISTENCE_XML_ROOT_CONTENT_NODE__PERSISTENCE, PersistenceXmlRootContentNode.class, msgs);
+ return basicSetRoot((PersistenceXmlRootContentNode) 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 PersistencePackage.PERSISTENCE__PERSISTENCE_UNITS :
+ return ((InternalEList<?>) getPersistenceUnits()).basicRemove(otherEnd, msgs);
+ case PersistencePackage.PERSISTENCE__ROOT :
+ return basicSetRoot(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 PersistencePackage.PERSISTENCE__PERSISTENCE_UNITS :
+ return getPersistenceUnits();
+ case PersistencePackage.PERSISTENCE__VERSION :
+ return getVersion();
+ case PersistencePackage.PERSISTENCE__ROOT :
+ return getRoot();
+ }
+ 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 PersistencePackage.PERSISTENCE__PERSISTENCE_UNITS :
+ getPersistenceUnits().clear();
+ getPersistenceUnits().addAll((Collection<? extends PersistenceUnit>) newValue);
+ return;
+ case PersistencePackage.PERSISTENCE__VERSION :
+ setVersion((String) newValue);
+ return;
+ case PersistencePackage.PERSISTENCE__ROOT :
+ setRoot((PersistenceXmlRootContentNode) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PersistencePackage.PERSISTENCE__PERSISTENCE_UNITS :
+ getPersistenceUnits().clear();
+ return;
+ case PersistencePackage.PERSISTENCE__VERSION :
+ setVersion(VERSION_EDEFAULT);
+ return;
+ case PersistencePackage.PERSISTENCE__ROOT :
+ setRoot((PersistenceXmlRootContentNode) null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PersistencePackage.PERSISTENCE__PERSISTENCE_UNITS :
+ return persistenceUnits != null && !persistenceUnits.isEmpty();
+ case PersistencePackage.PERSISTENCE__VERSION :
+ return VERSION_EDEFAULT == null ? version != null : !VERSION_EDEFAULT.equals(version);
+ case PersistencePackage.PERSISTENCE__ROOT :
+ return root != 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(" (version: ");
+ result.append(version);
+ result.append(')');
+ return result.toString();
+ }
+
+ /**
+ * Override this because Persistence does not have an eContainer()
+ * This is because persistence is the "root" feature of the doc for xml Translators
+ * and thus cannot be "contained"
+ */
+ @Override
+ public IJpaProject getJpaProject() {
+ IJpaFile file = getJpaFile();
+ return (file == null) ? null : file.getJpaProject();
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceFactory.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceFactory.java
new file mode 100644
index 0000000000..f2d07ef117
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceFactory.java
@@ -0,0 +1,278 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.persistence;
+
+import org.eclipse.emf.common.util.Enumerator;
+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;
+
+/**
+ * <!-- 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.jpt.core.internal.content.persistence.PersistencePackage
+ * @generated
+ */
+public class PersistenceFactory extends EFactoryImpl
+{
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final PersistenceFactory eINSTANCE = init();
+
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static PersistenceFactory init() {
+ try {
+ PersistenceFactory thePersistenceFactory = (PersistenceFactory) EPackage.Registry.INSTANCE.getEFactory("persistence.xmi");
+ if (thePersistenceFactory != null) {
+ return thePersistenceFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new PersistenceFactory();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PersistenceFactory() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case PersistencePackage.PERSISTENCE_XML_ROOT_CONTENT_NODE :
+ return createPersistenceXmlRootContentNode();
+ case PersistencePackage.PERSISTENCE :
+ return createPersistence();
+ case PersistencePackage.PERSISTENCE_UNIT :
+ return createPersistenceUnit();
+ case PersistencePackage.MAPPING_FILE_REF :
+ return createMappingFileRef();
+ case PersistencePackage.JAVA_CLASS_REF :
+ return createJavaClassRef();
+ case PersistencePackage.PROPERTIES :
+ return createProperties();
+ case PersistencePackage.PROPERTY :
+ return createProperty();
+ default :
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object createFromString(EDataType eDataType, String initialValue) {
+ switch (eDataType.getClassifierID()) {
+ case PersistencePackage.PERSISTENCE_UNIT_TRANSACTION_TYPE :
+ return createPersistenceUnitTransactionTypeFromString(eDataType, initialValue);
+ case PersistencePackage.PERSISTENCE_UNIT_TRANSACTION_TYPE_OBJECT :
+ return createPersistenceUnitTransactionTypeObjectFromString(eDataType, initialValue);
+ case PersistencePackage.VERSION :
+ return createVersionFromString(eDataType, initialValue);
+ default :
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String convertToString(EDataType eDataType, Object instanceValue) {
+ switch (eDataType.getClassifierID()) {
+ case PersistencePackage.PERSISTENCE_UNIT_TRANSACTION_TYPE :
+ return convertPersistenceUnitTransactionTypeToString(eDataType, instanceValue);
+ case PersistencePackage.PERSISTENCE_UNIT_TRANSACTION_TYPE_OBJECT :
+ return convertPersistenceUnitTransactionTypeObjectToString(eDataType, instanceValue);
+ case PersistencePackage.VERSION :
+ return convertVersionToString(eDataType, instanceValue);
+ default :
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Persistence createPersistence() {
+ Persistence persistence = new Persistence();
+ return persistence;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PersistenceUnit createPersistenceUnit() {
+ PersistenceUnit persistenceUnit = new PersistenceUnit();
+ return persistenceUnit;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public MappingFileRef createMappingFileRef() {
+ MappingFileRef mappingFileRef = new MappingFileRef();
+ return mappingFileRef;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JavaClassRef createJavaClassRef() {
+ JavaClassRef javaClassRef = new JavaClassRef();
+ return javaClassRef;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Properties createProperties() {
+ Properties properties = new Properties();
+ return properties;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property createProperty() {
+ Property property = new Property();
+ return property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PersistenceXmlRootContentNode createPersistenceXmlRootContentNode() {
+ PersistenceXmlRootContentNode persistenceXmlRootContentNode = new PersistenceXmlRootContentNode();
+ return persistenceXmlRootContentNode;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PersistenceUnitTransactionType createPersistenceUnitTransactionTypeFromString(EDataType eDataType, String initialValue) {
+ PersistenceUnitTransactionType result = PersistenceUnitTransactionType.get(initialValue);
+ if (result == null)
+ throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertPersistenceUnitTransactionTypeToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Enumerator createPersistenceUnitTransactionTypeObjectFromString(EDataType eDataType, String initialValue) {
+ return (Enumerator) super.createFromString(eDataType, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertPersistenceUnitTransactionTypeObjectToString(EDataType eDataType, Object instanceValue) {
+ return super.convertToString(eDataType, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String createVersionFromString(EDataType eDataType, String initialValue) {
+ return (String) super.createFromString(eDataType, initialValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertVersionToString(EDataType eDataType, Object instanceValue) {
+ return super.convertToString(eDataType, instanceValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PersistencePackage getPersistencePackage() {
+ return (PersistencePackage) getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static PersistencePackage getPackage() {
+ return PersistencePackage.eINSTANCE;
+ }
+} //PersistenceInternalFactory
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceInit.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceInit.java
new file mode 100644
index 0000000000..694607c557
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceInit.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.persistence;
+
+import org.eclipse.emf.ecore.EFactory;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.jpt.core.internal.content.persistence.resource.PersistenceXmlResourceFactory;
+import org.eclipse.wst.common.componentcore.internal.impl.WTPEntityResolver;
+import org.eclipse.wst.common.internal.emf.utilities.DOMUtilities;
+import org.eclipse.wst.common.internal.emf.utilities.ExtendedEcoreUtil;
+
+public class PersistenceInit
+{
+ private static boolean initialized = false;
+
+ public static void init() {
+ init(true);
+ }
+
+ public static void init(boolean shouldPreregisterPackages) {
+ if (! initialized) {
+ initialized = true;
+ DOMUtilities.setDefaultEntityResolver(WTPEntityResolver.INSTANCE);
+ initResourceFactories();
+ }
+ if (shouldPreregisterPackages) {
+ preregisterPackages();
+ }
+ }
+
+ private static void initResourceFactories() {
+ PersistenceXmlResourceFactory.register();
+ }
+
+ private static void preregisterPackages() {
+ ExtendedEcoreUtil.preRegisterPackage(
+ "packaging.xmi", //$NON-NLS-1$
+ new EPackage.Descriptor() {
+ public EPackage getEPackage() {
+ return PersistencePackage.eINSTANCE;
+ }
+
+ public EFactory getEFactory() {
+ return PersistenceFactory.eINSTANCE;
+ }
+ }
+ );
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistencePackage.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistencePackage.java
new file mode 100644
index 0000000000..4bcc501bcd
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistencePackage.java
@@ -0,0 +1,1379 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.persistence;
+
+import org.eclipse.emf.common.util.Enumerator;
+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.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
+import org.eclipse.jem.java.JavaRefPackage;
+import org.eclipse.jpt.core.internal.JpaCorePackage;
+import org.eclipse.jpt.core.internal.content.java.JpaJavaPackage;
+import org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+
+/**
+ * <!-- 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.jpt.core.internal.content.persistence.PersistenceFactory
+ * @model kind="package"
+ * @generated
+ */
+public class PersistencePackage extends EPackageImpl
+{
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNAME = "persistence";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNS_URI = "persistence.xmi";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNS_PREFIX = "org.eclipse.jpt.core.content.persistence";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final PersistencePackage eINSTANCE = org.eclipse.jpt.core.internal.content.persistence.PersistencePackage.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.persistence.Persistence <em>Persistence</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.persistence.Persistence
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getPersistence()
+ * @generated
+ */
+ public static final int PERSISTENCE = 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit <em>Unit</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getPersistenceUnit()
+ * @generated
+ */
+ public static final int PERSISTENCE_UNIT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.persistence.Properties <em>Properties</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.persistence.Properties
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getProperties()
+ * @generated
+ */
+ public static final int PROPERTIES = 5;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.persistence.Property <em>Property</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.persistence.Property
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getProperty()
+ * @generated
+ */
+ public static final int PROPERTY = 6;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceXmlRootContentNode <em>Xml Root Content Node</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistenceXmlRootContentNode
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getPersistenceXmlRootContentNode()
+ * @generated
+ */
+ public static final int PERSISTENCE_XML_ROOT_CONTENT_NODE = 0;
+
+ /**
+ * The feature id for the '<em><b>Jpa File</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_XML_ROOT_CONTENT_NODE__JPA_FILE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Persistence</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_XML_ROOT_CONTENT_NODE__PERSISTENCE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Xml Root Content Node</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_XML_ROOT_CONTENT_NODE_FEATURE_COUNT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Persistence Units</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE__PERSISTENCE_UNITS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Version</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE__VERSION = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Root</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE__ROOT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Persistence</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_FEATURE_COUNT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Description</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT__DESCRIPTION = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Provider</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT__PROVIDER = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Jta Data Source</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT__JTA_DATA_SOURCE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Non Jta Data Source</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT__NON_JTA_DATA_SOURCE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Mapping Files</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT__MAPPING_FILES = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Jar Files</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT__JAR_FILES = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Classes</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT__CLASSES = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 6;
+
+ /**
+ * The feature id for the '<em><b>Exclude Unlisted Classes</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT__EXCLUDE_UNLISTED_CLASSES = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 7;
+
+ /**
+ * The feature id for the '<em><b>Properties</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT__PROPERTIES = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 8;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT__NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 9;
+
+ /**
+ * The feature id for the '<em><b>Transaction Type</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT__TRANSACTION_TYPE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 10;
+
+ /**
+ * The number of structural features of the '<em>Unit</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PERSISTENCE_UNIT_FEATURE_COUNT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 11;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.persistence.MappingFileRef <em>Mapping File Ref</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.persistence.MappingFileRef
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getMappingFileRef()
+ * @generated
+ */
+ public static final int MAPPING_FILE_REF = 3;
+
+ /**
+ * The feature id for the '<em><b>File Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int MAPPING_FILE_REF__FILE_NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Mapping File Ref</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int MAPPING_FILE_REF_FEATURE_COUNT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.persistence.JavaClassRef <em>Java Class Ref</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.persistence.JavaClassRef
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getJavaClassRef()
+ * @generated
+ */
+ public static final int JAVA_CLASS_REF = 4;
+
+ /**
+ * The feature id for the '<em><b>Java Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_CLASS_REF__JAVA_CLASS = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Java Class Ref</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int JAVA_CLASS_REF_FEATURE_COUNT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Properties</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PROPERTIES__PROPERTIES = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Properties</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PROPERTIES_FEATURE_COUNT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PROPERTY__NAME = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PROPERTY__VALUE = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Property</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int PROPERTY_FEATURE_COUNT = JpaCorePackage.XML_EOBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnitTransactionType <em>Unit Transaction Type</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistenceUnitTransactionType
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getPersistenceUnitTransactionType()
+ * @generated
+ */
+ public static final int PERSISTENCE_UNIT_TRANSACTION_TYPE = 7;
+
+ /**
+ * The meta object id for the '<em>Unit Transaction Type Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.common.util.Enumerator
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getPersistenceUnitTransactionTypeObject()
+ * @generated
+ */
+ public static final int PERSISTENCE_UNIT_TRANSACTION_TYPE_OBJECT = 8;
+
+ /**
+ * The meta object id for the '<em>Version</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getVersion()
+ * @generated
+ */
+ public static final int VERSION = 9;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass persistenceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass persistenceUnitEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass mappingFileRefEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaClassRefEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass propertiesEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass propertyEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass persistenceXmlRootContentNodeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum persistenceUnitTransactionTypeEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType persistenceUnitTransactionTypeObjectEDataType = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EDataType versionEDataType = 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.jpt.core.internal.content.persistence.PersistencePackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private PersistencePackage() {
+ super(eNS_URI, PersistenceFactory.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. Simple
+ * dependencies are satisfied by calling this method on all
+ * dependent packages before doing anything else. This method drives
+ * initialization for interdependent packages directly, in parallel
+ * with this package, itself.
+ * <p>Of this package and its interdependencies, all packages which
+ * have not yet been registered by their URI values are first created
+ * and registered. The packages are then initialized in two steps:
+ * meta-model objects for all of the packages are created before any
+ * are initialized, since one package's meta-model objects may refer to
+ * those of another.
+ * <p>Invocation of this method will not affect any packages that have
+ * already been initialized.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static PersistencePackage init() {
+ if (isInited)
+ return (PersistencePackage) EPackage.Registry.INSTANCE.getEPackage(PersistencePackage.eNS_URI);
+ // Obtain or create and register package
+ PersistencePackage thePersistencePackage = (PersistencePackage) (EPackage.Registry.INSTANCE.getEPackage(eNS_URI) instanceof PersistencePackage ? EPackage.Registry.INSTANCE.getEPackage(eNS_URI) : new PersistencePackage());
+ isInited = true;
+ // Initialize simple dependencies
+ EcorePackage.eINSTANCE.eClass();
+ JavaRefPackage.eINSTANCE.eClass();
+ XMLTypePackage.eINSTANCE.eClass();
+ // Obtain or create and register interdependencies
+ JpaCorePackage theJpaCorePackage = (JpaCorePackage) (EPackage.Registry.INSTANCE.getEPackage(JpaCorePackage.eNS_URI) instanceof JpaCorePackage ? EPackage.Registry.INSTANCE.getEPackage(JpaCorePackage.eNS_URI) : JpaCorePackage.eINSTANCE);
+ JpaCoreMappingsPackage theJpaCoreMappingsPackage = (JpaCoreMappingsPackage) (EPackage.Registry.INSTANCE.getEPackage(JpaCoreMappingsPackage.eNS_URI) instanceof JpaCoreMappingsPackage ? EPackage.Registry.INSTANCE.getEPackage(JpaCoreMappingsPackage.eNS_URI) : JpaCoreMappingsPackage.eINSTANCE);
+ JpaJavaPackage theJpaJavaPackage = (JpaJavaPackage) (EPackage.Registry.INSTANCE.getEPackage(JpaJavaPackage.eNS_URI) instanceof JpaJavaPackage ? EPackage.Registry.INSTANCE.getEPackage(JpaJavaPackage.eNS_URI) : JpaJavaPackage.eINSTANCE);
+ JpaJavaMappingsPackage theJpaJavaMappingsPackage = (JpaJavaMappingsPackage) (EPackage.Registry.INSTANCE.getEPackage(JpaJavaMappingsPackage.eNS_URI) instanceof JpaJavaMappingsPackage ? EPackage.Registry.INSTANCE.getEPackage(JpaJavaMappingsPackage.eNS_URI) : JpaJavaMappingsPackage.eINSTANCE);
+ OrmPackage theOrmPackage = (OrmPackage) (EPackage.Registry.INSTANCE.getEPackage(OrmPackage.eNS_URI) instanceof OrmPackage ? EPackage.Registry.INSTANCE.getEPackage(OrmPackage.eNS_URI) : OrmPackage.eINSTANCE);
+ // Create package meta-data objects
+ thePersistencePackage.createPackageContents();
+ theJpaCorePackage.createPackageContents();
+ theJpaCoreMappingsPackage.createPackageContents();
+ theJpaJavaPackage.createPackageContents();
+ theJpaJavaMappingsPackage.createPackageContents();
+ theOrmPackage.createPackageContents();
+ // Initialize created meta-data
+ thePersistencePackage.initializePackageContents();
+ theJpaCorePackage.initializePackageContents();
+ theJpaCoreMappingsPackage.initializePackageContents();
+ theJpaJavaPackage.initializePackageContents();
+ theJpaJavaMappingsPackage.initializePackageContents();
+ theOrmPackage.initializePackageContents();
+ // Mark meta-data to indicate it can't be changed
+ thePersistencePackage.freeze();
+ return thePersistencePackage;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.persistence.Persistence <em>Persistence</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Persistence</em>'.
+ * @see org.eclipse.jpt.core.internal.content.persistence.Persistence
+ * @generated
+ */
+ public EClass getPersistence() {
+ return persistenceEClass;
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.content.persistence.Persistence#getPersistenceUnits <em>Persistence Units</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Persistence Units</em>'.
+ * @see org.eclipse.jpt.core.internal.content.persistence.Persistence#getPersistenceUnits()
+ * @see #getPersistence()
+ * @generated
+ */
+ public EReference getPersistence_PersistenceUnits() {
+ return (EReference) persistenceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.persistence.Persistence#getVersion <em>Version</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Version</em>'.
+ * @see org.eclipse.jpt.core.internal.content.persistence.Persistence#getVersion()
+ * @see #getPersistence()
+ * @generated
+ */
+ public EAttribute getPersistence_Version() {
+ return (EAttribute) persistenceEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.jpt.core.internal.content.persistence.Persistence#getRoot <em>Root</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Root</em>'.
+ * @see org.eclipse.jpt.core.internal.content.persistence.Persistence#getRoot()
+ * @see #getPersistence()
+ * @generated
+ */
+ public EReference getPersistence_Root() {
+ return (EReference) persistenceEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit <em>Unit</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Unit</em>'.
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit
+ * @generated
+ */
+ public EClass getPersistenceUnit() {
+ return persistenceUnitEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getDescription <em>Description</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Description</em>'.
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getDescription()
+ * @see #getPersistenceUnit()
+ * @generated
+ */
+ public EAttribute getPersistenceUnit_Description() {
+ return (EAttribute) persistenceUnitEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getProvider <em>Provider</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Provider</em>'.
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getProvider()
+ * @see #getPersistenceUnit()
+ * @generated
+ */
+ public EAttribute getPersistenceUnit_Provider() {
+ return (EAttribute) persistenceUnitEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getJtaDataSource <em>Jta Data Source</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Jta Data Source</em>'.
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getJtaDataSource()
+ * @see #getPersistenceUnit()
+ * @generated
+ */
+ public EAttribute getPersistenceUnit_JtaDataSource() {
+ return (EAttribute) persistenceUnitEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getNonJtaDataSource <em>Non Jta Data Source</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Non Jta Data Source</em>'.
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getNonJtaDataSource()
+ * @see #getPersistenceUnit()
+ * @generated
+ */
+ public EAttribute getPersistenceUnit_NonJtaDataSource() {
+ return (EAttribute) persistenceUnitEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getMappingFiles <em>Mapping Files</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Mapping Files</em>'.
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getMappingFiles()
+ * @see #getPersistenceUnit()
+ * @generated
+ */
+ public EReference getPersistenceUnit_MappingFiles() {
+ return (EReference) persistenceUnitEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * Returns the meta object for the attribute list '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getJarFiles <em>Jar Files</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Jar Files</em>'.
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getJarFiles()
+ * @see #getPersistenceUnit()
+ * @generated
+ */
+ public EAttribute getPersistenceUnit_JarFiles() {
+ return (EAttribute) persistenceUnitEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getClasses <em>Classes</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Classes</em>'.
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getClasses()
+ * @see #getPersistenceUnit()
+ * @generated
+ */
+ public EReference getPersistenceUnit_Classes() {
+ return (EReference) persistenceUnitEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#isExcludeUnlistedClasses <em>Exclude Unlisted Classes</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Exclude Unlisted Classes</em>'.
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#isExcludeUnlistedClasses()
+ * @see #getPersistenceUnit()
+ * @generated
+ */
+ public EAttribute getPersistenceUnit_ExcludeUnlistedClasses() {
+ return (EAttribute) persistenceUnitEClass.getEStructuralFeatures().get(7);
+ }
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getProperties <em>Properties</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Properties</em>'.
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getProperties()
+ * @see #getPersistenceUnit()
+ * @generated
+ */
+ public EReference getPersistenceUnit_Properties() {
+ return (EReference) persistenceUnitEClass.getEStructuralFeatures().get(8);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getName()
+ * @see #getPersistenceUnit()
+ * @generated
+ */
+ public EAttribute getPersistenceUnit_Name() {
+ return (EAttribute) persistenceUnitEClass.getEStructuralFeatures().get(9);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getTransactionType <em>Transaction Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Transaction Type</em>'.
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getTransactionType()
+ * @see #getPersistenceUnit()
+ * @generated
+ */
+ public EAttribute getPersistenceUnit_TransactionType() {
+ return (EAttribute) persistenceUnitEClass.getEStructuralFeatures().get(10);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.persistence.MappingFileRef <em>Mapping File Ref</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Mapping File Ref</em>'.
+ * @see org.eclipse.jpt.core.internal.content.persistence.MappingFileRef
+ * @generated
+ */
+ public EClass getMappingFileRef() {
+ return mappingFileRefEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.persistence.MappingFileRef#getFileName <em>File Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>File Name</em>'.
+ * @see org.eclipse.jpt.core.internal.content.persistence.MappingFileRef#getFileName()
+ * @see #getMappingFileRef()
+ * @generated
+ */
+ public EAttribute getMappingFileRef_FileName() {
+ return (EAttribute) mappingFileRefEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.persistence.JavaClassRef <em>Java Class Ref</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Class Ref</em>'.
+ * @see org.eclipse.jpt.core.internal.content.persistence.JavaClassRef
+ * @generated
+ */
+ public EClass getJavaClassRef() {
+ return javaClassRefEClass;
+ }
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.jpt.core.internal.content.persistence.JavaClassRef#getJavaClass <em>Java Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Java Class</em>'.
+ * @see org.eclipse.jpt.core.internal.content.persistence.JavaClassRef#getJavaClass()
+ * @see #getJavaClassRef()
+ * @generated
+ */
+ public EReference getJavaClassRef_JavaClass() {
+ return (EReference) javaClassRefEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.persistence.Properties <em>Properties</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Properties</em>'.
+ * @see org.eclipse.jpt.core.internal.content.persistence.Properties
+ * @generated
+ */
+ public EClass getProperties() {
+ return propertiesEClass;
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.content.persistence.Properties#getProperties <em>Properties</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Properties</em>'.
+ * @see org.eclipse.jpt.core.internal.content.persistence.Properties#getProperties()
+ * @see #getProperties()
+ * @generated
+ */
+ public EReference getProperties_Properties() {
+ return (EReference) propertiesEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.persistence.Property <em>Property</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Property</em>'.
+ * @see org.eclipse.jpt.core.internal.content.persistence.Property
+ * @generated
+ */
+ public EClass getProperty() {
+ return propertyEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.persistence.Property#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.jpt.core.internal.content.persistence.Property#getName()
+ * @see #getProperty()
+ * @generated
+ */
+ public EAttribute getProperty_Name() {
+ return (EAttribute) propertyEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.content.persistence.Property#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see org.eclipse.jpt.core.internal.content.persistence.Property#getValue()
+ * @see #getProperty()
+ * @generated
+ */
+ public EAttribute getProperty_Value() {
+ return (EAttribute) propertyEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceXmlRootContentNode <em>Xml Root Content Node</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Xml Root Content Node</em>'.
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistenceXmlRootContentNode
+ * @generated
+ */
+ public EClass getPersistenceXmlRootContentNode() {
+ return persistenceXmlRootContentNodeEClass;
+ }
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceXmlRootContentNode#getPersistence <em>Persistence</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Persistence</em>'.
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistenceXmlRootContentNode#getPersistence()
+ * @see #getPersistenceXmlRootContentNode()
+ * @generated
+ */
+ public EReference getPersistenceXmlRootContentNode_Persistence() {
+ return (EReference) persistenceXmlRootContentNodeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnitTransactionType <em>Unit Transaction Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Unit Transaction Type</em>'.
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistenceUnitTransactionType
+ * @generated
+ */
+ public EEnum getPersistenceUnitTransactionType() {
+ return persistenceUnitTransactionTypeEEnum;
+ }
+
+ /**
+ * Returns the meta object for data type '{@link org.eclipse.emf.common.util.Enumerator <em>Unit Transaction Type Object</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Unit Transaction Type Object</em>'.
+ * @see org.eclipse.emf.common.util.Enumerator
+ * @model instanceClass="org.eclipse.emf.common.util.Enumerator"
+ * @generated
+ */
+ public EDataType getPersistenceUnitTransactionTypeObject() {
+ return persistenceUnitTransactionTypeObjectEDataType;
+ }
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.String <em>Version</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Version</em>'.
+ * @see java.lang.String
+ * @model instanceClass="java.lang.String"
+ * @generated
+ */
+ public EDataType getVersion() {
+ return versionEDataType;
+ }
+
+ /**
+ * 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
+ */
+ public PersistenceFactory getPersistenceFactory() {
+ return (PersistenceFactory) 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
+ persistenceXmlRootContentNodeEClass = createEClass(PERSISTENCE_XML_ROOT_CONTENT_NODE);
+ createEReference(persistenceXmlRootContentNodeEClass, PERSISTENCE_XML_ROOT_CONTENT_NODE__PERSISTENCE);
+ persistenceEClass = createEClass(PERSISTENCE);
+ createEReference(persistenceEClass, PERSISTENCE__PERSISTENCE_UNITS);
+ createEAttribute(persistenceEClass, PERSISTENCE__VERSION);
+ createEReference(persistenceEClass, PERSISTENCE__ROOT);
+ persistenceUnitEClass = createEClass(PERSISTENCE_UNIT);
+ createEAttribute(persistenceUnitEClass, PERSISTENCE_UNIT__DESCRIPTION);
+ createEAttribute(persistenceUnitEClass, PERSISTENCE_UNIT__PROVIDER);
+ createEAttribute(persistenceUnitEClass, PERSISTENCE_UNIT__JTA_DATA_SOURCE);
+ createEAttribute(persistenceUnitEClass, PERSISTENCE_UNIT__NON_JTA_DATA_SOURCE);
+ createEReference(persistenceUnitEClass, PERSISTENCE_UNIT__MAPPING_FILES);
+ createEAttribute(persistenceUnitEClass, PERSISTENCE_UNIT__JAR_FILES);
+ createEReference(persistenceUnitEClass, PERSISTENCE_UNIT__CLASSES);
+ createEAttribute(persistenceUnitEClass, PERSISTENCE_UNIT__EXCLUDE_UNLISTED_CLASSES);
+ createEReference(persistenceUnitEClass, PERSISTENCE_UNIT__PROPERTIES);
+ createEAttribute(persistenceUnitEClass, PERSISTENCE_UNIT__NAME);
+ createEAttribute(persistenceUnitEClass, PERSISTENCE_UNIT__TRANSACTION_TYPE);
+ mappingFileRefEClass = createEClass(MAPPING_FILE_REF);
+ createEAttribute(mappingFileRefEClass, MAPPING_FILE_REF__FILE_NAME);
+ javaClassRefEClass = createEClass(JAVA_CLASS_REF);
+ createEReference(javaClassRefEClass, JAVA_CLASS_REF__JAVA_CLASS);
+ propertiesEClass = createEClass(PROPERTIES);
+ createEReference(propertiesEClass, PROPERTIES__PROPERTIES);
+ propertyEClass = createEClass(PROPERTY);
+ createEAttribute(propertyEClass, PROPERTY__NAME);
+ createEAttribute(propertyEClass, PROPERTY__VALUE);
+ // Create enums
+ persistenceUnitTransactionTypeEEnum = createEEnum(PERSISTENCE_UNIT_TRANSACTION_TYPE);
+ // Create data types
+ persistenceUnitTransactionTypeObjectEDataType = createEDataType(PERSISTENCE_UNIT_TRANSACTION_TYPE_OBJECT);
+ versionEDataType = createEDataType(VERSION);
+ }
+
+ /**
+ * <!-- 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
+ JpaCorePackage theJpaCorePackage = (JpaCorePackage) EPackage.Registry.INSTANCE.getEPackage(JpaCorePackage.eNS_URI);
+ XMLTypePackage theXMLTypePackage = (XMLTypePackage) EPackage.Registry.INSTANCE.getEPackage(XMLTypePackage.eNS_URI);
+ EcorePackage theEcorePackage = (EcorePackage) EPackage.Registry.INSTANCE.getEPackage(EcorePackage.eNS_URI);
+ JavaRefPackage theJavaRefPackage = (JavaRefPackage) EPackage.Registry.INSTANCE.getEPackage(JavaRefPackage.eNS_URI);
+ // Create type parameters
+ // Set bounds for type parameters
+ // Add supertypes to classes
+ persistenceXmlRootContentNodeEClass.getESuperTypes().add(theJpaCorePackage.getXmlEObject());
+ persistenceXmlRootContentNodeEClass.getESuperTypes().add(theJpaCorePackage.getIJpaRootContentNode());
+ persistenceEClass.getESuperTypes().add(theJpaCorePackage.getXmlEObject());
+ persistenceUnitEClass.getESuperTypes().add(theJpaCorePackage.getXmlEObject());
+ mappingFileRefEClass.getESuperTypes().add(theJpaCorePackage.getXmlEObject());
+ javaClassRefEClass.getESuperTypes().add(theJpaCorePackage.getXmlEObject());
+ propertiesEClass.getESuperTypes().add(theJpaCorePackage.getXmlEObject());
+ propertyEClass.getESuperTypes().add(theJpaCorePackage.getXmlEObject());
+ // Initialize classes and features; add operations and parameters
+ initEClass(persistenceXmlRootContentNodeEClass, PersistenceXmlRootContentNode.class, "PersistenceXmlRootContentNode", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getPersistenceXmlRootContentNode_Persistence(), this.getPersistence(), this.getPersistence_Root(), "persistence", null, 0, 1, PersistenceXmlRootContentNode.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(persistenceEClass, Persistence.class, "Persistence", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getPersistence_PersistenceUnits(), this.getPersistenceUnit(), null, "persistenceUnits", null, 0, -1, Persistence.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getPersistence_Version(), this.getVersion(), "version", null, 1, 1, Persistence.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getPersistence_Root(), this.getPersistenceXmlRootContentNode(), this.getPersistenceXmlRootContentNode_Persistence(), "root", null, 1, 1, Persistence.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEClass(persistenceUnitEClass, PersistenceUnit.class, "PersistenceUnit", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getPersistenceUnit_Description(), theXMLTypePackage.getString(), "description", null, 0, 1, PersistenceUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getPersistenceUnit_Provider(), theXMLTypePackage.getString(), "provider", null, 0, 1, PersistenceUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getPersistenceUnit_JtaDataSource(), theXMLTypePackage.getString(), "jtaDataSource", null, 0, 1, PersistenceUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getPersistenceUnit_NonJtaDataSource(), theXMLTypePackage.getString(), "nonJtaDataSource", null, 0, 1, PersistenceUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getPersistenceUnit_MappingFiles(), this.getMappingFileRef(), null, "mappingFiles", null, 0, -1, PersistenceUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getPersistenceUnit_JarFiles(), theXMLTypePackage.getString(), "jarFiles", null, 0, -1, PersistenceUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getPersistenceUnit_Classes(), this.getJavaClassRef(), null, "classes", null, 0, -1, PersistenceUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getPersistenceUnit_ExcludeUnlistedClasses(), theXMLTypePackage.getBoolean(), "excludeUnlistedClasses", "false", 0, 1, PersistenceUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getPersistenceUnit_Properties(), this.getProperties(), null, "properties", null, 0, 1, PersistenceUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getPersistenceUnit_Name(), theXMLTypePackage.getString(), "name", null, 1, 1, PersistenceUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getPersistenceUnit_TransactionType(), this.getPersistenceUnitTransactionType(), "transactionType", "JTA", 0, 1, PersistenceUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(mappingFileRefEClass, MappingFileRef.class, "MappingFileRef", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getMappingFileRef_FileName(), theEcorePackage.getEString(), "fileName", null, 1, 1, MappingFileRef.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEClass(javaClassRefEClass, JavaClassRef.class, "JavaClassRef", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getJavaClassRef_JavaClass(), theJavaRefPackage.getJavaClass(), null, "javaClass", null, 1, 1, JavaClassRef.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEClass(propertiesEClass, Properties.class, "Properties", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getProperties_Properties(), this.getProperty(), null, "properties", null, 0, -1, Properties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(propertyEClass, Property.class, "Property", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getProperty_Name(), theXMLTypePackage.getString(), "name", null, 1, 1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getProperty_Value(), theXMLTypePackage.getString(), "value", null, 1, 1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ // Initialize enums and add enum literals
+ initEEnum(persistenceUnitTransactionTypeEEnum, PersistenceUnitTransactionType.class, "PersistenceUnitTransactionType");
+ addEEnumLiteral(persistenceUnitTransactionTypeEEnum, PersistenceUnitTransactionType.JTA);
+ addEEnumLiteral(persistenceUnitTransactionTypeEEnum, PersistenceUnitTransactionType.RESOURCE_LOCAL);
+ // Initialize data types
+ initEDataType(persistenceUnitTransactionTypeObjectEDataType, Enumerator.class, "PersistenceUnitTransactionTypeObject", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ initEDataType(versionEDataType, String.class, "Version", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+ // Create resource
+ createResource(eNS_URI);
+ }
+ /**
+ * <!-- 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
+ */
+ public interface Literals
+ {
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.persistence.Persistence <em>Persistence</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.persistence.Persistence
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getPersistence()
+ * @generated
+ */
+ public static final EClass PERSISTENCE = eINSTANCE.getPersistence();
+
+ /**
+ * The meta object literal for the '<em><b>Persistence Units</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference PERSISTENCE__PERSISTENCE_UNITS = eINSTANCE.getPersistence_PersistenceUnits();
+
+ /**
+ * The meta object literal for the '<em><b>Version</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute PERSISTENCE__VERSION = eINSTANCE.getPersistence_Version();
+
+ /**
+ * The meta object literal for the '<em><b>Root</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference PERSISTENCE__ROOT = eINSTANCE.getPersistence_Root();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit <em>Unit</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getPersistenceUnit()
+ * @generated
+ */
+ public static final EClass PERSISTENCE_UNIT = eINSTANCE.getPersistenceUnit();
+
+ /**
+ * The meta object literal for the '<em><b>Description</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute PERSISTENCE_UNIT__DESCRIPTION = eINSTANCE.getPersistenceUnit_Description();
+
+ /**
+ * The meta object literal for the '<em><b>Provider</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute PERSISTENCE_UNIT__PROVIDER = eINSTANCE.getPersistenceUnit_Provider();
+
+ /**
+ * The meta object literal for the '<em><b>Jta Data Source</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute PERSISTENCE_UNIT__JTA_DATA_SOURCE = eINSTANCE.getPersistenceUnit_JtaDataSource();
+
+ /**
+ * The meta object literal for the '<em><b>Non Jta Data Source</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute PERSISTENCE_UNIT__NON_JTA_DATA_SOURCE = eINSTANCE.getPersistenceUnit_NonJtaDataSource();
+
+ /**
+ * The meta object literal for the '<em><b>Mapping Files</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference PERSISTENCE_UNIT__MAPPING_FILES = eINSTANCE.getPersistenceUnit_MappingFiles();
+
+ /**
+ * The meta object literal for the '<em><b>Jar Files</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute PERSISTENCE_UNIT__JAR_FILES = eINSTANCE.getPersistenceUnit_JarFiles();
+
+ /**
+ * The meta object literal for the '<em><b>Classes</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference PERSISTENCE_UNIT__CLASSES = eINSTANCE.getPersistenceUnit_Classes();
+
+ /**
+ * The meta object literal for the '<em><b>Exclude Unlisted Classes</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute PERSISTENCE_UNIT__EXCLUDE_UNLISTED_CLASSES = eINSTANCE.getPersistenceUnit_ExcludeUnlistedClasses();
+
+ /**
+ * The meta object literal for the '<em><b>Properties</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference PERSISTENCE_UNIT__PROPERTIES = eINSTANCE.getPersistenceUnit_Properties();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute PERSISTENCE_UNIT__NAME = eINSTANCE.getPersistenceUnit_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Transaction Type</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute PERSISTENCE_UNIT__TRANSACTION_TYPE = eINSTANCE.getPersistenceUnit_TransactionType();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.persistence.MappingFileRef <em>Mapping File Ref</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.persistence.MappingFileRef
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getMappingFileRef()
+ * @generated
+ */
+ public static final EClass MAPPING_FILE_REF = eINSTANCE.getMappingFileRef();
+
+ /**
+ * The meta object literal for the '<em><b>File Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute MAPPING_FILE_REF__FILE_NAME = eINSTANCE.getMappingFileRef_FileName();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.persistence.JavaClassRef <em>Java Class Ref</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.persistence.JavaClassRef
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getJavaClassRef()
+ * @generated
+ */
+ public static final EClass JAVA_CLASS_REF = eINSTANCE.getJavaClassRef();
+
+ /**
+ * The meta object literal for the '<em><b>Java Class</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference JAVA_CLASS_REF__JAVA_CLASS = eINSTANCE.getJavaClassRef_JavaClass();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.persistence.Properties <em>Properties</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.persistence.Properties
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getProperties()
+ * @generated
+ */
+ public static final EClass PROPERTIES = eINSTANCE.getProperties();
+
+ /**
+ * The meta object literal for the '<em><b>Properties</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference PROPERTIES__PROPERTIES = eINSTANCE.getProperties_Properties();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.persistence.Property <em>Property</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.persistence.Property
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getProperty()
+ * @generated
+ */
+ public static final EClass PROPERTY = eINSTANCE.getProperty();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute PROPERTY__NAME = eINSTANCE.getProperty_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute PROPERTY__VALUE = eINSTANCE.getProperty_Value();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceXmlRootContentNode <em>Xml Root Content Node</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistenceXmlRootContentNode
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getPersistenceXmlRootContentNode()
+ * @generated
+ */
+ public static final EClass PERSISTENCE_XML_ROOT_CONTENT_NODE = eINSTANCE.getPersistenceXmlRootContentNode();
+
+ /**
+ * The meta object literal for the '<em><b>Persistence</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference PERSISTENCE_XML_ROOT_CONTENT_NODE__PERSISTENCE = eINSTANCE.getPersistenceXmlRootContentNode_Persistence();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnitTransactionType <em>Unit Transaction Type</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistenceUnitTransactionType
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getPersistenceUnitTransactionType()
+ * @generated
+ */
+ public static final EEnum PERSISTENCE_UNIT_TRANSACTION_TYPE = eINSTANCE.getPersistenceUnitTransactionType();
+
+ /**
+ * The meta object literal for the '<em>Unit Transaction Type Object</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.common.util.Enumerator
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getPersistenceUnitTransactionTypeObject()
+ * @generated
+ */
+ public static final EDataType PERSISTENCE_UNIT_TRANSACTION_TYPE_OBJECT = eINSTANCE.getPersistenceUnitTransactionTypeObject();
+
+ /**
+ * The meta object literal for the '<em>Version</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getVersion()
+ * @generated
+ */
+ public static final EDataType VERSION = eINSTANCE.getVersion();
+ }
+} //PersistenceInternalPackage
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceUnit.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceUnit.java
new file mode 100644
index 0000000000..5974211018
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceUnit.java
@@ -0,0 +1,877 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.persistence;
+
+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.util.EDataTypeEList;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.jpt.core.internal.XmlEObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Persistence Unit</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getDescription <em>Description</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getProvider <em>Provider</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getJtaDataSource <em>Jta Data Source</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getNonJtaDataSource <em>Non Jta Data Source</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getMappingFiles <em>Mapping Files</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getJarFiles <em>Jar Files</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getClasses <em>Classes</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#isExcludeUnlistedClasses <em>Exclude Unlisted Classes</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getProperties <em>Properties</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getTransactionType <em>Transaction Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getPersistenceUnit()
+ * @model kind="class"
+ * @generated
+ */
+public class PersistenceUnit extends XmlEObject
+{
+ /**
+ * 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 #getProvider() <em>Provider</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getProvider()
+ * @generated
+ * @ordered
+ */
+ protected static final String PROVIDER_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getProvider() <em>Provider</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getProvider()
+ * @generated
+ * @ordered
+ */
+ protected String provider = PROVIDER_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getJtaDataSource() <em>Jta Data Source</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getJtaDataSource()
+ * @generated
+ * @ordered
+ */
+ protected static final String JTA_DATA_SOURCE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getJtaDataSource() <em>Jta Data Source</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getJtaDataSource()
+ * @generated
+ * @ordered
+ */
+ protected String jtaDataSource = JTA_DATA_SOURCE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getNonJtaDataSource() <em>Non Jta Data Source</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNonJtaDataSource()
+ * @generated
+ * @ordered
+ */
+ protected static final String NON_JTA_DATA_SOURCE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getNonJtaDataSource() <em>Non Jta Data Source</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNonJtaDataSource()
+ * @generated
+ * @ordered
+ */
+ protected String nonJtaDataSource = NON_JTA_DATA_SOURCE_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getMappingFiles() <em>Mapping Files</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMappingFiles()
+ * @generated
+ * @ordered
+ */
+ protected EList<MappingFileRef> mappingFiles;
+
+ /**
+ * The cached value of the '{@link #getJarFiles() <em>Jar Files</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getJarFiles()
+ * @generated
+ * @ordered
+ */
+ protected EList<String> jarFiles;
+
+ /**
+ * The cached value of the '{@link #getClasses() <em>Classes</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getClasses()
+ * @generated
+ * @ordered
+ */
+ protected EList<JavaClassRef> classes;
+
+ /**
+ * The default value of the '{@link #isExcludeUnlistedClasses() <em>Exclude Unlisted Classes</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isExcludeUnlistedClasses()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean EXCLUDE_UNLISTED_CLASSES_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isExcludeUnlistedClasses() <em>Exclude Unlisted Classes</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isExcludeUnlistedClasses()
+ * @generated
+ * @ordered
+ */
+ protected boolean excludeUnlistedClasses = EXCLUDE_UNLISTED_CLASSES_EDEFAULT;
+
+ /**
+ * This is true if the Exclude Unlisted Classes attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected boolean excludeUnlistedClassesESet;
+
+ /**
+ * The cached value of the '{@link #getProperties() <em>Properties</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getProperties()
+ * @generated
+ * @ordered
+ */
+ protected Properties properties;
+
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getTransactionType() <em>Transaction Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTransactionType()
+ * @generated
+ * @ordered
+ */
+ protected static final PersistenceUnitTransactionType TRANSACTION_TYPE_EDEFAULT = PersistenceUnitTransactionType.JTA;
+
+ /**
+ * The cached value of the '{@link #getTransactionType() <em>Transaction Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTransactionType()
+ * @generated
+ * @ordered
+ */
+ protected PersistenceUnitTransactionType transactionType = TRANSACTION_TYPE_EDEFAULT;
+
+ /**
+ * This is true if the Transaction Type attribute has been set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ protected boolean transactionTypeESet;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PersistenceUnit() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PersistencePackage.Literals.PERSISTENCE_UNIT;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Description</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Description</em>' attribute.
+ * @see #setDescription(String)
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getPersistenceUnit_Description()
+ * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String"
+ * @generated
+ */
+ public String getDescription() {
+ return description;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#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
+ */
+ public void setDescription(String newDescription) {
+ String oldDescription = description;
+ description = newDescription;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PersistencePackage.PERSISTENCE_UNIT__DESCRIPTION, oldDescription, description));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Provider</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Provider</em>' attribute.
+ * @see #setProvider(String)
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getPersistenceUnit_Provider()
+ * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String"
+ * @generated
+ */
+ public String getProvider() {
+ return provider;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getProvider <em>Provider</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Provider</em>' attribute.
+ * @see #getProvider()
+ * @generated
+ */
+ public void setProvider(String newProvider) {
+ String oldProvider = provider;
+ provider = newProvider;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PersistencePackage.PERSISTENCE_UNIT__PROVIDER, oldProvider, provider));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Jta Data Source</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Jta Data Source</em>' attribute.
+ * @see #setJtaDataSource(String)
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getPersistenceUnit_JtaDataSource()
+ * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String"
+ * @generated
+ */
+ public String getJtaDataSource() {
+ return jtaDataSource;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getJtaDataSource <em>Jta Data Source</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Jta Data Source</em>' attribute.
+ * @see #getJtaDataSource()
+ * @generated
+ */
+ public void setJtaDataSource(String newJtaDataSource) {
+ String oldJtaDataSource = jtaDataSource;
+ jtaDataSource = newJtaDataSource;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PersistencePackage.PERSISTENCE_UNIT__JTA_DATA_SOURCE, oldJtaDataSource, jtaDataSource));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Non Jta Data Source</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Non Jta Data Source</em>' attribute.
+ * @see #setNonJtaDataSource(String)
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getPersistenceUnit_NonJtaDataSource()
+ * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String"
+ * @generated
+ */
+ public String getNonJtaDataSource() {
+ return nonJtaDataSource;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getNonJtaDataSource <em>Non Jta Data Source</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Non Jta Data Source</em>' attribute.
+ * @see #getNonJtaDataSource()
+ * @generated
+ */
+ public void setNonJtaDataSource(String newNonJtaDataSource) {
+ String oldNonJtaDataSource = nonJtaDataSource;
+ nonJtaDataSource = newNonJtaDataSource;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PersistencePackage.PERSISTENCE_UNIT__NON_JTA_DATA_SOURCE, oldNonJtaDataSource, nonJtaDataSource));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Mapping Files</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.content.persistence.MappingFileRef}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Mapping Files</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getPersistenceUnit_MappingFiles()
+ * @model type="org.eclipse.jpt.core.internal.content.persistence.MappingFileRef" containment="true"
+ * @generated
+ */
+ public EList<MappingFileRef> getMappingFiles() {
+ if (mappingFiles == null) {
+ mappingFiles = new EObjectContainmentEList<MappingFileRef>(MappingFileRef.class, this, PersistencePackage.PERSISTENCE_UNIT__MAPPING_FILES);
+ }
+ return mappingFiles;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Jar Files</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.String}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Jar Files</em>' attribute list.
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getPersistenceUnit_JarFiles()
+ * @model type="java.lang.String" unique="false" dataType="org.eclipse.emf.ecore.xml.type.String"
+ * @generated
+ */
+ public EList<String> getJarFiles() {
+ if (jarFiles == null) {
+ jarFiles = new EDataTypeEList<String>(String.class, this, PersistencePackage.PERSISTENCE_UNIT__JAR_FILES);
+ }
+ return jarFiles;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Classes</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.content.persistence.JavaClassRef}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Classes</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getPersistenceUnit_Classes()
+ * @model type="org.eclipse.jpt.core.internal.content.persistence.JavaClassRef" containment="true"
+ * @generated
+ */
+ public EList<JavaClassRef> getClasses() {
+ if (classes == null) {
+ classes = new EObjectContainmentEList<JavaClassRef>(JavaClassRef.class, this, PersistencePackage.PERSISTENCE_UNIT__CLASSES);
+ }
+ return classes;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Exclude Unlisted Classes</b></em>' attribute.
+ * The default value is <code>"false"</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Exclude Unlisted Classes</em>' attribute.
+ * @see #isSetExcludeUnlistedClasses()
+ * @see #unsetExcludeUnlistedClasses()
+ * @see #setExcludeUnlistedClasses(boolean)
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getPersistenceUnit_ExcludeUnlistedClasses()
+ * @model default="false" unique="false" unsettable="true" dataType="org.eclipse.emf.ecore.xml.type.Boolean"
+ * @generated
+ */
+ public boolean isExcludeUnlistedClasses() {
+ return excludeUnlistedClasses;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#isExcludeUnlistedClasses <em>Exclude Unlisted Classes</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Exclude Unlisted Classes</em>' attribute.
+ * @see #isSetExcludeUnlistedClasses()
+ * @see #unsetExcludeUnlistedClasses()
+ * @see #isExcludeUnlistedClasses()
+ * @generated
+ */
+ public void setExcludeUnlistedClasses(boolean newExcludeUnlistedClasses) {
+ boolean oldExcludeUnlistedClasses = excludeUnlistedClasses;
+ excludeUnlistedClasses = newExcludeUnlistedClasses;
+ boolean oldExcludeUnlistedClassesESet = excludeUnlistedClassesESet;
+ excludeUnlistedClassesESet = true;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PersistencePackage.PERSISTENCE_UNIT__EXCLUDE_UNLISTED_CLASSES, oldExcludeUnlistedClasses, excludeUnlistedClasses, !oldExcludeUnlistedClassesESet));
+ }
+
+ /**
+ * Unsets the value of the '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#isExcludeUnlistedClasses <em>Exclude Unlisted Classes</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetExcludeUnlistedClasses()
+ * @see #isExcludeUnlistedClasses()
+ * @see #setExcludeUnlistedClasses(boolean)
+ * @generated
+ */
+ public void unsetExcludeUnlistedClasses() {
+ boolean oldExcludeUnlistedClasses = excludeUnlistedClasses;
+ boolean oldExcludeUnlistedClassesESet = excludeUnlistedClassesESet;
+ excludeUnlistedClasses = EXCLUDE_UNLISTED_CLASSES_EDEFAULT;
+ excludeUnlistedClassesESet = false;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, PersistencePackage.PERSISTENCE_UNIT__EXCLUDE_UNLISTED_CLASSES, oldExcludeUnlistedClasses, EXCLUDE_UNLISTED_CLASSES_EDEFAULT, oldExcludeUnlistedClassesESet));
+ }
+
+ /**
+ * Returns whether the value of the '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#isExcludeUnlistedClasses <em>Exclude Unlisted Classes</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Exclude Unlisted Classes</em>' attribute is set.
+ * @see #unsetExcludeUnlistedClasses()
+ * @see #isExcludeUnlistedClasses()
+ * @see #setExcludeUnlistedClasses(boolean)
+ * @generated
+ */
+ public boolean isSetExcludeUnlistedClasses() {
+ return excludeUnlistedClassesESet;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Properties</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Properties</em>' containment reference.
+ * @see #setProperties(Properties)
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getPersistenceUnit_Properties()
+ * @model containment="true"
+ * @generated
+ */
+ public Properties getProperties() {
+ return properties;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetProperties(Properties newProperties, NotificationChain msgs) {
+ Properties oldProperties = properties;
+ properties = newProperties;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, PersistencePackage.PERSISTENCE_UNIT__PROPERTIES, oldProperties, newProperties);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getProperties <em>Properties</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Properties</em>' containment reference.
+ * @see #getProperties()
+ * @generated
+ */
+ public void setProperties(Properties newProperties) {
+ if (newProperties != properties) {
+ NotificationChain msgs = null;
+ if (properties != null)
+ msgs = ((InternalEObject) properties).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - PersistencePackage.PERSISTENCE_UNIT__PROPERTIES, null, msgs);
+ if (newProperties != null)
+ msgs = ((InternalEObject) newProperties).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - PersistencePackage.PERSISTENCE_UNIT__PROPERTIES, null, msgs);
+ msgs = basicSetProperties(newProperties, msgs);
+ if (msgs != null)
+ msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PersistencePackage.PERSISTENCE_UNIT__PROPERTIES, newProperties, newProperties));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getPersistenceUnit_Name()
+ * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PersistencePackage.PERSISTENCE_UNIT__NAME, oldName, name));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Transaction Type</b></em>' attribute.
+ * The default value is <code>"JTA"</code>.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnitTransactionType}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Transaction Type</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistenceUnitTransactionType
+ * @see #isSetTransactionType()
+ * @see #unsetTransactionType()
+ * @see #setTransactionType(PersistenceUnitTransactionType)
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getPersistenceUnit_TransactionType()
+ * @model default="JTA" unique="false" unsettable="true"
+ * @generated
+ */
+ public PersistenceUnitTransactionType getTransactionType() {
+ return transactionType;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getTransactionType <em>Transaction Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Transaction Type</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistenceUnitTransactionType
+ * @see #isSetTransactionType()
+ * @see #unsetTransactionType()
+ * @see #getTransactionType()
+ * @generated
+ */
+ public void setTransactionType(PersistenceUnitTransactionType newTransactionType) {
+ PersistenceUnitTransactionType oldTransactionType = transactionType;
+ transactionType = newTransactionType == null ? TRANSACTION_TYPE_EDEFAULT : newTransactionType;
+ boolean oldTransactionTypeESet = transactionTypeESet;
+ transactionTypeESet = true;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PersistencePackage.PERSISTENCE_UNIT__TRANSACTION_TYPE, oldTransactionType, transactionType, !oldTransactionTypeESet));
+ }
+
+ /**
+ * Unsets the value of the '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getTransactionType <em>Transaction Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isSetTransactionType()
+ * @see #getTransactionType()
+ * @see #setTransactionType(PersistenceUnitTransactionType)
+ * @generated
+ */
+ public void unsetTransactionType() {
+ PersistenceUnitTransactionType oldTransactionType = transactionType;
+ boolean oldTransactionTypeESet = transactionTypeESet;
+ transactionType = TRANSACTION_TYPE_EDEFAULT;
+ transactionTypeESet = false;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.UNSET, PersistencePackage.PERSISTENCE_UNIT__TRANSACTION_TYPE, oldTransactionType, TRANSACTION_TYPE_EDEFAULT, oldTransactionTypeESet));
+ }
+
+ /**
+ * Returns whether the value of the '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit#getTransactionType <em>Transaction Type</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Transaction Type</em>' attribute is set.
+ * @see #unsetTransactionType()
+ * @see #getTransactionType()
+ * @see #setTransactionType(PersistenceUnitTransactionType)
+ * @generated
+ */
+ public boolean isSetTransactionType() {
+ return transactionTypeESet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case PersistencePackage.PERSISTENCE_UNIT__MAPPING_FILES :
+ return ((InternalEList<?>) getMappingFiles()).basicRemove(otherEnd, msgs);
+ case PersistencePackage.PERSISTENCE_UNIT__CLASSES :
+ return ((InternalEList<?>) getClasses()).basicRemove(otherEnd, msgs);
+ case PersistencePackage.PERSISTENCE_UNIT__PROPERTIES :
+ return basicSetProperties(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 PersistencePackage.PERSISTENCE_UNIT__DESCRIPTION :
+ return getDescription();
+ case PersistencePackage.PERSISTENCE_UNIT__PROVIDER :
+ return getProvider();
+ case PersistencePackage.PERSISTENCE_UNIT__JTA_DATA_SOURCE :
+ return getJtaDataSource();
+ case PersistencePackage.PERSISTENCE_UNIT__NON_JTA_DATA_SOURCE :
+ return getNonJtaDataSource();
+ case PersistencePackage.PERSISTENCE_UNIT__MAPPING_FILES :
+ return getMappingFiles();
+ case PersistencePackage.PERSISTENCE_UNIT__JAR_FILES :
+ return getJarFiles();
+ case PersistencePackage.PERSISTENCE_UNIT__CLASSES :
+ return getClasses();
+ case PersistencePackage.PERSISTENCE_UNIT__EXCLUDE_UNLISTED_CLASSES :
+ return isExcludeUnlistedClasses() ? Boolean.TRUE : Boolean.FALSE;
+ case PersistencePackage.PERSISTENCE_UNIT__PROPERTIES :
+ return getProperties();
+ case PersistencePackage.PERSISTENCE_UNIT__NAME :
+ return getName();
+ case PersistencePackage.PERSISTENCE_UNIT__TRANSACTION_TYPE :
+ return getTransactionType();
+ }
+ 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 PersistencePackage.PERSISTENCE_UNIT__DESCRIPTION :
+ setDescription((String) newValue);
+ return;
+ case PersistencePackage.PERSISTENCE_UNIT__PROVIDER :
+ setProvider((String) newValue);
+ return;
+ case PersistencePackage.PERSISTENCE_UNIT__JTA_DATA_SOURCE :
+ setJtaDataSource((String) newValue);
+ return;
+ case PersistencePackage.PERSISTENCE_UNIT__NON_JTA_DATA_SOURCE :
+ setNonJtaDataSource((String) newValue);
+ return;
+ case PersistencePackage.PERSISTENCE_UNIT__MAPPING_FILES :
+ getMappingFiles().clear();
+ getMappingFiles().addAll((Collection<? extends MappingFileRef>) newValue);
+ return;
+ case PersistencePackage.PERSISTENCE_UNIT__JAR_FILES :
+ getJarFiles().clear();
+ getJarFiles().addAll((Collection<? extends String>) newValue);
+ return;
+ case PersistencePackage.PERSISTENCE_UNIT__CLASSES :
+ getClasses().clear();
+ getClasses().addAll((Collection<? extends JavaClassRef>) newValue);
+ return;
+ case PersistencePackage.PERSISTENCE_UNIT__EXCLUDE_UNLISTED_CLASSES :
+ setExcludeUnlistedClasses(((Boolean) newValue).booleanValue());
+ return;
+ case PersistencePackage.PERSISTENCE_UNIT__PROPERTIES :
+ setProperties((Properties) newValue);
+ return;
+ case PersistencePackage.PERSISTENCE_UNIT__NAME :
+ setName((String) newValue);
+ return;
+ case PersistencePackage.PERSISTENCE_UNIT__TRANSACTION_TYPE :
+ setTransactionType((PersistenceUnitTransactionType) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PersistencePackage.PERSISTENCE_UNIT__DESCRIPTION :
+ setDescription(DESCRIPTION_EDEFAULT);
+ return;
+ case PersistencePackage.PERSISTENCE_UNIT__PROVIDER :
+ setProvider(PROVIDER_EDEFAULT);
+ return;
+ case PersistencePackage.PERSISTENCE_UNIT__JTA_DATA_SOURCE :
+ setJtaDataSource(JTA_DATA_SOURCE_EDEFAULT);
+ return;
+ case PersistencePackage.PERSISTENCE_UNIT__NON_JTA_DATA_SOURCE :
+ setNonJtaDataSource(NON_JTA_DATA_SOURCE_EDEFAULT);
+ return;
+ case PersistencePackage.PERSISTENCE_UNIT__MAPPING_FILES :
+ getMappingFiles().clear();
+ return;
+ case PersistencePackage.PERSISTENCE_UNIT__JAR_FILES :
+ getJarFiles().clear();
+ return;
+ case PersistencePackage.PERSISTENCE_UNIT__CLASSES :
+ getClasses().clear();
+ return;
+ case PersistencePackage.PERSISTENCE_UNIT__EXCLUDE_UNLISTED_CLASSES :
+ unsetExcludeUnlistedClasses();
+ return;
+ case PersistencePackage.PERSISTENCE_UNIT__PROPERTIES :
+ setProperties((Properties) null);
+ return;
+ case PersistencePackage.PERSISTENCE_UNIT__NAME :
+ setName(NAME_EDEFAULT);
+ return;
+ case PersistencePackage.PERSISTENCE_UNIT__TRANSACTION_TYPE :
+ unsetTransactionType();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PersistencePackage.PERSISTENCE_UNIT__DESCRIPTION :
+ return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
+ case PersistencePackage.PERSISTENCE_UNIT__PROVIDER :
+ return PROVIDER_EDEFAULT == null ? provider != null : !PROVIDER_EDEFAULT.equals(provider);
+ case PersistencePackage.PERSISTENCE_UNIT__JTA_DATA_SOURCE :
+ return JTA_DATA_SOURCE_EDEFAULT == null ? jtaDataSource != null : !JTA_DATA_SOURCE_EDEFAULT.equals(jtaDataSource);
+ case PersistencePackage.PERSISTENCE_UNIT__NON_JTA_DATA_SOURCE :
+ return NON_JTA_DATA_SOURCE_EDEFAULT == null ? nonJtaDataSource != null : !NON_JTA_DATA_SOURCE_EDEFAULT.equals(nonJtaDataSource);
+ case PersistencePackage.PERSISTENCE_UNIT__MAPPING_FILES :
+ return mappingFiles != null && !mappingFiles.isEmpty();
+ case PersistencePackage.PERSISTENCE_UNIT__JAR_FILES :
+ return jarFiles != null && !jarFiles.isEmpty();
+ case PersistencePackage.PERSISTENCE_UNIT__CLASSES :
+ return classes != null && !classes.isEmpty();
+ case PersistencePackage.PERSISTENCE_UNIT__EXCLUDE_UNLISTED_CLASSES :
+ return isSetExcludeUnlistedClasses();
+ case PersistencePackage.PERSISTENCE_UNIT__PROPERTIES :
+ return properties != null;
+ case PersistencePackage.PERSISTENCE_UNIT__NAME :
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case PersistencePackage.PERSISTENCE_UNIT__TRANSACTION_TYPE :
+ return isSetTransactionType();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ public Persistence getPersistence() {
+ return (Persistence) eContainer();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy())
+ return super.toString();
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (description: ");
+ result.append(description);
+ result.append(", provider: ");
+ result.append(provider);
+ result.append(", jtaDataSource: ");
+ result.append(jtaDataSource);
+ result.append(", nonJtaDataSource: ");
+ result.append(nonJtaDataSource);
+ result.append(", jarFiles: ");
+ result.append(jarFiles);
+ result.append(", excludeUnlistedClasses: ");
+ if (excludeUnlistedClassesESet)
+ result.append(excludeUnlistedClasses);
+ else
+ result.append("<unset>");
+ result.append(", name: ");
+ result.append(name);
+ result.append(", transactionType: ");
+ if (transactionTypeESet)
+ result.append(transactionType);
+ else
+ result.append("<unset>");
+ result.append(')');
+ return result.toString();
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceUnitTransactionType.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceUnitTransactionType.java
new file mode 100644
index 0000000000..953a67b4c7
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceUnitTransactionType.java
@@ -0,0 +1,212 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.persistence;
+
+import static org.eclipse.jpt.core.internal.content.persistence.PersistenceUnitTransactionType.JTA_VALUE;
+import static org.eclipse.jpt.core.internal.content.persistence.PersistenceUnitTransactionType.RESOURCE_LOCAL_VALUE;
+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>Persistence Unit Transaction Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getPersistenceUnitTransactionType()
+ * @model
+ * @generated
+ */
+public enum PersistenceUnitTransactionType implements Enumerator {
+ /**
+ * The '<em><b>JTA</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #JTA_VALUE
+ * @generated
+ * @ordered
+ */
+ JTA(0, "JTA", "JTA"),
+ /**
+ * The '<em><b>RESOURCE LOCAL</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #RESOURCE_LOCAL_VALUE
+ * @generated
+ * @ordered
+ */
+ RESOURCE_LOCAL(1, "RESOURCE_LOCAL", "RESOURCE_LOCAL");
+ /**
+ * The '<em><b>JTA</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>JTA</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #JTA
+ * @model
+ * @generated
+ * @ordered
+ */
+ public static final int JTA_VALUE = 0;
+
+ /**
+ * The '<em><b>RESOURCE LOCAL</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>RESOURCE LOCAL</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #RESOURCE_LOCAL
+ * @model
+ * @generated
+ * @ordered
+ */
+ public static final int RESOURCE_LOCAL_VALUE = 1;
+
+ /**
+ * An array of all the '<em><b>Unit Transaction Type</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final PersistenceUnitTransactionType[] VALUES_ARRAY = new PersistenceUnitTransactionType[] {
+ JTA, RESOURCE_LOCAL,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Unit Transaction Type</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<PersistenceUnitTransactionType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Unit Transaction Type</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static PersistenceUnitTransactionType get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ PersistenceUnitTransactionType result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Unit Transaction Type</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static PersistenceUnitTransactionType getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ PersistenceUnitTransactionType result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Unit Transaction Type</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static PersistenceUnitTransactionType get(int value) {
+ switch (value) {
+ case JTA_VALUE :
+ return JTA;
+ case RESOURCE_LOCAL_VALUE :
+ return RESOURCE_LOCAL;
+ }
+ 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 PersistenceUnitTransactionType(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;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceXmlJpaFileContentProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceXmlJpaFileContentProvider.java
new file mode 100644
index 0000000000..fc0a903f45
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceXmlJpaFileContentProvider.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.persistence;
+
+import java.io.IOException;
+import java.util.Collections;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.jem.util.emf.workbench.WorkbenchResourceHelperBase;
+import org.eclipse.jpt.core.internal.IJpaFileContentProvider;
+import org.eclipse.jpt.core.internal.IJpaRootContentNode;
+import org.eclipse.jpt.core.internal.JpaCorePlugin;
+import org.eclipse.jpt.core.internal.content.persistence.resource.PersistenceResource;
+import org.eclipse.jpt.core.internal.content.persistence.resource.PersistenceXmlResourceFactory;
+
+public class PersistenceXmlJpaFileContentProvider implements IJpaFileContentProvider
+{
+ public static PersistenceXmlJpaFileContentProvider INSTANCE = new PersistenceXmlJpaFileContentProvider();
+
+ /**
+ * Restrict access
+ */
+ private PersistenceXmlJpaFileContentProvider() {
+
+ }
+
+ public IJpaRootContentNode buildRootContent(IFile resourceFile) {
+ PersistenceXmlResourceFactory.register();
+
+ URI fileURI = URI.createPlatformResourceURI(resourceFile.getFullPath().toString());
+ PersistenceResource resource = (PersistenceResource) getResourceSet(resourceFile).getResource(fileURI, true);
+ PersistenceXmlRootContentNode root = PersistenceFactory.eINSTANCE.createPersistenceXmlRootContentNode();
+ root.setPersistence(resource.getPersistence());
+ resource.eAdapters().add(buildRootNodeListener(root));
+ return root;
+ }
+
+ private Adapter buildRootNodeListener(PersistenceXmlRootContentNode root) {
+ return new RootAdapter(root);
+ }
+
+ protected ResourceSet getResourceSet(IFile file) {
+ return WorkbenchResourceHelperBase.getResourceSet(file.getProject());
+ }
+
+ public String contentType() {
+ return JpaCorePlugin.PERSISTENCE_XML_CONTENT_TYPE;
+ }
+
+
+ private class RootAdapter extends AdapterImpl
+ {
+ PersistenceXmlRootContentNode root;
+
+ private RootAdapter(PersistenceXmlRootContentNode rootContentNode) {
+ super();
+ root = rootContentNode;
+ }
+
+ public void notifyChanged(Notification notification) {
+ int featureId = notification.getFeatureID(Resource.class);
+ if (featureId == Resource.RESOURCE__CONTENTS) {
+ if (notification.getEventType() == Notification.ADD
+ || notification.getEventType() == Notification.REMOVE) {
+ PersistenceResource resource = (PersistenceResource) notification.getNotifier();
+ root.setPersistence(resource.getPersistence());
+ }
+ }
+ else if (featureId == Resource.RESOURCE__IS_LOADED) {
+ // dumb translator is unloading my resource, reload it
+ if (notification.getNewBooleanValue() == false) {
+ PersistenceResource resource = (PersistenceResource) notification.getNotifier();
+ try {
+ resource.load(Collections.EMPTY_MAP);
+ }
+ catch (IOException ioe) {
+ // hmmm, log for now
+ JpaCorePlugin.log(ioe);
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceXmlRootContentNode.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceXmlRootContentNode.java
new file mode 100644
index 0000000000..8e7ca6c8da
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/PersistenceXmlRootContentNode.java
@@ -0,0 +1,357 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.persistence;
+
+import org.eclipse.core.resources.IResource;
+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.jdt.core.ElementChangedEvent;
+import org.eclipse.jpt.core.internal.IJpaContentNode;
+import org.eclipse.jpt.core.internal.IJpaFile;
+import org.eclipse.jpt.core.internal.IJpaRootContentNode;
+import org.eclipse.jpt.core.internal.JpaCorePackage;
+import org.eclipse.jpt.core.internal.JpaFile;
+import org.eclipse.jpt.core.internal.XmlEObject;
+import org.eclipse.jpt.core.internal.content.persistence.resource.IPersistenceXmlContentNodes;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Persistence Xml Root Content Node</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceXmlRootContentNode#getPersistence <em>Persistence</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getPersistenceXmlRootContentNode()
+ * @model kind="class"
+ * @generated
+ */
+public class PersistenceXmlRootContentNode extends XmlEObject
+ implements IJpaRootContentNode
+{
+ /**
+ * The cached value of the '{@link #getPersistence() <em>Persistence</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPersistence()
+ * @generated
+ * @ordered
+ */
+ protected Persistence persistence;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PersistenceXmlRootContentNode() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PersistencePackage.Literals.PERSISTENCE_XML_ROOT_CONTENT_NODE;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Jpa File</b></em>' container reference.
+ * The default value is <code>""</code>.
+ * It is bidirectional and its opposite is '{@link org.eclipse.jpt.core.internal.JpaFile#getContent <em>Content</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Jpa File</em>' container reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Jpa File</em>' container reference.
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getIJpaRootContentNode_JpaFile()
+ * @see org.eclipse.jpt.core.internal.JpaFile#getContent
+ * @model opposite="content" changeable="false"
+ * @generated
+ */
+ public IJpaFile getJpaFile() {
+ if (eContainerFeatureID != PersistencePackage.PERSISTENCE_XML_ROOT_CONTENT_NODE__JPA_FILE)
+ return null;
+ return (IJpaFile) eContainer();
+ }
+
+ public IResource getResource() {
+ return getJpaFile().getResource();
+ }
+
+ /**
+ * Returns the value of the '<em><b>Persistence</b></em>' reference.
+ * It is bidirectional and its opposite is '{@link org.eclipse.jpt.core.internal.content.persistence.Persistence#getRoot <em>Root</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Persistence</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Persistence</em>' reference.
+ * @see #setPersistence(Persistence)
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getPersistenceXmlRootContentNode_Persistence()
+ * @see org.eclipse.jpt.core.internal.content.persistence.Persistence#getRoot
+ * @model opposite="root"
+ * @generated
+ */
+ public Persistence getPersistence() {
+ if (persistence != null && persistence.eIsProxy()) {
+ InternalEObject oldPersistence = (InternalEObject) persistence;
+ persistence = (Persistence) eResolveProxy(oldPersistence);
+ if (persistence != oldPersistence) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, PersistencePackage.PERSISTENCE_XML_ROOT_CONTENT_NODE__PERSISTENCE, oldPersistence, persistence));
+ }
+ }
+ return persistence;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Persistence basicGetPersistence() {
+ return persistence;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetPersistence(Persistence newPersistence, NotificationChain msgs) {
+ Persistence oldPersistence = persistence;
+ persistence = newPersistence;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, PersistencePackage.PERSISTENCE_XML_ROOT_CONTENT_NODE__PERSISTENCE, oldPersistence, newPersistence);
+ if (msgs == null)
+ msgs = notification;
+ else
+ msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceXmlRootContentNode#getPersistence <em>Persistence</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Persistence</em>' reference.
+ * @see #getPersistence()
+ * @generated
+ */
+ public void setPersistence(Persistence newPersistence) {
+ if (newPersistence != persistence) {
+ NotificationChain msgs = null;
+ if (persistence != null)
+ msgs = ((InternalEObject) persistence).eInverseRemove(this, PersistencePackage.PERSISTENCE__ROOT, Persistence.class, msgs);
+ if (newPersistence != null)
+ msgs = ((InternalEObject) newPersistence).eInverseAdd(this, PersistencePackage.PERSISTENCE__ROOT, Persistence.class, msgs);
+ msgs = basicSetPersistence(newPersistence, msgs);
+ if (msgs != null)
+ msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PersistencePackage.PERSISTENCE_XML_ROOT_CONTENT_NODE__PERSISTENCE, newPersistence, newPersistence));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case PersistencePackage.PERSISTENCE_XML_ROOT_CONTENT_NODE__JPA_FILE :
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ return eBasicSetContainer(otherEnd, PersistencePackage.PERSISTENCE_XML_ROOT_CONTENT_NODE__JPA_FILE, msgs);
+ case PersistencePackage.PERSISTENCE_XML_ROOT_CONTENT_NODE__PERSISTENCE :
+ if (persistence != null)
+ msgs = ((InternalEObject) persistence).eInverseRemove(this, PersistencePackage.PERSISTENCE__ROOT, Persistence.class, msgs);
+ return basicSetPersistence((Persistence) 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 PersistencePackage.PERSISTENCE_XML_ROOT_CONTENT_NODE__JPA_FILE :
+ return eBasicSetContainer(null, PersistencePackage.PERSISTENCE_XML_ROOT_CONTENT_NODE__JPA_FILE, msgs);
+ case PersistencePackage.PERSISTENCE_XML_ROOT_CONTENT_NODE__PERSISTENCE :
+ return basicSetPersistence(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
+ switch (eContainerFeatureID) {
+ case PersistencePackage.PERSISTENCE_XML_ROOT_CONTENT_NODE__JPA_FILE :
+ return eInternalContainer().eInverseRemove(this, JpaCorePackage.JPA_FILE__CONTENT, JpaFile.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 PersistencePackage.PERSISTENCE_XML_ROOT_CONTENT_NODE__JPA_FILE :
+ return getJpaFile();
+ case PersistencePackage.PERSISTENCE_XML_ROOT_CONTENT_NODE__PERSISTENCE :
+ if (resolve)
+ return getPersistence();
+ return basicGetPersistence();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case PersistencePackage.PERSISTENCE_XML_ROOT_CONTENT_NODE__PERSISTENCE :
+ setPersistence((Persistence) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PersistencePackage.PERSISTENCE_XML_ROOT_CONTENT_NODE__PERSISTENCE :
+ setPersistence((Persistence) null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PersistencePackage.PERSISTENCE_XML_ROOT_CONTENT_NODE__JPA_FILE :
+ return getJpaFile() != null;
+ case PersistencePackage.PERSISTENCE_XML_ROOT_CONTENT_NODE__PERSISTENCE :
+ return persistence != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+ if (baseClass == IJpaContentNode.class) {
+ switch (derivedFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IJpaRootContentNode.class) {
+ switch (derivedFeatureID) {
+ case PersistencePackage.PERSISTENCE_XML_ROOT_CONTENT_NODE__JPA_FILE :
+ return JpaCorePackage.IJPA_ROOT_CONTENT_NODE__JPA_FILE;
+ 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 == IJpaContentNode.class) {
+ switch (baseFeatureID) {
+ default :
+ return -1;
+ }
+ }
+ if (baseClass == IJpaRootContentNode.class) {
+ switch (baseFeatureID) {
+ case JpaCorePackage.IJPA_ROOT_CONTENT_NODE__JPA_FILE :
+ return PersistencePackage.PERSISTENCE_XML_ROOT_CONTENT_NODE__JPA_FILE;
+ default :
+ return -1;
+ }
+ }
+ return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+ }
+
+ public void dispose() {
+ // TODO Auto-generated method stub
+ }
+
+ public void handleJavaElementChangedEvent(ElementChangedEvent event) {
+ // TODO Auto-generated method stub
+ }
+
+ public IJpaContentNode getContentNode(int offset) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Object getId() {
+ return IPersistenceXmlContentNodes.PERSISTENCEXML_ROOT_ID;
+ }
+} // PersistenceXmlRootContentNode \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/Properties.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/Properties.java
new file mode 100644
index 0000000000..a0bad5d5dc
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/Properties.java
@@ -0,0 +1,157 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.persistence;
+
+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.jpt.core.internal.XmlEObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Properties</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.persistence.Properties#getProperties <em>Properties</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getProperties()
+ * @model kind="class"
+ * @generated
+ */
+public class Properties extends XmlEObject
+{
+ /**
+ * The cached value of the '{@link #getProperties() <em>Properties</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getProperties()
+ * @generated
+ * @ordered
+ */
+ protected EList<Property> properties;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Properties() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PersistencePackage.Literals.PROPERTIES;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Properties</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.content.persistence.Property}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Properties</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getProperties_Properties()
+ * @model type="org.eclipse.jpt.core.internal.content.persistence.Property" containment="true"
+ * @generated
+ */
+ public EList<Property> getProperties() {
+ if (properties == null) {
+ properties = new EObjectContainmentEList<Property>(Property.class, this, PersistencePackage.PROPERTIES__PROPERTIES);
+ }
+ return properties;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case PersistencePackage.PROPERTIES__PROPERTIES :
+ return ((InternalEList<?>) getProperties()).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 PersistencePackage.PROPERTIES__PROPERTIES :
+ return getProperties();
+ }
+ 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 PersistencePackage.PROPERTIES__PROPERTIES :
+ getProperties().clear();
+ getProperties().addAll((Collection<? extends Property>) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case PersistencePackage.PROPERTIES__PROPERTIES :
+ getProperties().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PersistencePackage.PROPERTIES__PROPERTIES :
+ return properties != null && !properties.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+} //PropertiesImpl
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/Property.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/Property.java
new file mode 100644
index 0000000000..0d8d06a957
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/Property.java
@@ -0,0 +1,237 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.persistence;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.jpt.core.internal.XmlEObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.content.persistence.Property#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.content.persistence.Property#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getProperty()
+ * @model kind="class"
+ * @generated
+ */
+public class Property extends XmlEObject
+{
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_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 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 Property() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return PersistencePackage.Literals.PROPERTY;
+ }
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getProperty_Name()
+ * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.persistence.Property#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PersistencePackage.PROPERTY__NAME, oldName, name));
+ }
+
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(String)
+ * @see org.eclipse.jpt.core.internal.content.persistence.PersistencePackage#getProperty_Value()
+ * @model unique="false" dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+ * @generated
+ */
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.content.persistence.Property#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
+ */
+ public void setValue(String newValue) {
+ String oldValue = value;
+ value = newValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, PersistencePackage.PROPERTY__VALUE, oldValue, value));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case PersistencePackage.PROPERTY__NAME :
+ return getName();
+ case PersistencePackage.PROPERTY__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 PersistencePackage.PROPERTY__NAME :
+ setName((String) newValue);
+ return;
+ case PersistencePackage.PROPERTY__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 PersistencePackage.PROPERTY__NAME :
+ setName(NAME_EDEFAULT);
+ return;
+ case PersistencePackage.PROPERTY__VALUE :
+ setValue(VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case PersistencePackage.PROPERTY__NAME :
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case PersistencePackage.PROPERTY__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(" (name: ");
+ result.append(name);
+ result.append(", value: ");
+ result.append(value);
+ result.append(')');
+ return result.toString();
+ }
+} //PropertyImpl
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/BooleanTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/BooleanTranslator.java
new file mode 100644
index 0000000000..fd2e185772
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/BooleanTranslator.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.persistence.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class BooleanTranslator extends Translator
+{
+ public BooleanTranslator(String domNameAndPath, EStructuralFeature aFeature) {
+ super(domNameAndPath, aFeature, BOOLEAN_FEATURE | BOOLEAN_LOWERCASE);
+ }
+
+ public BooleanTranslator(String domNameAndPath, EStructuralFeature aFeature, int style) {
+ super(domNameAndPath, aFeature, BOOLEAN_FEATURE | BOOLEAN_LOWERCASE | style);
+ }
+
+ public Object convertStringToValue(String strValue, EObject owner) {
+ return Boolean.valueOf(strValue);
+ }
+
+ public String convertValueToString(Object value, EObject owner) {
+ return ((Boolean) value).toString();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/IPersistenceXmlContentNodes.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/IPersistenceXmlContentNodes.java
new file mode 100644
index 0000000000..3c3c075c31
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/IPersistenceXmlContentNodes.java
@@ -0,0 +1,17 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.persistence.resource;
+
+import org.eclipse.jpt.core.internal.JpaCorePlugin;
+
+public interface IPersistenceXmlContentNodes
+{
+ String PERSISTENCEXML_ROOT_ID = JpaCorePlugin.PLUGIN_ID + ".persistencexml.Root";
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/JavaClassRefTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/JavaClassRefTranslator.java
new file mode 100644
index 0000000000..075774a9c3
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/JavaClassRefTranslator.java
@@ -0,0 +1,33 @@
+package org.eclipse.jpt.core.internal.content.persistence.resource;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.content.persistence.PersistencePackage;
+import org.eclipse.jst.j2ee.internal.model.translator.common.JavaClassTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class JavaClassRefTranslator extends Translator
+{
+ private static Translator[] children;
+
+
+ public JavaClassRefTranslator(String domNameAndPath, EStructuralFeature feature, int style) {
+ super(domNameAndPath, feature, style);
+ }
+
+ public JavaClassRefTranslator(String domNameAndPath, EStructuralFeature feature) {
+ super(domNameAndPath, feature);
+ }
+
+ public Translator[] getChildren(Object target, int versionID) {
+ if (children == null) {
+ children = createChildren();
+ }
+ return children;
+ }
+
+ private static Translator[] createChildren() {
+ return new Translator[] {
+ new JavaClassTranslator(TEXT_ATTRIBUTE_VALUE, PersistencePackage.eINSTANCE.getJavaClassRef_JavaClass())
+ };
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/MappingFileTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/MappingFileTranslator.java
new file mode 100644
index 0000000000..51f4d8974a
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/MappingFileTranslator.java
@@ -0,0 +1,33 @@
+package org.eclipse.jpt.core.internal.content.persistence.resource;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jpt.core.internal.content.persistence.PersistencePackage;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class MappingFileTranslator extends Translator
+{
+ private static Translator[] children;
+
+
+ public MappingFileTranslator(String domNameAndPath, EStructuralFeature feature, int style) {
+ super(domNameAndPath, feature, style);
+ }
+
+ public MappingFileTranslator(String domNameAndPath, EStructuralFeature feature) {
+ super(domNameAndPath, feature);
+ }
+
+
+ public Translator[] getChildren(Object target, int versionID) {
+ if (children == null) {
+ children = createChildren();
+ }
+ return children;
+ }
+
+ private static Translator[] createChildren() {
+ return new Translator[] {
+ new Translator(TEXT_ATTRIBUTE_VALUE, PersistencePackage.eINSTANCE.getMappingFileRef_FileName())
+ };
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/PersistenceResource.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/PersistenceResource.java
new file mode 100644
index 0000000000..4af4eca249
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/PersistenceResource.java
@@ -0,0 +1,75 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.persistence.resource;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.jpt.core.internal.content.persistence.Persistence;
+import org.eclipse.wst.common.internal.emf.resource.Renderer;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+import org.eclipse.wst.common.internal.emf.resource.TranslatorResource;
+import org.eclipse.wst.common.internal.emf.resource.TranslatorResourceImpl;
+
+public class PersistenceResource extends TranslatorResourceImpl
+{
+
+ public PersistenceResource(Renderer aRenderer) {
+ super(aRenderer);
+ }
+
+ public PersistenceResource(URI uri, Renderer aRenderer) {
+ super(uri, aRenderer);
+ }
+
+ /**
+ * @see TranslatorResourceImpl#getDefaultPublicId()
+ */
+ protected String getDefaultPublicId() {
+ return null;
+ // only applicable for DTD-based files
+ }
+
+ /**
+ * @see TranslatorResourceImpl#getDefaultSystemId()
+ */
+ protected String getDefaultSystemId() {
+ return null;
+ // only applicable for DTD-based files
+ }
+
+ /**
+ * @see TranslatorResourceImpl#getDefaultVersionId()
+ */
+ protected int getDefaultVersionID() {
+ return 10;
+ // this seems to be the default version of the spec for this doc
+ // and the id 10 maps to the version 1.0
+ }
+
+ /**
+ * @see TranslatorResource#getDoctype()
+ */
+ public String getDoctype() {
+ return null;
+ // only applicable for DTD-based files
+ }
+
+ /**
+ * @see TranslatorResource#getRootTranslator()
+ */
+ public Translator getRootTranslator() {
+ return PersistenceTranslator.INSTANCE;
+ }
+
+ /**
+ * @see PersistenceResource#getPersistence()
+ */
+ public Persistence getPersistence() {
+ return (Persistence) getRootObject();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/PersistenceTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/PersistenceTranslator.java
new file mode 100644
index 0000000000..c0831aa0bf
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/PersistenceTranslator.java
@@ -0,0 +1,143 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.persistence.resource;
+
+import org.eclipse.jpt.core.internal.content.persistence.PersistencePackage;
+import org.eclipse.wst.common.internal.emf.resource.ConstantAttributeTranslator;
+import org.eclipse.wst.common.internal.emf.resource.GenericTranslator;
+import org.eclipse.wst.common.internal.emf.resource.IDTranslator;
+import org.eclipse.wst.common.internal.emf.resource.RootTranslator;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class PersistenceTranslator extends RootTranslator
+ implements PersistenceXMLMapper
+{
+ public static PersistenceTranslator INSTANCE = new PersistenceTranslator();
+
+ private static Translator[] children;
+
+ private static PersistencePackage PERSISTENCE_PKG = PersistencePackage.eINSTANCE;
+
+
+ public PersistenceTranslator() {
+ super(PERSISTENCE, PERSISTENCE_PKG.eINSTANCE.getPersistence());
+ }
+
+ public Translator[] getChildren(Object target, int versionID) {
+ if (children == null) {
+ children = createChildren();
+ }
+ return children;
+ }
+
+ private static Translator[] createChildren() {
+ return new Translator[] {
+ IDTranslator.INSTANCE,
+ createVersionTranslator(),
+ new ConstantAttributeTranslator(XML_NS, PERSISTENCE_NS_URL),
+ new ConstantAttributeTranslator(XML_NS_XSI, XSI_NS_URL),
+ new ConstantAttributeTranslator(XSI_SCHEMA_LOCATION, PERSISTENCE_NS_URL + ' ' + PERSISTENCE_SCHEMA_LOC_1_0),
+ createPersistenceUnitTranslator()
+ };
+ }
+
+ private static Translator createVersionTranslator() {
+ return new Translator(PERSISTENCE_VERSION, PERSISTENCE_PKG.getPersistence_Version(), DOM_ATTRIBUTE);
+ }
+
+ private static Translator createPersistenceUnitTranslator() {
+ GenericTranslator translator = new GenericTranslator(PERSISTENCE_UNIT, PERSISTENCE_PKG.getPersistence_PersistenceUnits());
+ translator.setChildren(
+ new Translator[] {
+ IDTranslator.INSTANCE,
+ createPersistenceUnitNameTranslator(),
+ createTransactionTypeTranslator(),
+ createPersistenceUnitDescriptionTranslator(),
+ createPersistenceUnitProviderTranslator(),
+ createJtaDataSourceTranslator(),
+ createNonJtaDataSourceTranslator(),
+ createMappingFileTranslator(),
+ createJarFileTranslator(),
+ createClassTranslator(),
+ createExcludeUnlistedClassesTranslator(),
+ createPropertiesTranslator()
+ }
+ );
+ return translator;
+ }
+
+ private static Translator createPersistenceUnitNameTranslator() {
+ return new Translator(PERSISTENCE_UNIT_NAME, PERSISTENCE_PKG.getPersistenceUnit_Name(), DOM_ATTRIBUTE);
+ }
+
+ private static Translator createTransactionTypeTranslator() {
+ return new TransactionTypeTranslator();
+ }
+
+ private static Translator createPersistenceUnitDescriptionTranslator() {
+ return new Translator(PERSISTENCE_UNIT_DESCRIPTION, PERSISTENCE_PKG.getPersistenceUnit_Description());
+ }
+
+ private static Translator createPersistenceUnitProviderTranslator() {
+ return new Translator(PERSISTENCE_UNIT_PROVIDER, PERSISTENCE_PKG.getPersistenceUnit_Provider(), UNSET_IF_NULL);
+ }
+
+ private static Translator createJtaDataSourceTranslator() {
+ return new Translator(JTA_DATA_SOURCE, PERSISTENCE_PKG.getPersistenceUnit_JtaDataSource());
+ }
+
+ private static Translator createNonJtaDataSourceTranslator() {
+ return new Translator(NON_JTA_DATA_SOURCE, PERSISTENCE_PKG.getPersistenceUnit_NonJtaDataSource());
+ }
+
+ private static Translator createMappingFileTranslator() {
+ return new MappingFileTranslator(MAPPING_FILE, PERSISTENCE_PKG.getPersistenceUnit_MappingFiles());
+ }
+
+ private static Translator createJarFileTranslator() {
+ return new Translator(JAR_FILE, PERSISTENCE_PKG.getPersistenceUnit_JarFiles());
+ }
+
+ private static Translator createClassTranslator() {
+ return new JavaClassRefTranslator(CLASS, PERSISTENCE_PKG.getPersistenceUnit_Classes());
+ }
+
+ private static Translator createExcludeUnlistedClassesTranslator() {
+ return new BooleanTranslator(EXCLUDE_UNLISTED_CLASSES, PERSISTENCE_PKG.getPersistenceUnit_ExcludeUnlistedClasses(), UNSET_IF_NULL);
+ }
+
+ private static Translator createPropertiesTranslator() {
+ GenericTranslator translator = new GenericTranslator(PROPERTIES, PERSISTENCE_PKG.getPersistenceUnit_Properties());
+ translator.setChildren(
+ new Translator[] {
+ createPropertyTranslator()
+ }
+ );
+ return translator;
+ }
+
+ private static Translator createPropertyTranslator() {
+ GenericTranslator translator = new GenericTranslator(PROPERTY, PERSISTENCE_PKG.getProperties_Properties());
+ translator.setChildren(
+ new Translator[] {
+ createPropertyNameTranslator(),
+ createPropertyValueTranslator()
+ }
+ );
+ return translator;
+ }
+
+ private static Translator createPropertyNameTranslator() {
+ return new Translator(PROPERTY_NAME, PERSISTENCE_PKG.getProperty_Name());
+ }
+
+ private static Translator createPropertyValueTranslator() {
+ return new Translator(PROPERTY_VALUE, PERSISTENCE_PKG.getProperty_Value());
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/PersistenceXMLMapper.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/PersistenceXMLMapper.java
new file mode 100644
index 0000000000..e35d5032bb
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/PersistenceXMLMapper.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.persistence.resource;
+
+public interface PersistenceXMLMapper
+{
+ String XML_NS = "xmlns"; //$NON-NLS-1$
+ String XML_NS_XSI = "xmlns:xsi"; //$NON-NLS-1$
+ String XSI_SCHEMA_LOCATION = "xsi:schemaLocation"; //$NON-NLS-1$
+ String XSI_NS_URL = "http://www.w3.org/2001/XMLSchema-instance"; //$NON-NLS-1$
+ String PERSISTENCE_NS_URL = "http://java.sun.com/xml/ns/persistence"; //$NON-NLS-1$
+ String PERSISTENCE_SCHEMA_LOC_1_0 = "http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"; //$NON-NLS-1$
+
+
+ String PERSISTENCE = "persistence"; //$NON-NLS-1$
+ String PERSISTENCE_VERSION = "version"; //$NON-NLS-1$
+ String PERSISTENCE_UNIT = "persistence-unit"; //$NON-NLS-1$
+ String PERSISTENCE_UNIT_NAME = "name"; //$NON-NLS-1$
+ String PERSISTENCE_UNIT_DESCRIPTION = "description"; //$NON-NLS-1$
+ String PERSISTENCE_UNIT_PROVIDER = "provider"; //$NON-NLS-1$
+ String JTA_DATA_SOURCE = "jta-data-source"; //$NON-NLS-1$
+ String NON_JTA_DATA_SOURCE = "non-jta-data-source"; //$NON-NLS-1$
+ String MAPPING_FILE = "mapping-file"; //$NON-NLS-1$
+ String JAR_FILE = "jar-file"; //$NON-NLS-1$
+ String CLASS = "class"; //$NON-NLS-1$
+ String EXCLUDE_UNLISTED_CLASSES = "exclude-unlisted-classes"; //$NON-NLS-1$
+ String PROPERTIES = "properties"; //$NON-NLS-1$
+ String PROPERTY = "property"; //$NON-NLS-1$
+ String PROPERTY_NAME = "name"; //$NON-NLS-1$
+ String PROPERTY_VALUE = "value"; //$NON-NLS-1$
+ String TRANSACTION_TYPE = "transaction-type"; //$NON-NLS-1$
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/PersistenceXmlResourceFactory.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/PersistenceXmlResourceFactory.java
new file mode 100644
index 0000000000..fa5ec9f30c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/PersistenceXmlResourceFactory.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.persistence.resource;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.wst.common.componentcore.internal.impl.WTPResourceFactoryRegistry;
+import org.eclipse.wst.common.internal.emf.resource.Renderer;
+import org.eclipse.wst.common.internal.emf.resource.RendererFactory;
+import org.eclipse.wst.common.internal.emf.resource.TranslatorResource;
+import org.eclipse.wst.common.internal.emf.resource.TranslatorResourceFactory;
+import org.eclipse.wst.xml.core.internal.emf2xml.EMF2DOMSSERendererFactory;
+
+public class PersistenceXmlResourceFactory extends TranslatorResourceFactory
+{
+ public static final String PERSISTENCE_XML_FILE_NAME = "persistence.xml"; //$NON-NLS-1$
+ public static final URI PERSISTENCE_XML_FILE_URI = URI.createURI(PERSISTENCE_XML_FILE_NAME); //$NON-NLS-1$
+
+ /**
+ * Register myself with the Resource.Factory.Registry
+ */
+ public static void registerWith(RendererFactory rendererFactory) {
+ WTPResourceFactoryRegistry.INSTANCE.registerLastFileSegment(PERSISTENCE_XML_FILE_NAME, new PersistenceXmlResourceFactory(rendererFactory));
+ }
+
+ /**
+ * Register myself using the default renderer factory.
+ * @see #registerWith(RendererFactory)
+ */
+ public static void register() {
+ registerWith(EMF2DOMSSERendererFactory.INSTANCE);
+ }
+
+ public static Resource.Factory getRegisteredFactory() {
+ return WTPResourceFactoryRegistry.INSTANCE.getFactory(PERSISTENCE_XML_FILE_URI);
+ }
+
+ public PersistenceXmlResourceFactory(RendererFactory aRendererFactory, boolean listeningForUpdates) {
+ super(aRendererFactory, listeningForUpdates);
+ }
+
+ public PersistenceXmlResourceFactory(RendererFactory aRendererFactory) {
+ super(aRendererFactory);
+ }
+
+ /**
+ * @see TranslatorResourceFactory#createResource(URI, Renderer)
+ */
+ protected TranslatorResource createResource(URI uri, Renderer renderer) {
+ return new PersistenceResource(uri, renderer);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/TransactionTypeTranslator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/TransactionTypeTranslator.java
new file mode 100644
index 0000000000..cc2a3565f9
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/resource/TransactionTypeTranslator.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.content.persistence.resource;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.content.persistence.PersistencePackage;
+import org.eclipse.jpt.core.internal.content.persistence.PersistenceUnitTransactionType;
+import org.eclipse.wst.common.internal.emf.resource.Translator;
+
+public class TransactionTypeTranslator extends Translator
+ implements PersistenceXMLMapper
+{
+ public TransactionTypeTranslator() {
+ super(TRANSACTION_TYPE, PersistencePackage.eINSTANCE.getPersistenceUnit_TransactionType());
+ }
+
+ public Object convertStringToValue(String strValue, EObject owner) {
+ String adjStrValue = strValue;
+ String jtaStrValue = PersistenceUnitTransactionType.JTA.getName();
+ String resourceLocalStrValue = PersistenceUnitTransactionType.RESOURCE_LOCAL.getName();
+
+ if (jtaStrValue.equals(strValue.toUpperCase())) { //$NON-NLS-1$
+ adjStrValue = jtaStrValue;
+ }
+ else if (resourceLocalStrValue.equals(strValue.toUpperCase())) { //$NON-NLS-1$
+ adjStrValue = resourceLocalStrValue;
+ }
+ return super.convertStringToValue(adjStrValue, owner);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/util/PersistenceAdapterFactory.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/util/PersistenceAdapterFactory.java
new file mode 100644
index 0000000000..80b86f7944
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/util/PersistenceAdapterFactory.java
@@ -0,0 +1,384 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.persistence.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.jpt.core.internal.IJpaContentNode;
+import org.eclipse.jpt.core.internal.IJpaEObject;
+import org.eclipse.jpt.core.internal.IJpaRootContentNode;
+import org.eclipse.jpt.core.internal.IJpaSourceObject;
+import org.eclipse.jpt.core.internal.IXmlEObject;
+import org.eclipse.jpt.core.internal.JpaEObject;
+import org.eclipse.jpt.core.internal.XmlEObject;
+import org.eclipse.jpt.core.internal.content.persistence.JavaClassRef;
+import org.eclipse.jpt.core.internal.content.persistence.MappingFileRef;
+import org.eclipse.jpt.core.internal.content.persistence.Persistence;
+import org.eclipse.jpt.core.internal.content.persistence.PersistencePackage;
+import org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit;
+import org.eclipse.jpt.core.internal.content.persistence.PersistenceXmlRootContentNode;
+import org.eclipse.jpt.core.internal.content.persistence.Properties;
+import org.eclipse.jpt.core.internal.content.persistence.Property;
+
+/**
+ * <!-- 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.jpt.core.internal.content.persistence.PersistencePackage
+ * @generated
+ */
+public class PersistenceAdapterFactory extends AdapterFactoryImpl
+{
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static PersistencePackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PersistenceAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = PersistencePackage.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 PersistenceSwitch<Adapter> modelSwitch = new PersistenceSwitch<Adapter>() {
+ @Override
+ public Adapter casePersistenceXmlRootContentNode(PersistenceXmlRootContentNode object) {
+ return createPersistenceXmlRootContentNodeAdapter();
+ }
+
+ @Override
+ public Adapter casePersistence(Persistence object) {
+ return createPersistenceAdapter();
+ }
+
+ @Override
+ public Adapter casePersistenceUnit(PersistenceUnit object) {
+ return createPersistenceUnitAdapter();
+ }
+
+ @Override
+ public Adapter caseMappingFileRef(MappingFileRef object) {
+ return createMappingFileRefAdapter();
+ }
+
+ @Override
+ public Adapter caseJavaClassRef(JavaClassRef object) {
+ return createJavaClassRefAdapter();
+ }
+
+ @Override
+ public Adapter caseProperties(Properties object) {
+ return createPropertiesAdapter();
+ }
+
+ @Override
+ public Adapter caseProperty(Property object) {
+ return createPropertyAdapter();
+ }
+
+ @Override
+ public Adapter caseIJpaEObject(IJpaEObject object) {
+ return createIJpaEObjectAdapter();
+ }
+
+ @Override
+ public Adapter caseJpaEObject(JpaEObject object) {
+ return createJpaEObjectAdapter();
+ }
+
+ @Override
+ public Adapter caseIJpaSourceObject(IJpaSourceObject object) {
+ return createIJpaSourceObjectAdapter();
+ }
+
+ @Override
+ public Adapter caseIXmlEObject(IXmlEObject object) {
+ return createIXmlEObjectAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlEObject(XmlEObject object) {
+ return createXmlEObjectAdapter();
+ }
+
+ @Override
+ public Adapter caseIJpaContentNode(IJpaContentNode object) {
+ return createIJpaContentNodeAdapter();
+ }
+
+ @Override
+ public Adapter caseIJpaRootContentNode(IJpaRootContentNode object) {
+ return createIJpaRootContentNodeAdapter();
+ }
+
+ @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.jpt.core.internal.content.persistence.Persistence <em>Persistence</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.jpt.core.internal.content.persistence.Persistence
+ * @generated
+ */
+ public Adapter createPersistenceAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit <em>Unit</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.jpt.core.internal.content.persistence.PersistenceUnit
+ * @generated
+ */
+ public Adapter createPersistenceUnitAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.persistence.MappingFileRef <em>Mapping File Ref</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.jpt.core.internal.content.persistence.MappingFileRef
+ * @generated
+ */
+ public Adapter createMappingFileRefAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.persistence.JavaClassRef <em>Java Class Ref</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.jpt.core.internal.content.persistence.JavaClassRef
+ * @generated
+ */
+ public Adapter createJavaClassRefAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.persistence.Properties <em>Properties</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.jpt.core.internal.content.persistence.Properties
+ * @generated
+ */
+ public Adapter createPropertiesAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.persistence.Property <em>Property</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.jpt.core.internal.content.persistence.Property
+ * @generated
+ */
+ public Adapter createPropertyAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IJpaEObject <em>IJpa EObject</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.jpt.core.internal.IJpaEObject
+ * @generated
+ */
+ public Adapter createIJpaEObjectAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.JpaEObject <em>Jpa EObject</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.jpt.core.internal.JpaEObject
+ * @generated
+ */
+ public Adapter createJpaEObjectAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IJpaSourceObject <em>IJpa Source Object</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.jpt.core.internal.IJpaSourceObject
+ * @generated
+ */
+ public Adapter createIJpaSourceObjectAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IXmlEObject <em>IXml EObject</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.jpt.core.internal.IXmlEObject
+ * @generated
+ */
+ public Adapter createIXmlEObjectAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.content.persistence.PersistenceXmlRootContentNode <em>Xml Root Content 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.jpt.core.internal.content.persistence.PersistenceXmlRootContentNode
+ * @generated
+ */
+ public Adapter createPersistenceXmlRootContentNodeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.XmlEObject <em>Xml EObject</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.jpt.core.internal.XmlEObject
+ * @generated
+ */
+ public Adapter createXmlEObjectAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IJpaContentNode <em>IJpa Content 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.jpt.core.internal.IJpaContentNode
+ * @generated
+ */
+ public Adapter createIJpaContentNodeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IJpaRootContentNode <em>IJpa Root Content 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.jpt.core.internal.IJpaRootContentNode
+ * @generated
+ */
+ public Adapter createIJpaRootContentNodeAdapter() {
+ 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;
+ }
+} //PersistenceInternalAdapterFactory
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/util/PersistenceSwitch.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/util/PersistenceSwitch.java
new file mode 100644
index 0000000000..c2205a3cf5
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/content/persistence/util/PersistenceSwitch.java
@@ -0,0 +1,455 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.content.persistence.util;
+
+import java.util.List;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.IJpaContentNode;
+import org.eclipse.jpt.core.internal.IJpaEObject;
+import org.eclipse.jpt.core.internal.IJpaRootContentNode;
+import org.eclipse.jpt.core.internal.IJpaSourceObject;
+import org.eclipse.jpt.core.internal.IXmlEObject;
+import org.eclipse.jpt.core.internal.JpaEObject;
+import org.eclipse.jpt.core.internal.XmlEObject;
+import org.eclipse.jpt.core.internal.content.persistence.JavaClassRef;
+import org.eclipse.jpt.core.internal.content.persistence.MappingFileRef;
+import org.eclipse.jpt.core.internal.content.persistence.Persistence;
+import org.eclipse.jpt.core.internal.content.persistence.PersistencePackage;
+import org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit;
+import org.eclipse.jpt.core.internal.content.persistence.PersistenceXmlRootContentNode;
+import org.eclipse.jpt.core.internal.content.persistence.Properties;
+import org.eclipse.jpt.core.internal.content.persistence.Property;
+
+/**
+ * <!-- 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.jpt.core.internal.content.persistence.PersistencePackage
+ * @generated
+ */
+public class PersistenceSwitch<T>
+{
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static PersistencePackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PersistenceSwitch() {
+ if (modelPackage == null) {
+ modelPackage = PersistencePackage.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 T 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 T 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 T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case PersistencePackage.PERSISTENCE_XML_ROOT_CONTENT_NODE : {
+ PersistenceXmlRootContentNode persistenceXmlRootContentNode = (PersistenceXmlRootContentNode) theEObject;
+ T result = casePersistenceXmlRootContentNode(persistenceXmlRootContentNode);
+ if (result == null)
+ result = caseXmlEObject(persistenceXmlRootContentNode);
+ if (result == null)
+ result = caseIJpaRootContentNode(persistenceXmlRootContentNode);
+ if (result == null)
+ result = caseJpaEObject(persistenceXmlRootContentNode);
+ if (result == null)
+ result = caseIXmlEObject(persistenceXmlRootContentNode);
+ if (result == null)
+ result = caseIJpaContentNode(persistenceXmlRootContentNode);
+ if (result == null)
+ result = caseIJpaEObject(persistenceXmlRootContentNode);
+ if (result == null)
+ result = caseIJpaSourceObject(persistenceXmlRootContentNode);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PersistencePackage.PERSISTENCE : {
+ Persistence persistence = (Persistence) theEObject;
+ T result = casePersistence(persistence);
+ if (result == null)
+ result = caseXmlEObject(persistence);
+ if (result == null)
+ result = caseJpaEObject(persistence);
+ if (result == null)
+ result = caseIXmlEObject(persistence);
+ if (result == null)
+ result = caseIJpaEObject(persistence);
+ if (result == null)
+ result = caseIJpaSourceObject(persistence);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PersistencePackage.PERSISTENCE_UNIT : {
+ PersistenceUnit persistenceUnit = (PersistenceUnit) theEObject;
+ T result = casePersistenceUnit(persistenceUnit);
+ if (result == null)
+ result = caseXmlEObject(persistenceUnit);
+ if (result == null)
+ result = caseJpaEObject(persistenceUnit);
+ if (result == null)
+ result = caseIXmlEObject(persistenceUnit);
+ if (result == null)
+ result = caseIJpaEObject(persistenceUnit);
+ if (result == null)
+ result = caseIJpaSourceObject(persistenceUnit);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PersistencePackage.MAPPING_FILE_REF : {
+ MappingFileRef mappingFileRef = (MappingFileRef) theEObject;
+ T result = caseMappingFileRef(mappingFileRef);
+ if (result == null)
+ result = caseXmlEObject(mappingFileRef);
+ if (result == null)
+ result = caseJpaEObject(mappingFileRef);
+ if (result == null)
+ result = caseIXmlEObject(mappingFileRef);
+ if (result == null)
+ result = caseIJpaEObject(mappingFileRef);
+ if (result == null)
+ result = caseIJpaSourceObject(mappingFileRef);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PersistencePackage.JAVA_CLASS_REF : {
+ JavaClassRef javaClassRef = (JavaClassRef) theEObject;
+ T result = caseJavaClassRef(javaClassRef);
+ if (result == null)
+ result = caseXmlEObject(javaClassRef);
+ if (result == null)
+ result = caseJpaEObject(javaClassRef);
+ if (result == null)
+ result = caseIXmlEObject(javaClassRef);
+ if (result == null)
+ result = caseIJpaEObject(javaClassRef);
+ if (result == null)
+ result = caseIJpaSourceObject(javaClassRef);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PersistencePackage.PROPERTIES : {
+ Properties properties = (Properties) theEObject;
+ T result = caseProperties(properties);
+ if (result == null)
+ result = caseXmlEObject(properties);
+ if (result == null)
+ result = caseJpaEObject(properties);
+ if (result == null)
+ result = caseIXmlEObject(properties);
+ if (result == null)
+ result = caseIJpaEObject(properties);
+ if (result == null)
+ result = caseIJpaSourceObject(properties);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case PersistencePackage.PROPERTY : {
+ Property property = (Property) theEObject;
+ T result = caseProperty(property);
+ if (result == null)
+ result = caseXmlEObject(property);
+ if (result == null)
+ result = caseJpaEObject(property);
+ if (result == null)
+ result = caseIXmlEObject(property);
+ if (result == null)
+ result = caseIJpaEObject(property);
+ if (result == null)
+ result = caseIJpaSourceObject(property);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ default :
+ return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Persistence</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 interpretting the object as an instance of '<em>Persistence</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T casePersistence(Persistence object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Unit</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 interpretting the object as an instance of '<em>Unit</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T casePersistenceUnit(PersistenceUnit object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Mapping File Ref</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 interpretting the object as an instance of '<em>Mapping File Ref</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseMappingFileRef(MappingFileRef object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Java Class Ref</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 interpretting the object as an instance of '<em>Java Class Ref</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaClassRef(JavaClassRef object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Properties</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 interpretting the object as an instance of '<em>Properties</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseProperties(Properties object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Property</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 interpretting the object as an instance of '<em>Property</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseProperty(Property object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IJpa EObject</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 interpretting the object as an instance of '<em>IJpa EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIJpaEObject(IJpaEObject object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Jpa EObject</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 interpretting the object as an instance of '<em>Jpa EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJpaEObject(JpaEObject object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IJpa Source Object</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 interpretting the object as an instance of '<em>IJpa Source Object</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIJpaSourceObject(IJpaSourceObject object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IXml EObject</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 interpretting the object as an instance of '<em>IXml EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIXmlEObject(IXmlEObject object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml Root Content 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 interpretting the object as an instance of '<em>Xml Root Content Node</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T casePersistenceXmlRootContentNode(PersistenceXmlRootContentNode object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml EObject</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 interpretting the object as an instance of '<em>Xml EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlEObject(XmlEObject object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IJpa Content 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 interpretting the object as an instance of '<em>IJpa Content Node</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIJpaContentNode(IJpaContentNode object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IJpa Root Content 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 interpretting the object as an instance of '<em>IJpa Root Content Node</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIJpaRootContentNode(IJpaRootContentNode object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting 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 interpretting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ public T defaultCase(EObject object) {
+ return null;
+ }
+} //PersistenceInternalSwitch
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/emfutility/DOMUtilities.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/emfutility/DOMUtilities.java
new file mode 100644
index 0000000000..9250a3e7ee
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/emfutility/DOMUtilities.java
@@ -0,0 +1,14 @@
+package org.eclipse.jpt.core.internal.emfutility;
+
+import org.w3c.dom.Node;
+
+public class DOMUtilities
+ extends org.eclipse.wst.common.internal.emf.utilities.DOMUtilities
+{
+ /**
+ * Get the attribute Node with the specified name
+ */
+ static public Node getChildAttributeNode(Node node, String attributeName) {
+ return node.getAttributes().getNamedItem(attributeName);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/IJpaFacetDataModelProperties.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/IJpaFacetDataModelProperties.java
new file mode 100644
index 0000000000..38e0e83881
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/IJpaFacetDataModelProperties.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.facet;
+
+import org.eclipse.wst.common.frameworks.datamodel.IDataModelProperties;
+
+public interface IJpaFacetDataModelProperties extends IDataModelProperties
+{
+ /**
+ * Required, type String, identifies Jpa Platform
+ */
+ public static final String PLATFORM_ID = "IJpaFacetDataModelProperties.PLATFORM_ID";
+
+ /**
+ * Not required, type String, identifies database connection
+ */
+ public static final String CONNECTION = "IJpaFacetDataModelProperties.CONNECTION";
+
+ /**
+ * Not required, type String, identifies JPA implementation library
+ */
+ public static final String JPA_LIBRARY = "IJpaFacetDataModelProperties.JPA_LIBRARY";
+
+ /**
+ * Required, type boolean, details whether orm.xml should be created
+ */
+ public static final String CREATE_ORM_XML = "IJpaFacetDataModelProperties.CREATE_ORM_XML";
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetDataModelProvider.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetDataModelProvider.java
new file mode 100644
index 0000000000..b0cb12ae48
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetDataModelProvider.java
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.facet;
+
+import java.util.Set;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jpt.core.internal.JpaCoreMessages;
+import org.eclipse.jpt.core.internal.JpaCorePlugin;
+import org.eclipse.jpt.core.internal.platform.generic.GenericPlatform;
+import org.eclipse.jpt.db.internal.ConnectionProfileRepository;
+import org.eclipse.wst.common.componentcore.datamodel.FacetInstallDataModelProvider;
+
+public class JpaFacetDataModelProvider
+ extends FacetInstallDataModelProvider
+ implements IJpaFacetDataModelProperties
+{
+ public JpaFacetDataModelProvider() {
+ super();
+ }
+
+
+ @Override
+ public Set getPropertyNames() {
+ Set propertyNames = super.getPropertyNames();
+ propertyNames.add(PLATFORM_ID);
+ propertyNames.add(CONNECTION);
+ propertyNames.add(JPA_LIBRARY);
+ propertyNames.add(CREATE_ORM_XML);
+ return propertyNames;
+ }
+
+ @Override
+ public Object getDefaultProperty(String propertyName) {
+ if (FACET_ID.equals(propertyName)) {
+ return JpaCorePlugin.FACET_ID;
+ }
+ else if (PLATFORM_ID.equals(propertyName)) {
+ return GenericPlatform.ID;
+ }
+ else if (CONNECTION.equals(propertyName)) {
+ return "";
+ }
+ else if (JPA_LIBRARY.equals(propertyName)) {
+ return "";
+ }
+ else if (CREATE_ORM_XML.equals(propertyName)) {
+ return Boolean.TRUE;
+ }
+ else {
+ return super.getDefaultProperty(propertyName);
+ }
+ }
+
+ @Override
+ public IStatus validate(String name) {
+ if (PLATFORM_ID.equals(name)) {
+ return validatePlatform(getStringProperty(name));
+ }
+ else if (CONNECTION.equals(name)) {
+ return validateConnection(getStringProperty(name));
+ }
+ else if (JPA_LIBRARY.equals(name)) {
+ return validateJpaLibrary(getStringProperty(name));
+ }
+ else {
+ return super.validate(name);
+ }
+ }
+
+ private IStatus validatePlatform(String platformId) {
+ if (platformId == null || platformId.equals("")) {
+ return new Status(IStatus.ERROR, JpaCorePlugin.PLUGIN_ID, JpaCoreMessages.VALIDATE_PLATFORM_NOT_SPECIFIED);
+ }
+ else {
+ return OK_STATUS;
+ }
+ }
+
+ private IStatus validateConnection(String connectionName) {
+ if (connectionName == null || connectionName.equals("") || ! ConnectionProfileRepository.instance().getConnectionWithProfileNamed(connectionName).isConnected()) {
+ return new Status(IStatus.INFO, JpaCorePlugin.PLUGIN_ID, JpaCoreMessages.VALIDATE_CONNECTION_NOT_CONNECTED);
+ }
+ else {
+ return OK_STATUS;
+ }
+ }
+
+ private IStatus validateJpaLibrary(String library) {
+ // TODO
+ return OK_STATUS;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetInstallDelegate.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetInstallDelegate.java
new file mode 100644
index 0000000000..7c932f3200
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetInstallDelegate.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.facet;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+import org.eclipse.wst.common.project.facet.core.IDelegate;
+import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
+
+public class JpaFacetInstallDelegate
+ implements IDelegate, IJpaFacetDataModelProperties
+{
+ public void execute(IProject project, IProjectFacetVersion fv,
+ Object config, IProgressMonitor monitor) throws CoreException {
+
+ if (monitor != null) {
+ monitor.beginTask("", 1); //$NON-NLS-1$
+ }
+
+ // NB: WTP Natures (including the JavaEMFNature)
+ // should already be added as this facet should
+ // always coexist with a module facet.
+
+ IJavaProject javaProject = JavaCore.create(project);
+
+ String jpaLibrary = ((IDataModel) config).getStringProperty(JPA_LIBRARY);
+ if (jpaLibrary != null && ! jpaLibrary.equals("")) {
+ IClasspathEntry[] classpath = javaProject.getRawClasspath();
+ int newLength = classpath.length + 1;
+ IClasspathEntry jpaLibraryEntry =
+ JavaCore.newContainerEntry(
+ new Path(JavaCore.USER_LIBRARY_CONTAINER_ID + "/" + jpaLibrary));
+ IClasspathEntry[] newClasspath = new IClasspathEntry[newLength];
+ System.arraycopy(classpath, 0, newClasspath, 0, newLength - 1);
+ newClasspath[newLength - 1] = jpaLibraryEntry;
+
+ javaProject.setRawClasspath(newClasspath, monitor);
+ }
+
+ if (monitor != null) {
+ monitor.worked(1);
+ }
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetPostInstallDelegate.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetPostInstallDelegate.java
new file mode 100644
index 0000000000..06e253db80
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetPostInstallDelegate.java
@@ -0,0 +1,140 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.facet;
+
+import java.io.IOException;
+import java.util.Iterator;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jem.util.emf.workbench.WorkbenchResourceHelperBase;
+import org.eclipse.jpt.core.internal.JpaCorePlugin;
+import org.eclipse.jpt.core.internal.JpaModelManager;
+import org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal;
+import org.eclipse.jpt.core.internal.content.orm.OrmFactory;
+import org.eclipse.jpt.core.internal.content.orm.OrmXmlResource;
+import org.eclipse.jpt.core.internal.content.persistence.MappingFileRef;
+import org.eclipse.jpt.core.internal.content.persistence.Persistence;
+import org.eclipse.jpt.core.internal.content.persistence.PersistenceFactory;
+import org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit;
+import org.eclipse.jpt.core.internal.content.persistence.resource.PersistenceResource;
+import org.eclipse.jpt.utility.internal.CollectionTools;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+import org.eclipse.wst.common.project.facet.core.IDelegate;
+import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
+
+public class JpaFacetPostInstallDelegate
+ implements IDelegate, IJpaFacetDataModelProperties
+{
+ private final static String ORM_XML_FILE_PATH = "META-INF/orm.xml";
+
+ public void execute(IProject project, IProjectFacetVersion fv,
+ Object config, IProgressMonitor monitor) throws CoreException {
+
+ if (monitor != null) {
+ monitor.beginTask("", 2); //$NON-NLS-1$
+ }
+
+ JpaModelManager.instance().createJpaProject(project);
+ IDataModel dataModel = (IDataModel) config;
+ JpaFacetUtils.setPlatform(project, dataModel.getStringProperty(PLATFORM_ID));
+ JpaFacetUtils.setConnectionName(project, dataModel.getStringProperty(CONNECTION));
+
+ createPersistenceXml(project, dataModel);
+
+ if (dataModel.getBooleanProperty(CREATE_ORM_XML)) {
+ createOrmXml(project, dataModel);
+ }
+
+ if (monitor != null) {
+ monitor.worked(1);
+ }
+
+ JpaModelManager.instance().fillJpaProject(project);
+
+ if (monitor != null) {
+ monitor.worked(2);
+ }
+ }
+
+ private void createPersistenceXml(IProject project, IDataModel dataModel) {
+ String sourceFolder = computeSourceFolder(project);
+
+ URI fileURI = URI.createPlatformResourceURI(sourceFolder + "/META-INF/persistence.xml", false);
+ PersistenceResource resource = (PersistenceResource) getResourceSet(project).createResource(fileURI);
+ Persistence persistence = PersistenceFactory.eINSTANCE.createPersistence();
+ persistence.setVersion("1.0");
+ PersistenceUnit pUnit = PersistenceFactory.eINSTANCE.createPersistenceUnit();
+ pUnit.setName(project.getName());
+
+ if (dataModel.getBooleanProperty(CREATE_ORM_XML)) {
+ MappingFileRef mappingFile = PersistenceFactory.eINSTANCE.createMappingFileRef();
+ mappingFile.setFileName(ORM_XML_FILE_PATH);
+ pUnit.getMappingFiles().add(mappingFile);
+ }
+
+ persistence.getPersistenceUnits().add(pUnit);
+
+ try {
+ resource.getContents().add(persistence);
+ resource.save(null);
+ }
+ catch (IOException e) {
+ JpaCorePlugin.log(e);
+ }
+ }
+
+ private void createOrmXml(IProject project, IDataModel dataModel) {
+ String sourceFolder = computeSourceFolder(project);
+
+ URI fileURI = URI.createPlatformResourceURI(sourceFolder + "/" + ORM_XML_FILE_PATH, false);
+ OrmXmlResource resource = (OrmXmlResource) getResourceSet(project).createResource(fileURI);
+ EntityMappingsInternal entityMappings = OrmFactory.eINSTANCE.createEntityMappingsInternal();
+ entityMappings.setVersion("1.0");
+
+ try {
+ resource.getContents().add(entityMappings);
+ resource.save(null);
+ }
+ catch (IOException e) {
+ JpaCorePlugin.log(e);
+ }
+ }
+
+ private String computeSourceFolder(IProject project) {
+ IJavaProject jproject = JavaCore.create(project);
+ IClasspathEntry[] classpath;
+
+ try {
+ classpath = jproject.getRawClasspath();
+ }
+ catch (JavaModelException jme) {
+ classpath = new IClasspathEntry[0];
+ }
+
+ for (Iterator stream = CollectionTools.iterator(classpath); stream.hasNext(); ) {
+ IClasspathEntry next = (IClasspathEntry) stream.next();
+ if (next.getEntryKind() == IClasspathEntry.CPE_SOURCE) {
+ return next.getPath().toString();
+ }
+ }
+
+ return "/" + project.getName();
+ }
+
+ private ResourceSet getResourceSet(IProject project) {
+ return WorkbenchResourceHelperBase.getResourceSet(project);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetUninstallDelegate.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetUninstallDelegate.java
new file mode 100644
index 0000000000..97ed2bae8e
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetUninstallDelegate.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.facet;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jpt.core.internal.IJpaProject;
+import org.eclipse.jpt.core.internal.JpaModelManager;
+import org.eclipse.wst.common.project.facet.core.IDelegate;
+import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
+
+public class JpaFacetUninstallDelegate
+ implements IDelegate
+{
+ public void execute(IProject project, IProjectFacetVersion fv,
+ Object config, IProgressMonitor monitor) throws CoreException {
+
+ if (monitor != null) {
+ monitor.beginTask("", 1); //$NON-NLS-1$
+ }
+
+ // NB: WTP Natures (including the JavaEMFNature)
+ // should have been added with the module facet
+ // required by this facet.
+
+ // TODO
+ // - remove classpath items?
+ // - remove persistence.xml
+
+ IJpaProject jpaProject = JpaModelManager.instance().getJpaModel().getJpaProject(project);
+ if (jpaProject != null) {
+ JpaModelManager.instance().disposeJpaProject(jpaProject);
+ }
+
+
+ if (monitor != null) {
+ monitor.worked(1);
+ }
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetUtils.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetUtils.java
new file mode 100644
index 0000000000..2ef61d37a5
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/facet/JpaFacetUtils.java
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2007 Oracle. All rights reserved. This program and
+ * the accompanying materials are made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.facet;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ProjectScope;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.QualifiedName;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.IScopeContext;
+import org.eclipse.jpt.core.internal.IJpaCoreConstants;
+import org.eclipse.jpt.core.internal.JpaCorePlugin;
+import org.eclipse.jpt.core.internal.JpaPlatformRegistry;
+import org.eclipse.jpt.core.internal.JpaProject;
+import org.eclipse.jpt.core.internal.platform.generic.GenericPlatform;
+import org.eclipse.jpt.db.internal.ConnectionProfileRepository;
+import org.osgi.service.prefs.BackingStoreException;
+
+public class JpaFacetUtils
+{
+ private static QualifiedName CONNECTION_KEY =
+ new QualifiedName(JpaCorePlugin.PLUGIN_ID, IJpaCoreConstants.DATA_SOURCE_CONNECTION_NAME);
+
+
+ /**
+ * Private constructor - static class only
+ */
+ private JpaFacetUtils() {}
+
+
+ public static String getPlatform(final IProject project) {
+ final IScopeContext context = new ProjectScope(project);
+ final IEclipsePreferences prefs = context.getNode(JpaCorePlugin.PLUGIN_ID);
+
+ String platformId = prefs.get(IJpaCoreConstants.JPA_PLATFORM, null);
+
+ if (platformId == null) {
+ try {
+ setPlatform(project, GenericPlatform.ID);
+ }
+ catch (CoreException ce) {
+ // do nothing. not sure what can be done here.
+ }
+ return GenericPlatform.ID;
+ }
+
+ return platformId;
+ }
+
+ public static void setPlatform(final IProject project, String jpaPlatformId)
+ throws CoreException
+ {
+ final IScopeContext context = new ProjectScope(project);
+ final IEclipsePreferences prefs = context.getNode(JpaCorePlugin.PLUGIN_ID);
+
+ JpaProject jpaProject = (JpaProject) JpaCorePlugin.getJpaProject(project);
+
+ if (jpaProject == null) {
+ throw new IllegalArgumentException(project.getName());
+ }
+
+ if (JpaPlatformRegistry.INSTANCE.getJpaPlatform(jpaPlatformId) == null) {
+ throw new IllegalArgumentException(jpaPlatformId);
+ }
+
+ jpaProject.setPlatform(jpaPlatformId);
+ prefs.put(IJpaCoreConstants.JPA_PLATFORM, jpaPlatformId);
+
+ try {
+ prefs.flush();
+ }
+ catch( BackingStoreException e ) {
+ // TODO: Handle this.
+ }
+ }
+
+ public static String getConnectionName(final IProject project) {
+ try {
+ return project.getPersistentProperty(CONNECTION_KEY);
+ }
+ catch (CoreException ce) {
+ return null;
+ }
+ }
+
+ public static void setConnectionName(final IProject project, String connectionName)
+ throws CoreException
+ {
+ JpaProject jpaProject = (JpaProject) JpaCorePlugin.getJpaProject(project);
+
+ if (jpaProject == null) {
+ throw new IllegalArgumentException(project.getName());
+ }
+
+ if (ConnectionProfileRepository.instance().getConnectionWithProfileNamed(connectionName) == null) {
+ throw new IllegalArgumentException(connectionName);
+ }
+
+ jpaProject.setDataSource(connectionName);
+ project.setPersistentProperty(CONNECTION_KEY, connectionName);
+ }
+
+// public static boolean getUsesContainerImplementation
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ASTNodeTextRange.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ASTNodeTextRange.java
new file mode 100644
index 0000000000..bf15c5a922
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ASTNodeTextRange.java
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.core.internal.ITextRange;
+
+/**
+ * Straightforward implementation of ITextRange that adapts an ASTNode.
+ */
+public class ASTNodeTextRange implements ITextRange {
+ private final ASTNode astNode;
+
+ public ASTNodeTextRange(ASTNode astNode) {
+ super();
+ this.astNode = astNode;
+ }
+
+ public int getLineNumber() {
+ return ((CompilationUnit) this.astNode.getRoot()).getLineNumber(this.getOffset());
+ }
+
+ public int getOffset() {
+ return this.astNode.getStartPosition();
+ }
+
+ public int getLength() {
+ return this.astNode.getLength();
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AbstractAnnotationAdapter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AbstractAnnotationAdapter.java
new file mode 100644
index 0000000000..f2eb31f7cd
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AbstractAnnotationAdapter.java
@@ -0,0 +1,169 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.Annotation;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.utility.internal.StringTools;
+
+/**
+ * Adapt a member and a declaration annotation adapter.
+ */
+public abstract class AbstractAnnotationAdapter implements AnnotationAdapter {
+ private final Member member;
+ private final DeclarationAnnotationAdapter daa;
+
+
+ // ********** constructor **********
+
+ public AbstractAnnotationAdapter(Member member, DeclarationAnnotationAdapter daa) {
+ super();
+ this.member = member;
+ this.daa = daa;
+ }
+
+
+ // ********** AnnotationAdapter implementation **********
+
+ public Annotation getAnnotation() {
+ return this.daa.getAnnotation(this.member.modifiedDeclaration());
+ }
+
+ public Annotation getAnnotation(CompilationUnit astRoot) {
+ return this.daa.getAnnotation(this.member.modifiedDeclaration(astRoot));
+ }
+
+ public void newMarkerAnnotation() {
+ this.edit(this.buildNewMarkerAnnotationEditor());
+ }
+
+ public void newSingleMemberAnnotation() {
+ this.edit(this.buildNewSingleMemberAnnotationEditor());
+ }
+
+ public void newNormalAnnotation() {
+ this.edit(this.buildNewNormalAnnotationEditor());
+ }
+
+ public void removeAnnotation() {
+ this.edit(this.buildRemoveAnnotationEditor());
+ }
+
+ public ASTNode astNode() {
+ return this.daa.astNode(this.member.modifiedDeclaration());
+ }
+
+ public ASTNode astNode(CompilationUnit astRoot) {
+ return this.daa.astNode(this.member.modifiedDeclaration(astRoot));
+ }
+
+ @Override
+ public String toString() {
+ return StringTools.buildToStringFor(this, this.daa);
+ }
+
+
+ // ********** internal methods **********
+
+ protected void edit(Member.Editor editor) {
+ this.member.edit(editor);
+ }
+
+
+ // ********** factory methods **********
+
+ protected Member.Editor buildNewMarkerAnnotationEditor() {
+ return new NewMarkerAnnotationEditor(this.daa);
+ }
+
+ protected Member.Editor buildNewSingleMemberAnnotationEditor() {
+ return new NewSingleMemberAnnotationEditor(this.daa);
+ }
+
+ protected Member.Editor buildNewNormalAnnotationEditor() {
+ return new NewNormalAnnotationEditor(this.daa);
+ }
+
+ protected Member.Editor buildRemoveAnnotationEditor() {
+ return new RemoveAnnotationEditor(this.daa);
+ }
+
+
+ // ********** member classes **********
+
+ protected static class NewMarkerAnnotationEditor implements Member.Editor {
+ private final DeclarationAnnotationAdapter daa;
+
+ NewMarkerAnnotationEditor(DeclarationAnnotationAdapter daa) {
+ super();
+ this.daa = daa;
+ }
+ public void edit(ModifiedDeclaration declaration) {
+ this.daa.newMarkerAnnotation(declaration);
+ }
+ @Override
+ public String toString() {
+ return StringTools.buildToStringFor(this);
+ }
+ }
+
+
+ protected static class NewSingleMemberAnnotationEditor implements Member.Editor {
+ private final DeclarationAnnotationAdapter daa;
+
+ NewSingleMemberAnnotationEditor(DeclarationAnnotationAdapter daa) {
+ super();
+ this.daa = daa;
+ }
+ public void edit(ModifiedDeclaration declaration) {
+ this.daa.newSingleMemberAnnotation(declaration);
+ }
+ @Override
+ public String toString() {
+ return StringTools.buildToStringFor(this);
+ }
+ }
+
+
+ protected static class NewNormalAnnotationEditor implements Member.Editor {
+ private final DeclarationAnnotationAdapter daa;
+
+ NewNormalAnnotationEditor(DeclarationAnnotationAdapter daa) {
+ super();
+ this.daa = daa;
+ }
+ public void edit(ModifiedDeclaration declaration) {
+ this.daa.newNormalAnnotation(declaration);
+ }
+ @Override
+ public String toString() {
+ return StringTools.buildToStringFor(this);
+ }
+ }
+
+
+ protected static class RemoveAnnotationEditor implements Member.Editor {
+ private final DeclarationAnnotationAdapter daa;
+
+ RemoveAnnotationEditor(DeclarationAnnotationAdapter daa) {
+ super();
+ this.daa = daa;
+ }
+ public void edit(ModifiedDeclaration declaration) {
+ this.daa.removeAnnotation(declaration);
+ }
+ @Override
+ public String toString() {
+ return StringTools.buildToStringFor(this);
+ }
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AbstractDeclarationAnnotationAdapter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AbstractDeclarationAnnotationAdapter.java
new file mode 100644
index 0000000000..9fd0f25d9e
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AbstractDeclarationAnnotationAdapter.java
@@ -0,0 +1,148 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import java.util.List;
+import org.eclipse.jdt.core.dom.AST;
+import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.Annotation;
+import org.eclipse.jdt.core.dom.MarkerAnnotation;
+import org.eclipse.jdt.core.dom.MemberValuePair;
+import org.eclipse.jdt.core.dom.NormalAnnotation;
+import org.eclipse.jdt.core.dom.SingleMemberAnnotation;
+import org.eclipse.jpt.utility.internal.StringTools;
+
+/**
+ *
+ */
+public abstract class AbstractDeclarationAnnotationAdapter implements DeclarationAnnotationAdapter {
+ private final String annotationName;
+
+
+ // ********** constructors **********
+
+ protected AbstractDeclarationAnnotationAdapter(String annotationName) {
+ super();
+ this.annotationName = annotationName;
+ }
+
+
+ // ********** DeclarationAnnotationAdapter implementation **********
+
+ public MarkerAnnotation newMarkerAnnotation(ModifiedDeclaration declaration) {
+ MarkerAnnotation annotation = this.newMarkerAnnotation(declaration.getAST());
+ this.addAnnotationAndImport(declaration, annotation);
+ return annotation;
+ }
+
+ public SingleMemberAnnotation newSingleMemberAnnotation(ModifiedDeclaration declaration) {
+ SingleMemberAnnotation annotation = this.newSingleMemberAnnotation(declaration.getAST());
+ this.addAnnotationAndImport(declaration, annotation);
+ return annotation;
+ }
+
+ public NormalAnnotation newNormalAnnotation(ModifiedDeclaration declaration) {
+ NormalAnnotation annotation = this.newNormalAnnotation(declaration.getAST());
+ this.addAnnotationAndImport(declaration, annotation);
+ return annotation;
+ }
+
+ /**
+ * Add the appropriate import statement, then shorten the annotation's
+ * name before adding it to the declaration.
+ */
+ protected void addAnnotationAndImport(ModifiedDeclaration declaration, Annotation annotation) {
+ declaration.addImport(this.annotationName);
+ annotation.setTypeName(declaration.getAST().newName(this.shortAnnotationName()));
+ this.addAnnotation(declaration, annotation);
+ }
+
+ @Override
+ public String toString() {
+ return StringTools.buildToStringFor(this, this.annotationName);
+ }
+
+
+ // ********** abstract methods **********
+
+ public abstract Annotation getAnnotation(ModifiedDeclaration declaration);
+
+ public abstract void removeAnnotation(ModifiedDeclaration declaration);
+
+ public abstract ASTNode astNode(ModifiedDeclaration declaration);
+
+ /**
+ * Add the specified annotation to the specified declaration,
+ * replacing the original annotation if present.
+ */
+ protected abstract void addAnnotation(ModifiedDeclaration declaration, Annotation annotation);
+
+
+ // ********** public methods **********
+
+ public String getAnnotationName() {
+ return this.annotationName;
+ }
+
+
+ // ********** helper methods **********
+
+ protected boolean nameMatches(ModifiedDeclaration declaration, Annotation annotation) {
+ return this.nameMatches(declaration, annotation, this.annotationName);
+ }
+
+ protected boolean nameMatches(ModifiedDeclaration declaration, Annotation annotation, String name) {
+ return declaration.annotationIsNamed(annotation, name);
+ }
+
+ protected MarkerAnnotation newMarkerAnnotation(AST ast) {
+ return this.newMarkerAnnotation(ast, this.annotationName);
+ }
+
+ protected MarkerAnnotation newMarkerAnnotation(AST ast, String name) {
+ MarkerAnnotation annotation = ast.newMarkerAnnotation();
+ annotation.setTypeName(ast.newName(name));
+ return annotation;
+ }
+
+ protected SingleMemberAnnotation newSingleMemberAnnotation(AST ast) {
+ return this.newSingleMemberAnnotation(ast, this.annotationName);
+ }
+
+ protected SingleMemberAnnotation newSingleMemberAnnotation(AST ast, String name) {
+ SingleMemberAnnotation annotation = ast.newSingleMemberAnnotation();
+ annotation.setTypeName(ast.newName(name));
+ return annotation;
+ }
+
+ protected NormalAnnotation newNormalAnnotation(AST ast) {
+ return this.newNormalAnnotation(ast, this.annotationName);
+ }
+
+ protected NormalAnnotation newNormalAnnotation(AST ast, String name) {
+ NormalAnnotation annotation = ast.newNormalAnnotation();
+ annotation.setTypeName(ast.newName(name));
+ return annotation;
+ }
+
+ protected String shortAnnotationName() {
+ return this.shortName(this.annotationName);
+ }
+
+ protected String shortName(String name) {
+ return name.substring(name.lastIndexOf('.') + 1);
+ }
+
+ @SuppressWarnings("unchecked")
+ protected List<MemberValuePair> values(NormalAnnotation na) {
+ return na.values();
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AbstractExpressionConverter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AbstractExpressionConverter.java
new file mode 100644
index 0000000000..7e910480a2
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AbstractExpressionConverter.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import org.eclipse.jdt.core.dom.AST;
+import org.eclipse.jdt.core.dom.Expression;
+import org.eclipse.jpt.utility.internal.StringTools;
+
+/**
+ * Gather together just the tiniest bit of common behavior.
+ */
+public abstract class AbstractExpressionConverter implements ExpressionConverter {
+
+ protected AbstractExpressionConverter() {
+ super();
+ }
+
+ public Expression convert(Object o, AST ast) {
+ return (o == null) ? null : this.convert_(o, ast);
+ }
+
+ /**
+ * The specified object is not null.
+ * @see #convert(Object, AST)
+ */
+ protected abstract Expression convert_(Object o, AST ast);
+
+ public Object convert(Expression expression) {
+ return (expression == null) ? null : this.convert_(expression);
+ }
+
+ /**
+ * The specified expression is not null.
+ * @see #convert(Expression)
+ */
+ protected abstract Object convert_(Expression expression);
+
+ @Override
+ public String toString() {
+ return StringTools.buildToStringFor(this);
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AbstractNestedDeclarationAnnotationAdapter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AbstractNestedDeclarationAnnotationAdapter.java
new file mode 100644
index 0000000000..b9cdce5a9f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AbstractNestedDeclarationAnnotationAdapter.java
@@ -0,0 +1,420 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.jdt.core.dom.AST;
+import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.Annotation;
+import org.eclipse.jdt.core.dom.Expression;
+import org.eclipse.jdt.core.dom.MarkerAnnotation;
+import org.eclipse.jdt.core.dom.MemberValuePair;
+import org.eclipse.jdt.core.dom.NormalAnnotation;
+import org.eclipse.jdt.core.dom.SingleMemberAnnotation;
+
+/**
+ * Pull together some of the behavior common to NestedDeclarationAnnotationAdapter
+ * and IndexedNestedDeclarationAnnotationAdapter
+ */
+public abstract class AbstractNestedDeclarationAnnotationAdapter extends AbstractDeclarationAnnotationAdapter {
+ private final DeclarationAnnotationAdapter outerAnnotationAdapter;
+ private final String elementName;
+ private final boolean removeOuterAnnotationWhenEmpty;
+
+
+ // ********** constructors **********
+
+ /**
+ * default element name is "value";
+ * default behavior is to remove the outer annotation when it is empty
+ */
+ protected AbstractNestedDeclarationAnnotationAdapter(DeclarationAnnotationAdapter outerAnnotationAdapter, String annotationName) {
+ this(outerAnnotationAdapter, "value", annotationName);
+ }
+
+ /**
+ * default behavior is to remove the outer annotation when it is empty
+ */
+ protected AbstractNestedDeclarationAnnotationAdapter(DeclarationAnnotationAdapter outerAnnotationAdapter, String elementName, String annotationName) {
+ this(outerAnnotationAdapter, elementName, annotationName, true);
+ }
+
+ protected AbstractNestedDeclarationAnnotationAdapter(DeclarationAnnotationAdapter outerAnnotationAdapter, String elementName, String annotationName, boolean removeOuterAnnotationWhenEmpty) {
+ super(annotationName);
+ this.outerAnnotationAdapter = outerAnnotationAdapter;
+ this.elementName = elementName;
+ this.removeOuterAnnotationWhenEmpty = removeOuterAnnotationWhenEmpty;
+ }
+
+
+ // ********** AbstractDeclarationAnnotationAdapter implementation **********
+
+ @Override
+ public Annotation getAnnotation(ModifiedDeclaration declaration) {
+ Annotation outer = this.outerAnnotationAdapter.getAnnotation(declaration);
+ if (outer == null) {
+ return null;
+ }
+ Expression value = this.elementValue(outer);
+ if (value == null) {
+ return null;
+ }
+ Annotation inner = this.getAnnotation(value);
+ if (inner == null) {
+ return null;
+ }
+ // return the annotation only if it has a matching name(?)
+ return this.nameMatches(declaration, inner) ? inner : null;
+ }
+
+ @Override
+ public void removeAnnotation(ModifiedDeclaration declaration) {
+ Annotation outer = this.outerAnnotationAdapter.getAnnotation(declaration);
+ if (outer == null) {
+ return;
+ }
+ Expression value = this.elementValue(outer);
+ if (value == null) {
+ return;
+ }
+ // hack to allow short-circuit when the value is an array initializer
+ if (this.removeAnnotation(declaration, outer, value)) {
+ return;
+ }
+ Annotation inner = this.annotationValue(value);
+ if (inner == null) {
+ return;
+ }
+ // remove the annotation only if it has a matching name(?)
+ if (this.nameMatches(declaration, inner)) {
+ this.removeElementAndNormalize(declaration, outer);
+ }
+ }
+
+ @Override
+ public ASTNode astNode(ModifiedDeclaration declaration) {
+ // if the annotation is missing, return the outer annotation's node
+ Annotation annotation = this.getAnnotation(declaration);
+ return (annotation != null) ? annotation : this.outerAnnotationAdapter.astNode(declaration);
+ }
+
+ @Override
+ protected void addAnnotation(ModifiedDeclaration declaration, Annotation inner) {
+ Annotation outer = this.outerAnnotationAdapter.getAnnotation(declaration);
+ if (outer == null) {
+ this.buildNewOuterAnnotation(declaration, inner);
+ } else if (outer.isMarkerAnnotation()) {
+ this.modifyAnnotation(declaration, (MarkerAnnotation) outer, inner);
+ } else if (outer.isSingleMemberAnnotation()) {
+ this.modifyAnnotation(declaration, (SingleMemberAnnotation) outer, inner);
+ } else if (outer.isNormalAnnotation()) {
+ this.modifyAnnotation(declaration, (NormalAnnotation) outer, inner);
+ } else {
+ throw new IllegalStateException("unknown annotation type: " + outer);
+ }
+ }
+
+
+ // ********** abstract methods **********
+
+ /**
+ * Return an annotation extracted from the specified expression,
+ * which is the value of the adapter's element.
+ */
+ protected abstract Annotation getAnnotation(Expression value);
+
+ /**
+ * Remove the annotation from the specified expression,
+ * which is the value of the adapter's element.
+ * Return whether the removal was successful.
+ */
+ protected abstract boolean removeAnnotation(ModifiedDeclaration declaration, Annotation outer, Expression value);
+
+ /**
+ * Set the value of the specified outer annotation to the
+ * specified inner annotation.
+ */
+ protected abstract void modifyAnnotationValue(SingleMemberAnnotation outer, Annotation inner);
+
+ /**
+ * Set the value of the specified member value pair to the
+ * specified inner annotation.
+ */
+ protected abstract void modifyMemberValuePair(MemberValuePair pair, Annotation inner);
+
+
+ // ********** public methods **********
+
+ public DeclarationAnnotationAdapter getOuterAnnotationAdapter() {
+ return this.outerAnnotationAdapter;
+ }
+
+ public String getElementName() {
+ return this.elementName;
+ }
+
+
+ // ********** internal methods **********
+
+ /**
+ * If the specified expression is an annotation, cast it to an annotation;
+ * otherwise return null.
+ */
+ protected Annotation annotationValue(Expression expression) {
+ switch (expression.getNodeType()) {
+ case ASTNode.NORMAL_ANNOTATION:
+ case ASTNode.SINGLE_MEMBER_ANNOTATION:
+ case ASTNode.MARKER_ANNOTATION:
+ return (Annotation) expression;
+ default:
+ return null;
+ }
+ }
+
+ /**
+ * Remove the *first* annotation element with the specified name
+ * from the specified annotation, converting the annotation as appropriate.
+ */
+ protected void removeElementAndNormalize(ModifiedDeclaration declaration, Annotation outer) {
+ if (outer.isNormalAnnotation()) {
+ this.removeElementAndNormalize(declaration, (NormalAnnotation) outer);
+ } else if (outer.isSingleMemberAnnotation()) {
+ this.removeElementAndNormalize(declaration, (SingleMemberAnnotation) outer);
+ } else if (outer.isMarkerAnnotation()) {
+ this.removeElementAndNormalize(declaration, (MarkerAnnotation) outer);
+ } else {
+ throw new IllegalArgumentException("unknown annotation type: " + outer);
+ }
+ }
+
+ /**
+ * Remove the *first* annotation element with the adapter's element name
+ * from the specified annotation. Convert the annotation to
+ * a marker annotation or single member annotation if appropriate.
+ * <pre>
+ * &#64;Outer(name="Fred", foo=&#64;Inner) => &#64;Outer(name="Fred")
+ * &#64;Outer(foo=&#64;Inner) => &#64;Outer
+ * </pre>
+ */
+ protected void removeElementAndNormalize(ModifiedDeclaration declaration, NormalAnnotation outer) {
+ this.removeElement(outer);
+ this.normalizeAnnotation(declaration, outer);
+ }
+
+ /**
+ * Remove from the specified annotation the element with
+ * the adapter's element name.
+ */
+ protected void removeElement(NormalAnnotation annotation) {
+ for (Iterator<MemberValuePair> stream = this.values(annotation).iterator(); stream.hasNext(); ) {
+ MemberValuePair pair = stream.next();
+ if (pair.getName().getFullyQualifiedName().equals(this.elementName)) {
+ stream.remove();
+ break;
+ }
+ }
+ }
+
+ /**
+ * Convert the specified normal annotation to a marker annotation or
+ * single member annotation if appropriate.
+ */
+ protected void normalizeAnnotation(ModifiedDeclaration declaration, NormalAnnotation outer) {
+ List<MemberValuePair> values = this.values(outer);
+ switch (values.size()) {
+ case 0:
+ // if the elements are all gone, remove the annotation or convert it to a marker annotation
+ if (this.removeOuterAnnotationWhenEmpty) {
+ this.outerAnnotationAdapter.removeAnnotation(declaration);
+ } else {
+ // convert the annotation to a marker annotation
+ this.outerAnnotationAdapter.newMarkerAnnotation(declaration);
+ }
+ break;
+ case 1:
+ MemberValuePair pair = values.get(0);
+ if (pair.getName().getFullyQualifiedName().equals("value")) {
+ // if the last remaining element is 'value', convert the annotation to a single member annotation
+ Expression vv = pair.getValue();
+ vv = (Expression) ASTNode.copySubtree(vv.getAST(), vv);
+ this.outerAnnotationAdapter.newSingleMemberAnnotation(declaration).setValue(vv);
+ }
+ break;
+ default:
+ // do nothing
+ break;
+ }
+ }
+
+ /**
+ * Convert the specified single member annotation to a marker annotation
+ * if the adapter's element name is "value".
+ */
+ protected void removeElementAndNormalize(ModifiedDeclaration declaration, SingleMemberAnnotation outer) {
+ if (this.elementName.equals("value")) {
+ if (this.removeOuterAnnotationWhenEmpty) {
+ this.outerAnnotationAdapter.removeAnnotation(declaration);
+ } else {
+ // convert the annotation to a marker annotation
+ this.outerAnnotationAdapter.newMarkerAnnotation(declaration);
+ }
+ }
+ }
+
+ protected void removeElementAndNormalize(ModifiedDeclaration declaration, MarkerAnnotation outer) {
+ if (this.removeOuterAnnotationWhenEmpty) {
+ this.outerAnnotationAdapter.removeAnnotation(declaration);
+ }
+ }
+
+ /**
+ * Return the value of the *first* annotation element
+ * with the adapter's element name.
+ * Return null if the annotation has no such element.
+ * (An element name of "value" will return the value of a single
+ * member annotation.)
+ */
+ protected Expression elementValue(Annotation annotation) {
+ if (annotation.isNormalAnnotation()) {
+ return this.elementValue((NormalAnnotation) annotation);
+ }
+ if (annotation.isSingleMemberAnnotation()) {
+ return this.elementValue((SingleMemberAnnotation) annotation);
+ }
+ return null;
+ }
+
+ protected Expression elementValue(NormalAnnotation annotation) {
+ MemberValuePair pair = this.memberValuePair(annotation);
+ return (pair == null) ? null : pair.getValue();
+ }
+
+ /**
+ * If the adapter's element name is "value", return the value of the
+ * annotation, otherwise return null.
+ */
+ protected Expression elementValue(SingleMemberAnnotation annotation) {
+ return this.elementName.equals("value") ? annotation.getValue() : null;
+ }
+
+ /**
+ * Return the *first* member value pair for the adapter's element name.
+ * Return null if the specified annotation has no such element.
+ */
+ protected MemberValuePair memberValuePair(NormalAnnotation annotation) {
+ for (MemberValuePair pair : this.values(annotation)) {
+ if (pair.getName().getFullyQualifiedName().equals(this.elementName)) {
+ return pair;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Build a new outer annotation and add the specified
+ * inner annotation to it:
+ * <pre>
+ * &#64;Outer(&#64;Inner)
+ * </pre>
+ * or
+ * <pre>
+ * &#64;Outer(foo=&#64;Inner)
+ * </pre>
+ */
+ protected void buildNewOuterAnnotation(ModifiedDeclaration declaration, Annotation inner) {
+ if (this.elementName.equals("value")) {
+ this.outerAnnotationAdapter.newSingleMemberAnnotation(declaration).setValue(this.buildNewInnerExpression(inner));
+ } else {
+ List<MemberValuePair> values = this.values(this.outerAnnotationAdapter.newNormalAnnotation(declaration));
+ values.add(this.newMemberValuePair(this.buildNewInnerExpression(inner)));
+ }
+ }
+
+ /**
+ * Build an expression to be added to a new outer annotation
+ * for the specified inner annotation.
+ */
+ protected abstract Expression buildNewInnerExpression(Annotation inner);
+
+ /**
+ * Build a new member value pair with the specified name and value.
+ */
+ protected MemberValuePair newMemberValuePair(String name, Expression value) {
+ AST ast = value.getAST();
+ MemberValuePair pair = ast.newMemberValuePair();
+ pair.setName(ast.newSimpleName(name));
+ pair.setValue(value);
+ return pair;
+ }
+
+ /**
+ * Build a new member value pair with the adapter's element name
+ * and the specified inner annotation.
+ */
+ protected MemberValuePair newMemberValuePair(Expression value) {
+ return this.newMemberValuePair(this.elementName, value);
+ }
+
+ /**
+ * Add the specified inner annotation to the marker annotation.
+ */
+ protected void modifyAnnotation(ModifiedDeclaration declaration, MarkerAnnotation outer, Annotation inner) {
+ this.buildNewOuterAnnotation(declaration, inner);
+ }
+
+ /**
+ * Add the specified inner annotation to the single member annotation.
+ */
+ protected void modifyAnnotation(ModifiedDeclaration declaration, SingleMemberAnnotation outer, Annotation inner) {
+ if (this.elementName.equals("value")) {
+ this.modifyAnnotationValue(outer, inner);
+ } else {
+ this.modifyAnnotationNonValue(declaration, outer, inner);
+ }
+ }
+
+ /**
+ * Add the specified inner annotation to the single member annotation,
+ * converting it to a normal annotation:
+ * <pre>
+ * &#64;Outer("lorem ipsum") => &#64;Outer(value="lorem ipsum", foo=&#64;Inner)
+ * </pre>
+ */
+ protected void modifyAnnotationNonValue(ModifiedDeclaration declaration, SingleMemberAnnotation outer, Annotation inner) {
+ Expression vv = outer.getValue();
+ vv = (Expression) ASTNode.copySubtree(vv.getAST(), vv);
+ NormalAnnotation newOuter = this.outerAnnotationAdapter.newNormalAnnotation(declaration);
+ List<MemberValuePair> values = this.values(newOuter);
+ values.add(this.newMemberValuePair("value", vv));
+ values.add(this.newMemberValuePair(this.buildNewInnerExpression(inner)));
+ }
+
+ /**
+ * Add the specified inner annotation to the normal annotation:
+ * <pre>
+ * &#64;Outer(bar="lorem ipsum") => &#64;Outer(bar="lorem ipsum", foo=&#64;Inner)
+ * </pre>
+ * or
+ * <pre>
+ * &#64;Outer(foo=&#64;Inner("lorem ipsum")) => &#64;Outer(foo=&#64;Inner)
+ * </pre>
+ */
+ protected void modifyAnnotation(ModifiedDeclaration declaration, NormalAnnotation outer, Annotation inner) {
+ MemberValuePair pair = this.memberValuePair(outer);
+ if (pair == null) {
+ List<MemberValuePair> values = this.values(outer);
+ values.add(this.newMemberValuePair(inner));
+ } else {
+ this.modifyMemberValuePair(pair, inner);
+ }
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AnnotationAdapter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AnnotationAdapter.java
new file mode 100644
index 0000000000..8190d36122
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AnnotationAdapter.java
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.Annotation;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+
+/**
+ * Adapt a Java annotation with a simple-to-use interface.
+ */
+public interface AnnotationAdapter {
+
+ /**
+ * Return the value of the adapter's annotation.
+ * If the compilation unit is available, #getAnnotation(CompilationUnit)
+ * might be more performant.
+ * @see #getAnnotation(org.eclipse.jdt.core.dom.CompilationUnit)
+ */
+ Annotation getAnnotation();
+
+ /**
+ * Given the specified compilation unit, return the value of the
+ * adapter's annotation.
+ * @see #getAnnotation()
+ */
+ Annotation getAnnotation(CompilationUnit astRoot);
+
+ /**
+ * Build a new marker annotation, replacing the original annotation if present.
+ */
+ void newMarkerAnnotation();
+
+ /**
+ * Build a new single member annotation, replacing the original annotation if present.
+ */
+ void newSingleMemberAnnotation();
+
+ /**
+ * Build a new normal annotation, replacing the original annotation if present.
+ */
+ void newNormalAnnotation();
+
+ /**
+ * Remove the annotation.
+ */
+ void removeAnnotation();
+
+ /**
+ * Return the AST node corresponding to the annotation.
+ * If the annotation is missing, return the annotation's parent's node.
+ * If the compilation unit is available, #astNode(CompilationUnit)
+ * might be more performant.
+ * @see #astNode(org.eclipse.jdt.core.dom.CompilationUnit)
+ */
+ ASTNode astNode();
+
+ /**
+ * Return the AST node corresponding to the annotation.
+ * If the annotation is missing, return the annotation's parent node.
+ * @see #astNode()
+ */
+ ASTNode astNode(CompilationUnit astRoot);
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AnnotationEditFormatter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AnnotationEditFormatter.java
new file mode 100644
index 0000000000..cb3d0fdcb2
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AnnotationEditFormatter.java
@@ -0,0 +1,155 @@
+/*******************************************************************************
+ * Copyright (c) 2005 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.text.edits.InsertEdit;
+import org.eclipse.text.edits.MalformedTreeException;
+import org.eclipse.text.edits.MultiTextEdit;
+import org.eclipse.text.edits.ReplaceEdit;
+import org.eclipse.text.edits.TextEdit;
+
+/**
+ * This will apply TextEdit's to a doc and do some extra work to cleanup some
+ * of the nasty Eclipse annotation formatting (e.g. arrays of annotations).
+ */
+public class AnnotationEditFormatter {
+
+ protected IDocument doc;
+
+ public AnnotationEditFormatter(IDocument doc) {
+ this.doc = doc;
+ }
+
+ /**
+ * Apply the edits to our doc doing extra formatting as needed.
+ */
+ public void apply(TextEdit edits) throws MalformedTreeException,
+ BadLocationException {
+ edits.apply(doc, TextEdit.UPDATE_REGIONS);
+ MultiTextEdit extra = new MultiTextEdit();
+ TextEdit[] all = edits.getChildren();
+ for (int i = 0; i < all.length; i++) {
+ if (all[i] instanceof InsertEdit) {
+ InsertEdit a = (InsertEdit)all[i];
+ if (i + 1 < all.length && all[i + 1] instanceof InsertEdit) {
+ InsertEdit b = (InsertEdit)all[i + 1];
+ if (" ".equals(b.getText()) && isAnnotation(a)) {
+ // Annotation being inserted before something on the same line.
+ // Insert a newline and indent after the annotation.
+ ReplaceEdit re = new ReplaceEdit(b.getOffset(), 1,
+ getNewlineAndIdent(b.getOffset()));
+ extra.addChild(re);
+ i++;
+ continue;
+ }
+ if (", ".equals(a.getText()) && isAnnotation(b)) {
+ // Annotation being inserted in an array initializer on the
+ // same line as the previous array element.
+ // Insert a newline and indent before the annotation.
+ ReplaceEdit re = new ReplaceEdit(a.getOffset() + 1, 1,
+ getNewlineAndIdent(a.getOffset()));
+ extra.addChild(re);
+ i++;
+ continue;
+ }
+ }
+ if (formatArrayInit(a, extra)) {
+ continue;
+ }
+ }
+ }
+ extra.apply(doc, 0);
+ }
+
+ /**
+ * Create a String containing a line delimeter and indenting characters
+ * matching the indent level of the line containing character offset.
+ */
+ protected String getNewlineAndIdent(int offset) throws BadLocationException {
+ int line = doc.getLineOfOffset(offset);
+ offset = doc.getLineOffset(line);
+ StringBuffer s = new StringBuffer();
+ s.append(doc.getLineDelimiter(line));
+ for (;;) {
+ char c = doc.getChar(offset++);
+ if (c == ' ' || c == '\t') {
+ s.append(c);
+ } else {
+ break;
+ }
+ }
+ return s.toString();
+ }
+
+ /**
+ * Is e inserting an annotation?
+ */
+ protected boolean isAnnotation(InsertEdit e) {
+ String s = e.getText();
+ return s.length() > 1 && s.charAt(0) == '@';
+ }
+
+ /**
+ * If a is inserting an annotation containing an array of annotations as
+ * its value then format them nicely and return true.
+ */
+ protected boolean formatArrayInit(InsertEdit a, MultiTextEdit extra)
+ throws BadLocationException {
+ String s = a.getText();
+ int n = s.length();
+ if (n < 6 || s.charAt(0) != '@') {
+ return false;
+ }
+ int pos;
+ for (pos = 1; pos < n && s.charAt(pos++) != '('; ) {/* just move 'pos' */}
+ if (pos == n) {
+ return false;
+ }
+ for (; pos < n; ) {
+ char c = s.charAt(pos++);
+ if (c == '{') {
+ break;
+ }
+ if (c != ' ') {
+ return false;
+ }
+ }
+ if (pos == n) {
+ return false;
+ }
+ // now look for @ not inside parenthesis and put in
+ // line delimeter and indent string before each
+ int offset = a.getOffset();
+ String indent = null;
+ int parenCount = 0;
+ for (; pos < n; pos++) {
+ char c = s.charAt(pos);
+ switch (c) {
+ case '(':
+ ++parenCount;
+ break;
+ case ')':
+ --parenCount;
+ break;
+ case '@':
+ if (parenCount == 0) {
+ if (indent == null) {
+ indent = getNewlineAndIdent(offset) + "\t";
+ }
+ InsertEdit ie = new InsertEdit(offset + pos, indent);
+ extra.addChild(ie);
+ }
+ }
+ }
+ return indent != null;
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AnnotationElementAdapter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AnnotationElementAdapter.java
new file mode 100644
index 0000000000..7b9d67a41d
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AnnotationElementAdapter.java
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jdt.core.dom.Expression;
+
+/**
+ * Adapt a Java annotation element with a simple-to-use interface.
+ */
+public interface AnnotationElementAdapter {
+
+ /**
+ * Return the value of the adapter's annotation element.
+ * Return null if the element is not present.
+ * If the compilation unit is available, #getValue(CompilationUnit)
+ * might be more performant.
+ * @see #getValue(org.eclipse.jdt.core.dom.CompilationUnit)
+ */
+ Object getValue();
+
+ /**
+ * Given the specified compilation unit, return the value of the
+ * adapter's annotation element.
+ * Return null if the element is not present.
+ * @see #getValue()
+ */
+ Object getValue(CompilationUnit astRoot);
+
+ /**
+ * Set the value of the adapter's annotation element.
+ * Setting the value of the element to null will cause
+ * the element to be removed from its annotation.
+ */
+ void setValue(Object value);
+
+ /**
+ * Return the expression value of the adapter's annotation element.
+ * Return null if the element is not present.
+ * If the compilation unit is available, #expression(CompilationUnit)
+ * might be more performant.
+ * @see #expression(org.eclipse.jdt.core.dom.CompilationUnit)
+ */
+ Expression expression();
+
+ /**
+ * Given the specified compilation unit, return the expression value of the
+ * adapter's annotation element.
+ * Return null if the element is not present.
+ * @see #expression()
+ */
+ Expression expression(CompilationUnit astRoot);
+
+ /**
+ * Return the AST node corresponding to the element.
+ * If the element is missing, return the annotation's node.
+ * If the compilation unit is available, #astNode(CompilationUnit)
+ * might be more performant.
+ * @see #astNode(org.eclipse.jdt.core.dom.CompilationUnit)
+ */
+ ASTNode astNode();
+
+ /**
+ * Return the AST node corresponding to the element.
+ * If the element is missing, return the annotation's node.
+ * @see #astNode()
+ */
+ ASTNode astNode(CompilationUnit astRoot);
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/Attribute.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/Attribute.java
new file mode 100644
index 0000000000..bb46008f8e
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/Attribute.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import org.eclipse.jdt.core.IMember;
+
+/**
+ * Combine behavior common to FieldAttribute and MethodAttribute.
+ */
+public abstract class Attribute extends Member {
+
+ Attribute(IMember jdtMember) {
+ super(jdtMember);
+ }
+
+ public boolean isField() {
+ return false;
+ }
+
+ public boolean isMethod() {
+ return false;
+ }
+
+ public abstract String attributeName();
+
+ public abstract String typeSignature();
+
+ public boolean isPrimitiveType() {
+ return JDTTools.signatureIsPrimitive(this.typeSignature());
+ }
+
+ public boolean typeIs(String fullyQualifiedTypeName) {
+ return fullyQualifiedTypeName.equals(this.resolvedTypeName());
+ }
+
+ /**
+ * Resolve the attribute.
+ * Return the fully-qualified type name or return null if it cannot be
+ * resolved unambiguously.
+ */
+ public String resolvedTypeName() {
+ return JDTTools.resolveSignature(this.typeSignature(), this.getJdtMember().getDeclaringType());
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AttributeAnnotationTools.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AttributeAnnotationTools.java
new file mode 100644
index 0000000000..4dbfbbb1c4
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/AttributeAnnotationTools.java
@@ -0,0 +1,218 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import java.util.ArrayList;
+import org.eclipse.jdt.core.Flags;
+import org.eclipse.jdt.core.IField;
+import org.eclipse.jdt.core.IMethod;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaModelException;
+
+public class AttributeAnnotationTools {
+
+ /**
+ * Return the fields in the specified type that may be "persisted".
+ */
+ public static IField[] persistableFields(IType type) {
+ try {
+ return persistableFields_(type);
+ } catch(JavaModelException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ private static IField[] persistableFields_(IType type) throws JavaModelException {
+ ArrayList<IField> persistableFields = new ArrayList<IField>();
+ for (IField field : type.getFields()) {
+ if (fieldIsPersistable(field)) {
+ persistableFields.add(field);
+ }
+ }
+ return persistableFields.toArray(new IField[persistableFields.size()]);
+ }
+
+ /**
+ * Return whether the specified field may be "persisted".
+ */
+ public static boolean fieldIsPersistable(IField field) {
+ try {
+ return fieldIsPersistable_(field);
+ } catch(JavaModelException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ private static boolean fieldIsPersistable_(IField field) throws JavaModelException {
+ int flags = field.getFlags();
+ if (Flags.isStatic(flags)) {
+ return false;
+ }
+ if (Flags.isPublic(flags)) {
+ return false;
+ }
+ if (Flags.isTransient(flags)) {
+ return false;
+ }
+ if (Flags.isFinal(flags)) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Return the "getter" methods in the specified type that
+ * represent properties that may be "persisted".
+ */
+ public static IMethod[] persistablePropertyGetters(IType type) {
+ try {
+ return persistablePropertyGetters_(type);
+ } catch(JavaModelException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ private static IMethod[] persistablePropertyGetters_(IType type) throws JavaModelException {
+ ArrayList<IMethod> persistableMethods = new ArrayList<IMethod>();
+ for (IMethod method : type.getMethods()) {
+ if (methodIsPersistablePropertyGetter(method)) {
+ persistableMethods.add(method);
+ }
+ }
+ return persistableMethods.toArray(new IMethod[persistableMethods.size()]);
+ }
+
+ /**
+ * Return whether the specified method is a "getter" method that
+ * represents a property that may be "persisted".
+ */
+ public static boolean methodIsPersistablePropertyGetter(IMethod method) {
+ try {
+ return methodIsPersistablePropertyGetter_(method);
+ } catch(JavaModelException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ private static boolean methodIsPersistablePropertyGetter_(IMethod method) throws JavaModelException {
+ if (methodHasBadModifiers(method)) {
+ return false;
+ }
+
+ // TODO need to "resolve" return type
+ String returnType = method.getReturnType();
+ if (returnType.equals("V")) { // 'void'
+ return false;
+ }
+ if (method.getNumberOfParameters() != 0) {
+ return false;
+ }
+
+ String methodName = method.getElementName();
+ int beginIndex = 0;
+ boolean booleanGetter = false;
+ if (methodName.startsWith("is")) {
+ if (returnType.equals("Z")) { // 'boolean'
+ beginIndex = 2;
+ } else {
+ return false;
+ }
+ } else {
+ if (methodName.startsWith("get")) {
+ beginIndex = 3;
+ if (returnType.equals("Z")) { // 'boolean'
+ booleanGetter = true;
+ }
+ } else {
+ return false;
+ }
+ }
+
+ String capitalizedAttributeName = method.getElementName().substring(beginIndex);
+ // if the type has both methods:
+ // boolean isProperty()
+ // boolean getProperty()
+ // then #isProperty() takes precedence and we ignore #getProperty()
+ // (see the JavaBeans spec 1.01)
+ if (booleanGetter) {
+ IMethod isMethod = method.getDeclaringType().getMethod("is" + capitalizedAttributeName, new String[0]);
+ if (isMethod.exists() && isMethod.getReturnType().equals("Z")) { // 'boolean'
+ return false;
+ }
+ }
+ IMethod setMethod = method.getDeclaringType().getMethod("set" + capitalizedAttributeName, new String[] {returnType});
+ if ( ! setMethod.exists()) {
+ return false;
+ }
+ if (methodHasBadModifiers(setMethod)) {
+ return false;
+ }
+ if ( ! setMethod.getReturnType().equals("V")) { // 'void'
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Return whether the specified method's modifiers prevent it
+ * from being a getter or setter for a "persistent" property.
+ */
+ private static boolean methodHasBadModifiers(IMethod method) throws JavaModelException {
+ if (method.isConstructor()) {
+ return true;
+ }
+ int flags = method.getFlags();
+ if (Flags.isStatic(flags)) {
+ return true;
+ }
+ if (Flags.isFinal(flags)) {
+ return true;
+ }
+ if ( ! (Flags.isPublic(flags) || Flags.isProtected(flags))) {
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Return whether the type may be "persisted", ie marked as Entity, MappedSuperclass, Embeddable
+ */
+ public static boolean typeIsPersistable(IType type) {
+ try {
+ return typeIsPersistable_(type);
+ } catch(JavaModelException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ private static boolean typeIsPersistable_(IType type) throws JavaModelException {
+ if (type.isInterface()) {
+ return false;
+ }
+ if (type.isAnnotation()) {
+ return false;
+ }
+ if (type.isEnum()) {
+ return false;
+ }
+ if (type.isLocal()) {
+ return false;
+ }
+ if (type.isAnonymous()) {
+ return false;
+ }
+ int flags = type.getFlags();
+ if (Flags.isFinal(flags)) {
+ return false;
+ }
+ return true;
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/BooleanAnnotationAdapter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/BooleanAnnotationAdapter.java
new file mode 100644
index 0000000000..6a1eb8894b
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/BooleanAnnotationAdapter.java
@@ -0,0 +1,77 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.Annotation;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+
+/**
+ * Adapt a "boolean" Java annotation with a simple-to-use interface.
+ */
+public interface BooleanAnnotationAdapter {
+
+ /**
+ * Return the "boolean" value of the adapter's annotation.
+ * Return true if the annotation is present; otherwise return false.
+ * If the compilation unit is available, #getValue(CompilationUnit)
+ * might be more performant.
+ * @see #getValue(org.eclipse.jdt.core.dom.CompilationUnit)
+ */
+ boolean getValue();
+
+ /**
+ * Given the specified compilation unit, return the "boolean" value of the
+ * adapter's annotation.
+ * Return true if the annotation is present; otherwise return false.
+ * @see #getValue()
+ */
+ boolean getValue(CompilationUnit astRoot);
+
+ /**
+ * Set the "boolean" value of the adapter's annotation.
+ * Setting the value to true will cause the annotation to be added
+ * to its declaration; setting it to false will cause the annotation
+ * to be removed.
+ */
+ void setValue(boolean value);
+
+ /**
+ * Return the value of the adapter's annotation.
+ * If the compilation unit is available, #getAnnotation(CompilationUnit)
+ * might be more performant.
+ * @see #getAnnotation(org.eclipse.jdt.core.dom.CompilationUnit)
+ */
+ Annotation getAnnotation();
+
+ /**
+ * Given the specified compilation unit, return the value of the
+ * adapter's annotation.
+ * @see #getAnnotation()
+ */
+ Annotation getAnnotation(CompilationUnit astRoot);
+
+ /**
+ * Return the AST node corresponding to the annotation.
+ * If the annotation is missing, return the annotation's parent's node.
+ * If the compilation unit is available, #astNode(CompilationUnit)
+ * might be more performant.
+ * @see #astNode(org.eclipse.jdt.core.dom.CompilationUnit)
+ */
+ ASTNode astNode();
+
+ /**
+ * Return the AST node corresponding to the annotation.
+ * If the annotation is missing, return the annotation's parent node.
+ * @see #astNode()
+ */
+ ASTNode astNode(CompilationUnit astRoot);
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/BooleanStringExpressionConverter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/BooleanStringExpressionConverter.java
new file mode 100644
index 0000000000..e68c78f8da
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/BooleanStringExpressionConverter.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import org.eclipse.jdt.core.dom.AST;
+import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.BooleanLiteral;
+import org.eclipse.jdt.core.dom.Expression;
+
+/**
+ * Convert an expression to/from a string representation of a boolean
+ * (e.g. "true").
+ */
+public final class BooleanStringExpressionConverter extends AbstractExpressionConverter {
+ private static ExpressionConverter INSTANCE;
+
+ /**
+ * Return the singleton.
+ */
+ public static ExpressionConverter instance() {
+ if (INSTANCE == null) {
+ INSTANCE = new BooleanStringExpressionConverter();
+ }
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private BooleanStringExpressionConverter() {
+ super();
+ }
+
+ @Override
+ protected Expression convert_(Object o, AST ast) {
+ return ast.newBooleanLiteral(Boolean.valueOf((String) o).booleanValue());
+ }
+
+ @Override
+ protected Object convert_(Expression expression) {
+ return (expression.getNodeType() == ASTNode.BOOLEAN_LITERAL) ?
+ Boolean.toString(((BooleanLiteral) expression).booleanValue())
+ :
+ null;
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/CharacterStringExpressionConverter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/CharacterStringExpressionConverter.java
new file mode 100644
index 0000000000..cb3a57e172
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/CharacterStringExpressionConverter.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import org.eclipse.jdt.core.dom.AST;
+import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.CharacterLiteral;
+import org.eclipse.jdt.core.dom.Expression;
+
+/**
+ * Convert an expression to/from a string representation of a character
+ * (e.g. "A").
+ */
+public final class CharacterStringExpressionConverter extends AbstractExpressionConverter {
+ private static ExpressionConverter INSTANCE;
+
+ /**
+ * Return the singleton.
+ */
+ public static ExpressionConverter instance() {
+ if (INSTANCE == null) {
+ INSTANCE = new CharacterStringExpressionConverter();
+ }
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private CharacterStringExpressionConverter() {
+ super();
+ }
+
+ @Override
+ protected Expression convert_(Object o, AST ast) {
+ CharacterLiteral characterLiteral = ast.newCharacterLiteral();
+ characterLiteral.setCharValue(((String) o).charAt(0));
+ return characterLiteral;
+ }
+
+ @Override
+ protected Object convert_(Expression expression) {
+ return (expression.getNodeType() == ASTNode.CHARACTER_LITERAL) ?
+ Character.toString(((CharacterLiteral) expression).charValue())
+ :
+ null;
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/CombinationIndexedDeclarationAnnotationAdapter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/CombinationIndexedDeclarationAnnotationAdapter.java
new file mode 100644
index 0000000000..21b1bce7bb
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/CombinationIndexedDeclarationAnnotationAdapter.java
@@ -0,0 +1,490 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import java.util.List;
+import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.Annotation;
+import org.eclipse.jdt.core.dom.Expression;
+import org.eclipse.jdt.core.dom.MarkerAnnotation;
+import org.eclipse.jdt.core.dom.MemberValuePair;
+import org.eclipse.jdt.core.dom.NormalAnnotation;
+import org.eclipse.jdt.core.dom.SingleMemberAnnotation;
+import org.eclipse.jpt.utility.internal.StringTools;
+
+/**
+ * Manipulate an annotation that either occurs stand-alone, e.g.
+ * <pre>
+ * &#64;Inner("zero")
+ * private int id;
+ * </pre>
+ *
+ * or is embedded in an element array within another annotation, e.g.
+ * <pre>
+ * &#64;Outer(foo={&#64;Inner("zero"), &#64;Inner("one"), &#64;Inner("two")})
+ * private int id;
+ *
+ * annotationName = "Inner"
+ * containerAnnotationName = "Outer"
+ * elementName = "foo"
+ * index = 0-2
+ * </pre>
+ *
+ * This is a useful pattern because a declaration cannot have more
+ * than one annotation of the same type, and allowing the stand-alone
+ * configuration reduces clutter.
+ * <br>
+ * NB: This configuration only makes sense for "top-level" annotations, as
+ * opposed to "nested" annotations. This is because annotation elements
+ * can only be declared with a type of a single annotation and annotations
+ * cannot be part of an inheritance hierarchy.
+ * For example, the following configurations cannot *both* be supported:
+ * <pre>
+ * &#64;Foo(bar=&#64;Outer(...))
+ * private int id;
+ *
+ * &#64;Foo(bar=&#64;Inner(...)) // not allowed
+ * private int id;
+ * </pre>
+ *
+ * NB: Behavior is undefined when both the stand-alone and the nested
+ * configurations annotate the same declaration, e.g.
+ * <pre>
+ * // undefined behavior
+ * &#64;Inner("zero")
+ * &#64;Outer(foo={&#64;Inner("zero"), &#64;Inner("one"), &#64;Inner("two")})
+ * private int id;
+ * </pre>
+ */
+public class CombinationIndexedDeclarationAnnotationAdapter
+ implements IndexedDeclarationAnnotationAdapter
+{
+
+ /**
+ * this adapter is used when the annotation is "stand-alone":
+ * <pre>
+ * &#64;Inner("zero")
+ * </pre>
+ * and is only used when the index is 0 or 1
+ */
+ private final SimpleDeclarationAnnotationAdapter standAloneAnnotationAdapter;
+
+ /**
+ * this adapter is used when the annotation is "nested":
+ * <pre>
+ * &#64;Outer(foo={&#64;Inner("zero"), &#64;Inner("one")})
+ * </pre>
+ */
+ private final NestedIndexedDeclarationAnnotationAdapter nestedAnnotationAdapter;
+
+ /**
+ * this adapter is for the "nested" annotation at the zero index;
+ * and is only used when the index is 1
+ */
+ private final NestedIndexedDeclarationAnnotationAdapter zeroNestedAnnotationAdapter;
+
+
+ // ********** constructors **********
+
+ /**
+ * default element name is "value"
+ * <pre>
+ * &#64;Inner("zero")
+ * &#64;Outer({&#64;Inner("zero"), &#64;Inner("one")})
+ * </pre>
+ */
+ public CombinationIndexedDeclarationAnnotationAdapter(String annotationName, String containerAnnotationName, int index) {
+ this(annotationName, containerAnnotationName, "value", index);
+ }
+
+ public CombinationIndexedDeclarationAnnotationAdapter(String annotationName, String containerAnnotationName, String elementName, int index) {
+ this(new SimpleDeclarationAnnotationAdapter(annotationName), new SimpleDeclarationAnnotationAdapter(containerAnnotationName), elementName, index, annotationName);
+ }
+
+ /**
+ * default element name is "value"
+ */
+ public CombinationIndexedDeclarationAnnotationAdapter(
+ SimpleDeclarationAnnotationAdapter standAloneAnnotationAdapter,
+ SimpleDeclarationAnnotationAdapter containerAnnotationAdapter,
+ int index,
+ String nestedAnnotationName
+ ) {
+ this(standAloneAnnotationAdapter, containerAnnotationAdapter, "value", index, nestedAnnotationName);
+ }
+
+ public CombinationIndexedDeclarationAnnotationAdapter(
+ SimpleDeclarationAnnotationAdapter standAloneAnnotationAdapter,
+ SimpleDeclarationAnnotationAdapter containerAnnotationAdapter,
+ String elementName,
+ int index,
+ String nestedAnnotationName
+ ) {
+ super();
+ this.standAloneAnnotationAdapter = standAloneAnnotationAdapter;
+ this.nestedAnnotationAdapter = new NestedIndexedDeclarationAnnotationAdapter(containerAnnotationAdapter, elementName, index, nestedAnnotationName);
+ this.zeroNestedAnnotationAdapter = new NestedIndexedDeclarationAnnotationAdapter(containerAnnotationAdapter, elementName, 0, nestedAnnotationName);
+ }
+
+
+ // ********** DeclarationAnnotationAdapter implementation **********
+
+ public Annotation getAnnotation(ModifiedDeclaration declaration) {
+ if (this.getIndex() == 0) {
+ // check for the stand-alone annotation
+ Annotation standAloneAnnotation = this.standAloneAnnotation(declaration);
+ if (standAloneAnnotation != null) {
+ return standAloneAnnotation;
+ }
+ }
+ return this.nestedAnnotation(declaration);
+ }
+
+ /**
+ * <pre>
+ * [none] => &#64;Inner
+ * or
+ * &#64;Inner("lorem ipsum") => &#64;Inner
+ * or
+ * &#64;Inner(text="lorem ipsum") => &#64;Inner
+ * or
+ * &#64;Outer(foo={&#64;Inner, &#64;Inner}) => &#64;Outer(foo={&#64;Inner, &#64;Inner, &#64;Inner})
+ * or
+ * &#64;Outer(foo=&#64;Inner) => &#64;Outer(foo={&#64;Inner, &#64;Inner})
+ * or
+ * &#64;Inner => &#64;Outer(foo={&#64;Inner, &#64;Inner})
+ * etc.
+ * </pre>
+ */
+ public MarkerAnnotation newMarkerAnnotation(ModifiedDeclaration declaration) {
+ return (MarkerAnnotation) this.newAnnotation(MARKER_ANNOTATION_FACTORY, declaration);
+ }
+
+ public SingleMemberAnnotation newSingleMemberAnnotation(ModifiedDeclaration declaration) {
+ return (SingleMemberAnnotation) this.newAnnotation(SINGLE_MEMBER_ANNOTATION_FACTORY, declaration);
+ }
+
+ public NormalAnnotation newNormalAnnotation(ModifiedDeclaration declaration) {
+ return (NormalAnnotation) this.newAnnotation(NORMAL_ANNOTATION_FACTORY, declaration);
+ }
+
+ public void removeAnnotation(ModifiedDeclaration declaration) {
+ if (this.getIndex() == 0) {
+ // check for the stand-alone annotation
+ if (this.standAloneAnnotationIsPresent(declaration)) {
+ this.removeStandAloneAnnotation(declaration);
+ return;
+ }
+ }
+ this.removeNestedAnnotation(declaration);
+ if (this.nestedElementCanBeConvertedToStandAlone(declaration)) {
+ this.convertLastElementAnnotationToStandAloneAnnotation(declaration);
+ }
+ }
+
+ public ASTNode astNode(ModifiedDeclaration declaration) {
+ // if the annotation is missing, delegate to the nested annotation adapter
+ Annotation annotation = this.getAnnotation(declaration);
+ return (annotation != null) ? annotation : this.nestedAnnotationAdapter.astNode(declaration);
+ }
+
+ @Override
+ public String toString() {
+ return StringTools.buildToStringFor(this, this.annotationName());
+ }
+
+
+ // ********** IndexedDeclarationAnnotationAdapter implementation **********
+
+ public int getIndex() {
+ return this.nestedAnnotationAdapter.getIndex();
+ }
+
+ public void moveAnnotation(int newIndex, ModifiedDeclaration declaration) {
+ int oldIndex = this.getIndex();
+ if (newIndex == oldIndex) {
+ return;
+ }
+
+ Annotation standAloneAnnotation = this.standAloneAnnotation(declaration);
+ if (standAloneAnnotation == null) {
+ this.moveNestedAnnotation(newIndex, declaration);
+ if (this.nestedElementCanBeConvertedToStandAlone(declaration)) {
+ this.convertLastElementAnnotationToStandAloneAnnotation(declaration);
+ }
+ } else {
+ if ((oldIndex == 0) && (newIndex == 1)) {
+ // this is one of two situations where we transition from standalone to container
+ this.moveStandAloneAnnotationToContainerAnnotation(standAloneAnnotation, declaration);
+ this.moveNestedAnnotation(newIndex, declaration);
+ } else if (newIndex == 0) {
+ // we are moving a 'null' entry on top of the standalone, so remove it
+ this.removeStandAloneAnnotation(declaration);
+ } else {
+ throw new IllegalStateException("old index = " + oldIndex + "; new index = " + newIndex);
+ }
+ }
+ }
+
+
+ // ********** internal methods **********
+
+ /**
+ * build the appropriate new annotation,
+ * which may require moving the 0th annotation from "stand-alone" to "nested"
+ */
+ private Annotation newAnnotation(AnnotationFactory annotationFactory, ModifiedDeclaration declaration) {
+ if (this.getIndex() == 0) {
+ return this.newZeroAnnotation(annotationFactory, declaration);
+ }
+ if (this.zeroNestedAnnotationIsPresent(declaration)) {
+ // manipulate the container annotation - ignore the stand-alone annotation(?)
+ // @Outer(foo=@Inner("zero")) => @Outer(foo={@Inner("zero"), @Inner})
+ // or
+ // @Outer(foo={@Inner("zero"), @Inner("one")}) => @Outer(foo={@Inner("zero"), @Inner})
+ return annotationFactory.newAnnotation(this.nestedAnnotationAdapter, declaration);
+ }
+
+ // this is one of two situations where we transition from standalone to container
+ this.moveStandAloneAnnotationToContainerAnnotation(declaration);
+ // once the stand-alone annotation is moved to index=0, build the new annotation at index=1
+ return annotationFactory.newAnnotation(this.nestedAnnotationAdapter, declaration);
+ }
+
+ /**
+ * the index is 0 - build the appropriate new annotation,
+ * which may be either "stand-alone" or "nested"
+ */
+ private Annotation newZeroAnnotation(AnnotationFactory annotationFactory, ModifiedDeclaration declaration) {
+ if (this.standAloneAnnotationIsPresent(declaration)) {
+ // replace the stand-alone annotation - ignore the container annotation(?)
+ // @Inner(text="lorem ipsum") => @Inner
+ return annotationFactory.newAnnotation(this.standAloneAnnotationAdapter, declaration);
+ }
+ if (this.containerAnnotationIsPresent(declaration)) {
+ // manipulate the container annotation
+ // @Outer(foo=@Inner(text="lorem ipsum")) => @Outer(foo=@Inner)
+ return annotationFactory.newAnnotation(this.nestedAnnotationAdapter, declaration);
+ }
+ // neither annotation is present - add a new stand-alone annotation
+ return annotationFactory.newAnnotation(this.standAloneAnnotationAdapter, declaration);
+ }
+
+ /**
+ * move the stand-alone annotation to the container annotation at index=0
+ */
+ private void moveStandAloneAnnotationToContainerAnnotation(ModifiedDeclaration declaration) {
+ Annotation standAloneAnnotation = this.standAloneAnnotation(declaration);
+ if (standAloneAnnotation == null) {
+ throw new IllegalStateException("the stand-alone annotation is missing");
+ }
+ this.moveStandAloneAnnotationToContainerAnnotation(standAloneAnnotation, declaration);
+ }
+
+ /**
+ * move the specified, non-null, stand-alone annotation to
+ * the container annotation at index=0
+ */
+ private void moveStandAloneAnnotationToContainerAnnotation(Annotation standAloneAnnotation, ModifiedDeclaration declaration) {
+ if (standAloneAnnotation.isMarkerAnnotation()) {
+ this.zeroNestedAnnotationAdapter.newMarkerAnnotation(declaration);
+ } else if (standAloneAnnotation.isSingleMemberAnnotation()) {
+ Expression vv = ((SingleMemberAnnotation) standAloneAnnotation).getValue();
+ vv = (Expression) ASTNode.copySubtree(vv.getAST(), vv);
+ this.zeroNestedAnnotationAdapter.newSingleMemberAnnotation(declaration).setValue(vv);
+ } else if (standAloneAnnotation.isNormalAnnotation()) {
+ NormalAnnotation newNA = this.zeroNestedAnnotationAdapter.newNormalAnnotation(declaration);
+ List<MemberValuePair> values = this.values(newNA);
+ for (MemberValuePair pair : this.values((NormalAnnotation) standAloneAnnotation)) {
+ values.add((MemberValuePair) ASTNode.copySubtree(pair.getAST(), pair));
+ }
+ } else {
+ throw new IllegalStateException("unknown annotation type: " + standAloneAnnotation);
+ }
+ this.removeStandAloneAnnotation(declaration);
+ }
+
+ /**
+ * return whether the "nested" annotation container has been reduced to
+ * a single element (and the array initializer is converted to just
+ * the single remaining element) and can be further converted to the
+ * "stand-alone" annotation:
+ * <pre>
+ * &#64;Outer(foo={&#64;Inner("zero"), &#64;Inner("one")}) =>
+ * &#64;Outer(foo=&#64;Inner("zero")) =>
+ * &#64;Inner("zero")
+ * </pre>
+ */
+ private boolean nestedElementCanBeConvertedToStandAlone(ModifiedDeclaration declaration) {
+ Annotation containerAnnotation = this.containerAnnotation(declaration);
+ if (containerAnnotation == null) {
+ return false;
+ }
+ if (containerAnnotation.isMarkerAnnotation()) {
+ return false;
+ }
+ if (containerAnnotation.isSingleMemberAnnotation()) {
+ if (this.elementName().equals("value")) {
+ return (((SingleMemberAnnotation) containerAnnotation).getValue().getNodeType() != ASTNode.ARRAY_INITIALIZER)
+ && (this.zeroNestedAnnotationAdapter.getAnnotation(declaration) != null);
+ }
+ return false;
+ }
+ if (containerAnnotation.isNormalAnnotation()) {
+ NormalAnnotation na = (NormalAnnotation) containerAnnotation;
+ if (na.values().size() == 0) {
+ return false; // there are no elements present
+ }
+ if (na.values().size() != 1) {
+ return false; // there are other elements present - leave them all alone
+ }
+ MemberValuePair pair = (MemberValuePair) na.values().get(0);
+ if (this.elementName().equals(pair.getName().getFullyQualifiedName())) {
+ return (pair.getValue().getNodeType() != ASTNode.ARRAY_INITIALIZER)
+ && (this.zeroNestedAnnotationAdapter.getAnnotation(declaration) != null);
+ }
+ return false;
+ }
+ throw new IllegalStateException("unknown annotation type: " + containerAnnotation);
+ }
+
+ /**
+ * move the annotation in the container annotation at index=0
+ * to the stand-alone annotation
+ */
+ private void convertLastElementAnnotationToStandAloneAnnotation(ModifiedDeclaration declaration) {
+ Annotation last = this.zeroNestedAnnotationAdapter.getAnnotation(declaration);
+ if (last == null) {
+ throw new IllegalStateException("the last nested annotation is missing");
+ } else if (last.isMarkerAnnotation()) {
+ this.newStandAloneMarkerAnnotation(declaration);
+ } else if (last.isSingleMemberAnnotation()) {
+ Expression vv = ((SingleMemberAnnotation) last).getValue();
+ vv = (Expression) ASTNode.copySubtree(vv.getAST(), vv);
+ this.newStandAloneSingleMemberAnnotation(declaration).setValue(vv);
+ } else if (last.isNormalAnnotation()) {
+ NormalAnnotation newNA = this.newStandAloneNormalAnnotation(declaration);
+ List<MemberValuePair> values = this.values(newNA);
+ for (MemberValuePair pair : this.values((NormalAnnotation) last)) {
+ values.add((MemberValuePair) ASTNode.copySubtree(pair.getAST(), pair));
+ }
+ } else {
+ throw new IllegalStateException("unknown annotation type: " + last);
+ }
+ this.zeroNestedAnnotationAdapter.removeAnnotation(declaration);
+ }
+
+ private boolean standAloneAnnotationIsPresent(ModifiedDeclaration declaration) {
+ return this.standAloneAnnotation(declaration) != null;
+ }
+
+ private Annotation standAloneAnnotation(ModifiedDeclaration declaration) {
+ return this.standAloneAnnotationAdapter.getAnnotation(declaration);
+ }
+
+ private MarkerAnnotation newStandAloneMarkerAnnotation(ModifiedDeclaration declaration) {
+ return this.standAloneAnnotationAdapter.newMarkerAnnotation(declaration);
+ }
+
+ private SingleMemberAnnotation newStandAloneSingleMemberAnnotation(ModifiedDeclaration declaration) {
+ return this.standAloneAnnotationAdapter.newSingleMemberAnnotation(declaration);
+ }
+
+ private NormalAnnotation newStandAloneNormalAnnotation(ModifiedDeclaration declaration) {
+ return this.standAloneAnnotationAdapter.newNormalAnnotation(declaration);
+ }
+
+ private void removeStandAloneAnnotation(ModifiedDeclaration declaration) {
+ this.standAloneAnnotationAdapter.removeAnnotation(declaration);
+ }
+
+ private Annotation nestedAnnotation(ModifiedDeclaration declaration) {
+ return this.nestedAnnotationAdapter.getAnnotation(declaration);
+ }
+
+ private void moveNestedAnnotation(int newIndex, ModifiedDeclaration declaration) {
+ this.nestedAnnotationAdapter.moveAnnotation(newIndex, declaration);
+ }
+
+ private void removeNestedAnnotation(ModifiedDeclaration declaration) {
+ this.nestedAnnotationAdapter.removeAnnotation(declaration);
+ }
+
+ private boolean containerAnnotationIsPresent(ModifiedDeclaration declaration) {
+ return this.containerAnnotation(declaration) != null;
+ }
+
+ private Annotation containerAnnotation(ModifiedDeclaration declaration) {
+ return this.nestedAnnotationAdapter.getOuterAnnotationAdapter().getAnnotation(declaration);
+ }
+
+ private boolean zeroNestedAnnotationIsPresent(ModifiedDeclaration declaration) {
+ return this.zeroNestedAnnotation(declaration) != null;
+ }
+
+ private Annotation zeroNestedAnnotation(ModifiedDeclaration declaration) {
+ return this.zeroNestedAnnotationAdapter.getAnnotation(declaration);
+ }
+
+ private String annotationName() {
+ return this.nestedAnnotationAdapter.getAnnotationName();
+ }
+
+ private String elementName() {
+ return this.nestedAnnotationAdapter.getElementName();
+ }
+
+ @SuppressWarnings("unchecked")
+ protected List<MemberValuePair> values(NormalAnnotation na) {
+ return na.values();
+ }
+
+
+ // ********** annotation factories **********
+
+ /**
+ * define interface that allows us to "re-use" the nasty code in
+ * #newAnnotation(AnnotationFactory, ModifiedDeclaration)
+ */
+ private interface AnnotationFactory {
+ Annotation newAnnotation(DeclarationAnnotationAdapter adapter, ModifiedDeclaration declaration);
+ }
+
+ private static final AnnotationFactory MARKER_ANNOTATION_FACTORY = new AnnotationFactory() {
+ public Annotation newAnnotation(DeclarationAnnotationAdapter adapter, ModifiedDeclaration declaration) {
+ return adapter.newMarkerAnnotation(declaration);
+ }
+ @Override
+ public String toString() {
+ return "MarkerAnnotationFactory";
+ }
+ };
+
+ private static final AnnotationFactory SINGLE_MEMBER_ANNOTATION_FACTORY = new AnnotationFactory() {
+ public Annotation newAnnotation(DeclarationAnnotationAdapter adapter, ModifiedDeclaration declaration) {
+ return adapter.newSingleMemberAnnotation(declaration);
+ }
+ @Override
+ public String toString() {
+ return "SingleMemberAnnotationFactory";
+ }
+ };
+
+ private static final AnnotationFactory NORMAL_ANNOTATION_FACTORY = new AnnotationFactory() {
+ public Annotation newAnnotation(DeclarationAnnotationAdapter adapter, ModifiedDeclaration declaration) {
+ return adapter.newNormalAnnotation(declaration);
+ }
+ @Override
+ public String toString() {
+ return "NormalAnnotationFactory";
+ }
+ };
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ConversionDeclarationAnnotationElementAdapter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ConversionDeclarationAnnotationElementAdapter.java
new file mode 100644
index 0000000000..03e65c9097
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ConversionDeclarationAnnotationElementAdapter.java
@@ -0,0 +1,112 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.Expression;
+import org.eclipse.jpt.utility.internal.StringTools;
+
+/**
+ * Wrap a declaration annotation element adapter that deals with AST
+ * expressions, converting them to/from various other objects.
+ */
+public class ConversionDeclarationAnnotationElementAdapter
+ implements DeclarationAnnotationElementAdapter
+{
+ /**
+ * The wrapped adapter that returns and takes AST expressions.
+ */
+ private final DeclarationAnnotationElementAdapter adapter;
+
+ /**
+ * The converter that converts AST expressions to other objects
+ * (e.g. Strings).
+ */
+ private final ExpressionConverter converter;
+
+
+ // ********** constructors **********
+
+ /**
+ * The default element name is "value"; the default behavior is to
+ * remove the annotation when the last element is removed;
+ * the default expression converter expects string literals.
+ */
+ public ConversionDeclarationAnnotationElementAdapter(DeclarationAnnotationAdapter annotationAdapter) {
+ this(annotationAdapter, StringExpressionConverter.instance());
+ }
+
+ /**
+ * The default element name is "value"; the default behavior is to
+ * remove the annotation when the last element is removed.
+ */
+ public ConversionDeclarationAnnotationElementAdapter(DeclarationAnnotationAdapter annotationAdapter, ExpressionConverter converter) {
+ this(new ExpressionDeclarationAnnotationElementAdapter(annotationAdapter), converter);
+ }
+
+ /**
+ * The default behavior is to remove the annotation when the last
+ * element is removed; the default expression converter expects
+ * string literals.
+ */
+ public ConversionDeclarationAnnotationElementAdapter(DeclarationAnnotationAdapter annotationAdapter, String elementName) {
+ this(annotationAdapter, elementName, StringExpressionConverter.instance());
+ }
+
+ /**
+ * The default behavior is to remove the annotation when the last
+ * element is removed.
+ */
+ public ConversionDeclarationAnnotationElementAdapter(DeclarationAnnotationAdapter annotationAdapter, String elementName, ExpressionConverter converter) {
+ this(new ExpressionDeclarationAnnotationElementAdapter(annotationAdapter, elementName), converter);
+ }
+
+ /**
+ * The default expression converter expects string literals.
+ */
+ public ConversionDeclarationAnnotationElementAdapter(DeclarationAnnotationAdapter annotationAdapter, String elementName, boolean removeAnnotationWhenEmpty) {
+ this(annotationAdapter, elementName, removeAnnotationWhenEmpty, StringExpressionConverter.instance());
+ }
+
+ public ConversionDeclarationAnnotationElementAdapter(DeclarationAnnotationAdapter annotationAdapter, String elementName, boolean removeAnnotationWhenEmpty, ExpressionConverter converter) {
+ this(new ExpressionDeclarationAnnotationElementAdapter(annotationAdapter, elementName, removeAnnotationWhenEmpty), converter);
+ }
+
+ public ConversionDeclarationAnnotationElementAdapter(DeclarationAnnotationElementAdapter adapter, ExpressionConverter converter) {
+ super();
+ this.adapter = adapter;
+ this.converter = converter;
+ }
+
+
+ // ********** DeclarationAnnotationElementAdapter implementation **********
+
+ public Object getValue(ModifiedDeclaration declaration) {
+ return this.converter.convert((Expression) this.adapter.getValue(declaration));
+ }
+
+ public void setValue(Object value, ModifiedDeclaration declaration) {
+ this.adapter.setValue(this.converter.convert(value, this.adapter.astNode(declaration).getAST()), declaration);
+ }
+
+ public Expression expression(ModifiedDeclaration declaration) {
+ return this.adapter.expression(declaration);
+ }
+
+ public ASTNode astNode(ModifiedDeclaration declaration) {
+ return this.adapter.astNode(declaration);
+ }
+
+ @Override
+ public String toString() {
+ return StringTools.buildToStringFor(this, this.adapter);
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/DeclarationAnnotationAdapter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/DeclarationAnnotationAdapter.java
new file mode 100644
index 0000000000..b8c551bc83
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/DeclarationAnnotationAdapter.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.Annotation;
+import org.eclipse.jdt.core.dom.MarkerAnnotation;
+import org.eclipse.jdt.core.dom.NormalAnnotation;
+import org.eclipse.jdt.core.dom.SingleMemberAnnotation;
+
+/**
+ * Provide clients with a pluggable way to manipulate an
+ * annotation modifying a "declaration".
+ *
+ * TODO specify how multiple annotations with the same name are to be handled
+ */
+public interface DeclarationAnnotationAdapter {
+
+ /**
+ * Given the specified declaration, return the annotation.
+ */
+ Annotation getAnnotation(ModifiedDeclaration declaration);
+
+ /**
+ * Given the specified declaration, modify it with
+ * a new marker annotation, replacing the original annotation if present.
+ * Return the new annotation.
+ */
+ MarkerAnnotation newMarkerAnnotation(ModifiedDeclaration declaration);
+
+ /**
+ * Given the specified declaration, modify it with
+ * a new single member annotation, replacing the original annotation if present.
+ * Return the new annotation.
+ */
+ SingleMemberAnnotation newSingleMemberAnnotation(ModifiedDeclaration declaration);
+
+ /**
+ * Given the specified declaration, modify it with
+ * a new normal annotation, replacing the original annotation if present.
+ * Return the new annotation.
+ */
+ NormalAnnotation newNormalAnnotation(ModifiedDeclaration declaration);
+
+ /**
+ * Remove the annotation from the specified declaration.
+ */
+ void removeAnnotation(ModifiedDeclaration declaration);
+
+ /**
+ * Given the specified declaration, return the AST node
+ * corresponding to the annotation.
+ * If the annotation is missing, return its parent node.
+ */
+ ASTNode astNode(ModifiedDeclaration declaration);
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/DeclarationAnnotationElementAdapter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/DeclarationAnnotationElementAdapter.java
new file mode 100644
index 0000000000..b5b7e830d5
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/DeclarationAnnotationElementAdapter.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.Expression;
+
+/**
+ * Provide clients with a pluggable way to manipulate an
+ * annotation element modifying a "declaration".
+ */
+public interface DeclarationAnnotationElementAdapter {
+
+ /**
+ * Given the specified declaration, return the value of the
+ * annotation element. Return null if the element is not present.
+ */
+ Object getValue(ModifiedDeclaration declaration);
+
+ /**
+ * Given the specified declaration, set the value of the
+ * annotation element. Setting the value of the element
+ * to null will cause the element to be removed from its
+ * annotation.
+ */
+ void setValue(Object value, ModifiedDeclaration declaration);
+
+ /**
+ * Given the specified declaration, return the element's value expression.
+ * Return null if the element is not present.
+ */
+ Expression expression(ModifiedDeclaration declaration);
+
+ /**
+ * Given the specified declaration, return the AST node
+ * corresponding to the element's value.
+ * If the element is missing, return the annotation's node.
+ */
+ ASTNode astNode(ModifiedDeclaration declaration);
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/EnumDeclarationAnnotationElementAdapter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/EnumDeclarationAnnotationElementAdapter.java
new file mode 100644
index 0000000000..0727ee2cc5
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/EnumDeclarationAnnotationElementAdapter.java
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.Expression;
+
+/**
+ * Wrap a declaration annotation element adapter and simply
+ * add an import for the enum when necessary.
+ */
+public class EnumDeclarationAnnotationElementAdapter
+ implements DeclarationAnnotationElementAdapter
+{
+ /**
+ * The wrapped adapter that returns and takes name strings (enums).
+ */
+ private final ConversionDeclarationAnnotationElementAdapter adapter;
+
+
+ // ********** constructors **********
+
+ /**
+ * The default element name is "value"; the default behavior is to
+ * remove the annotation when the last element is removed.
+ */
+ public EnumDeclarationAnnotationElementAdapter(DeclarationAnnotationAdapter annotationAdapter) {
+ this(annotationAdapter, "value");
+ }
+
+ /**
+ * The default behavior is to remove the annotation when the last
+ * element is removed.
+ */
+ public EnumDeclarationAnnotationElementAdapter(DeclarationAnnotationAdapter annotationAdapter, String elementName) {
+ this(annotationAdapter, elementName, true);
+ }
+
+ public EnumDeclarationAnnotationElementAdapter(DeclarationAnnotationAdapter annotationAdapter, String elementName, boolean removeAnnotationWhenEmpty) {
+ this(new ConversionDeclarationAnnotationElementAdapter(annotationAdapter, elementName, removeAnnotationWhenEmpty, NameStringExpressionConverter.instance()));
+ }
+
+ protected EnumDeclarationAnnotationElementAdapter(ConversionDeclarationAnnotationElementAdapter adapter) {
+ super();
+ this.adapter = adapter;
+ }
+
+
+ // ********** DeclarationAnnotationElementAdapter implementation **********
+
+ public Object getValue(ModifiedDeclaration declaration) {
+ return this.resolve(this.adapter.expression(declaration), declaration);
+ }
+
+ public void setValue(Object value, ModifiedDeclaration declaration) {
+ this.adapter.setValue(this.convertToShortName(value, declaration), declaration);
+ }
+
+ public Expression expression(ModifiedDeclaration declaration) {
+ return this.adapter.expression(declaration);
+ }
+
+ public ASTNode astNode(ModifiedDeclaration declaration) {
+ return this.adapter.astNode(declaration);
+ }
+
+
+ // ********** internal methods **********
+
+ /**
+ * resolve the enum's short name
+ */
+ protected String resolve(Expression enumExpression, ModifiedDeclaration declaration) {
+ return (enumExpression == null) ? null : JDTTools.resolveEnum(declaration.iCompilationUnit(), enumExpression);
+ }
+
+ /**
+ * convert the fully-qualified enum to a static import and its short name
+ */
+ protected String convertToShortName(Object value, ModifiedDeclaration declaration) {
+ if (value == null) {
+ return null;
+ }
+ String enum_ = (String) value;
+ declaration.addStaticImport(enum_); // e.g. "javax.persistence.FetchType.EAGER"
+ return this.shortName(enum_); // e.g. "EAGER"
+ }
+
+ protected String shortTypeName(String name) {
+ return name.substring(0, name.lastIndexOf('.'));
+ }
+
+ protected String shortName(String name) {
+ return name.substring(name.lastIndexOf('.') + 1);
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ExpressionConverter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ExpressionConverter.java
new file mode 100644
index 0000000000..c2f0109263
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ExpressionConverter.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import org.eclipse.jdt.core.dom.AST;
+import org.eclipse.jdt.core.dom.Expression;
+
+/**
+ * Define the protocol for converting an AST expression back and forth
+ * from an arbitrary type (e.g. Expression <=> String).
+ */
+public interface ExpressionConverter {
+
+ /**
+ * Convert the specified object to an
+ * expression that is owned by the specified AST.
+ * The type of the object is determined by the
+ * contract specified by the client.
+ */
+ Expression convert(Object o, AST ast);
+
+ /**
+ * Convert the specified expression to an object of some
+ * pre-determined type.
+ */
+ Object convert(Expression expression);
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ExpressionDeclarationAnnotationElementAdapter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ExpressionDeclarationAnnotationElementAdapter.java
new file mode 100644
index 0000000000..5e26ceb9e0
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ExpressionDeclarationAnnotationElementAdapter.java
@@ -0,0 +1,354 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.jdt.core.dom.AST;
+import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.Annotation;
+import org.eclipse.jdt.core.dom.Expression;
+import org.eclipse.jdt.core.dom.MarkerAnnotation;
+import org.eclipse.jdt.core.dom.MemberValuePair;
+import org.eclipse.jdt.core.dom.NormalAnnotation;
+import org.eclipse.jdt.core.dom.SingleMemberAnnotation;
+import org.eclipse.jpt.utility.internal.StringTools;
+
+/**
+ * Most obvious implementation of the interface.
+ * Assume the element's value is an Expression.
+ */
+public class ExpressionDeclarationAnnotationElementAdapter
+ implements DeclarationAnnotationElementAdapter
+{
+ /**
+ * Adapter used to manipulate the element's annotation.
+ */
+ private final DeclarationAnnotationAdapter annotationAdapter;
+
+ /**
+ * The name of the relevant annotation element.
+ */
+ private final String elementName;
+
+ /**
+ * Flag to indicate whether the element's annotation is to be
+ * completely removed if, when the element itself is removed,
+ * the annotation has no remaining elements.
+ */
+ private final boolean removeAnnotationWhenEmpty;
+
+
+ // ********** constructors **********
+
+ /**
+ * The default element name is "value"; the default behavior is to
+ * remove the annotation when the last element is removed.
+ */
+ public ExpressionDeclarationAnnotationElementAdapter(DeclarationAnnotationAdapter annotationAdapter) {
+ this(annotationAdapter, "value");
+ }
+
+ /**
+ * The default element name is "value".
+ */
+ public ExpressionDeclarationAnnotationElementAdapter(DeclarationAnnotationAdapter annotationAdapter, boolean removeAnnotationWhenEmpty) {
+ this(annotationAdapter, "value", removeAnnotationWhenEmpty);
+ }
+
+ /**
+ * The default behavior is to remove the annotation when the last
+ * element is removed.
+ */
+ public ExpressionDeclarationAnnotationElementAdapter(DeclarationAnnotationAdapter annotationAdapter, String elementName) {
+ this(annotationAdapter, elementName, true);
+ }
+
+ public ExpressionDeclarationAnnotationElementAdapter(DeclarationAnnotationAdapter annotationAdapter, String elementName, boolean removeAnnotationWhenEmpty) {
+ super();
+ this.annotationAdapter = annotationAdapter;
+ this.elementName = elementName;
+ this.removeAnnotationWhenEmpty = removeAnnotationWhenEmpty;
+ }
+
+
+ // ********** DeclarationAnnotationElementAdapter implementation **********
+
+ public Object getValue(ModifiedDeclaration declaration) {
+ // return the expression unmodified
+ return this.expression(declaration);
+ }
+
+ public void setValue(Object value, ModifiedDeclaration declaration) {
+ this.setValue((Expression) value, this.annotationAdapter.getAnnotation(declaration), declaration);
+ }
+
+ public Expression expression(ModifiedDeclaration declaration) {
+ return this.expression(this.annotationAdapter.getAnnotation(declaration));
+ }
+
+ public ASTNode astNode(ModifiedDeclaration declaration) {
+ Expression exp = this.expression(declaration);
+ return (exp != null) ? exp : this.annotationAdapter.astNode(declaration);
+ }
+
+ @Override
+ public String toString() {
+ return StringTools.buildToStringFor(this, this.elementName);
+ }
+
+
+ // ********** expression **********
+
+ /**
+ * Return the expression value of the *first* annotation element
+ * with the adapter's element name.
+ * Return null if the annotation has no such element.
+ * (An element name of "value" will return the value of a single
+ * member annotation.)
+ */
+ protected Expression expression(Annotation annotation) {
+ if (annotation == null) {
+ return this.expressionNoAnnotation();
+ }
+ if (annotation.isMarkerAnnotation()) {
+ return this.expressionMarkerAnnotation((MarkerAnnotation) annotation);
+ }
+ if (annotation.isSingleMemberAnnotation()) {
+ return this.expressionSingleMemberAnnotation((SingleMemberAnnotation) annotation);
+ }
+ if (annotation.isNormalAnnotation()) {
+ return this.expressionNormalAnnotation((NormalAnnotation) annotation);
+ }
+ throw new IllegalArgumentException("unknown annotation type: " + annotation);
+ }
+
+ protected Expression expressionNoAnnotation() {
+ return null;
+ }
+
+ /**
+ * Return the expression value of the *first* annotation element
+ * with the adapter's element name.
+ * Return null if the annotation has no such element.
+ */
+ protected Expression expressionMarkerAnnotation(MarkerAnnotation annotation) {
+ return null;
+ }
+
+ /**
+ * Return the expression value of the *first* annotation element
+ * with the adapter's element name.
+ * Return null if the annotation has no such element.
+ */
+ protected Expression expressionSingleMemberAnnotation(SingleMemberAnnotation annotation) {
+ return this.elementName.equals("value") ? annotation.getValue() : null;
+ }
+
+ /**
+ * Return the expression value of the *first* annotation element
+ * with the adapter's element name.
+ * Return null if the annotation has no such element.
+ */
+ protected Expression expressionNormalAnnotation(NormalAnnotation annotation) {
+ MemberValuePair pair = this.memberValuePair(annotation);
+ return (pair == null) ? null : pair.getValue();
+ }
+
+
+ // ********** set value **********
+
+ /**
+ * set non-null, non-empty value
+ */
+ protected void setValue(Expression value, Annotation annotation, ModifiedDeclaration declaration) {
+ if (value == null) {
+ this.removeElement(annotation, declaration);
+ }
+ else if (annotation == null) {
+ this.setValueNoAnnotation(value, declaration);
+ }
+ else if (annotation.isMarkerAnnotation()) {
+ this.setValueMarkerAnnotation(value, (MarkerAnnotation) annotation, declaration);
+ }
+ else if (annotation.isSingleMemberAnnotation()) {
+ this.setValueSingleMemberAnnotation(value, (SingleMemberAnnotation) annotation, declaration);
+ }
+ else if (annotation.isNormalAnnotation()) {
+ this.setValueNormalAnnotation(value, (NormalAnnotation) annotation, declaration);
+ }
+ else {
+ throw new IllegalArgumentException("unknown annotation type: " + annotation);
+ }
+ }
+
+ /**
+ * add non-null, non-empty value
+ */
+ protected void setValueNoAnnotation(Expression value, ModifiedDeclaration declaration) {
+ if (this.elementName.equals("value")) {
+ // @Foo("xxx")
+ this.annotationAdapter.newSingleMemberAnnotation(declaration).setValue(value);
+ } else {
+ // @Foo(bar="xxx")
+ this.addValue(value, this.annotationAdapter.newNormalAnnotation(declaration));
+ }
+ }
+
+ protected void addValue(Expression value, NormalAnnotation annotation) {
+ this.addValue(value, annotation, this.elementName);
+ }
+
+ protected void addValue(Expression value, NormalAnnotation annotation, String annotationElementName) {
+ AST ast = annotation.getAST();
+ MemberValuePair pair = ast.newMemberValuePair();
+ pair.setName(ast.newSimpleName(annotationElementName));
+ pair.setValue(value);
+ List<MemberValuePair> values = this.values(annotation);
+ values.add(pair);
+ }
+
+ protected void setValueMarkerAnnotation(Expression value, MarkerAnnotation annotation, ModifiedDeclaration declaration) {
+ // @Foo => @Foo("xxx")
+ // or
+ // @Foo => @Foo(bar="xxx")
+ this.setValueNoAnnotation(value, declaration);
+ }
+
+ protected void setValueSingleMemberAnnotation(Expression value, SingleMemberAnnotation annotation, ModifiedDeclaration declaration) {
+ if (this.elementName.equals("value")) {
+ // @Foo("yyy") => @Foo("xxx")
+ annotation.setValue(value);
+ } else {
+ // @Foo("yyy") => @Foo(value="yyy", bar="xxx")
+ Expression vv = annotation.getValue();
+ vv = (Expression) ASTNode.copySubtree(vv.getAST(), vv);
+ NormalAnnotation normalAnnotation = this.annotationAdapter.newNormalAnnotation(declaration);
+ this.addValue(vv, normalAnnotation, "value");
+ this.addValue(value, normalAnnotation);
+ }
+ }
+
+ protected void setValueNormalAnnotation(Expression value, NormalAnnotation annotation, ModifiedDeclaration declaration) {
+ MemberValuePair pair = this.memberValuePair(annotation);
+ if (pair == null) {
+ this.addValue(value, annotation);
+ } else {
+ pair.setValue(value);
+ }
+ }
+
+
+ // ********** remove element **********
+
+ protected void removeElement(Annotation annotation, ModifiedDeclaration declaration) {
+ if (annotation == null) {
+ this.removeElementNoAnnotation(declaration);
+ }
+ else if (annotation.isMarkerAnnotation()) {
+ this.removeElementMarkerAnnotation((MarkerAnnotation) annotation, declaration);
+ }
+ else if (annotation.isSingleMemberAnnotation()) {
+ this.removeElementSingleMemberAnnotation((SingleMemberAnnotation) annotation, declaration);
+ }
+ else if (annotation.isNormalAnnotation()) {
+ this.removeElementNormalAnnotation((NormalAnnotation) annotation, declaration);
+ }
+ else {
+ throw new IllegalArgumentException("unknown annotation type: " + annotation);
+ }
+ }
+
+ protected void removeElementNoAnnotation(ModifiedDeclaration declaration) {
+ // the element is already gone (?)
+ }
+
+ protected void removeElementMarkerAnnotation(MarkerAnnotation annotation, ModifiedDeclaration declaration) {
+ // the element is already gone (?)
+ }
+
+ protected void removeElementSingleMemberAnnotation(SingleMemberAnnotation annotation, ModifiedDeclaration declaration) {
+ if (this.elementName.equals("value")) {
+ if (this.removeAnnotationWhenEmpty) {
+ // @Foo("xxx") =>
+ this.annotationAdapter.removeAnnotation(declaration);
+ } else {
+ // @Foo("xxx") => @Foo
+ this.annotationAdapter.newMarkerAnnotation(declaration);
+ }
+ } else {
+ // the [non-'value'] element is already gone (?)
+ }
+ }
+
+ protected void removeElementNormalAnnotation(NormalAnnotation annotation, ModifiedDeclaration declaration) {
+ List<MemberValuePair> values = this.values(annotation);
+ if ((values.size() == 1) && values.get(0).getName().getFullyQualifiedName().equals(this.elementName)) {
+ if (this.removeAnnotationWhenEmpty) {
+ // @Foo(bar="xxx") =>
+ this.annotationAdapter.removeAnnotation(declaration);
+ } else {
+ // @Foo(bar="xxx") => @Foo
+ this.annotationAdapter.newMarkerAnnotation(declaration);
+ }
+ } else {
+ this.removeElement(annotation);
+ if (values.size() == 1) {
+ MemberValuePair pair = values.get(0);
+ if (pair.getName().getFullyQualifiedName().equals("value")) {
+ // @Foo(bar="xxx", value="yyy") => @Foo("yyy")
+ Expression vv = pair.getValue();
+ vv = (Expression) ASTNode.copySubtree(vv.getAST(), vv);
+ this.annotationAdapter.newSingleMemberAnnotation(declaration).setValue(vv);
+ } else {
+ // @Foo(bar="xxx", baz="yyy") => @Foo(baz="yyy")
+ }
+ } else {
+ // @Foo(bar="xxx", baz="yyy", joo="xxx") => @Foo(baz="yyy", joo="xxx")
+ }
+ }
+ }
+
+ /**
+ * Remove the *first* member value pair from the specified annotation element
+ * with the adapter's element name.
+ */
+ protected void removeElement(NormalAnnotation annotation) {
+ for (Iterator<MemberValuePair> stream = this.values(annotation).iterator(); stream.hasNext(); ) {
+ MemberValuePair pair = stream.next();
+ if (pair.getName().getFullyQualifiedName().equals(this.elementName)) {
+ stream.remove();
+ }
+ }
+ }
+
+
+ // ********** convenience methods **********
+
+ /**
+ * Return the *first* member value pair for the specified annotation element
+ * with the adapter's element name.
+ * Return null if the annotation has no such element.
+ */
+ protected MemberValuePair memberValuePair(NormalAnnotation annotation) {
+ for (MemberValuePair pair : this.values(annotation)) {
+ if (pair.getName().getFullyQualifiedName().equals(this.elementName)) {
+ return pair;
+ }
+ }
+ return null;
+ }
+
+ @SuppressWarnings("unchecked")
+ protected List<MemberValuePair> values(NormalAnnotation na) {
+ return na.values();
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/FieldAttribute.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/FieldAttribute.java
new file mode 100644
index 0000000000..e0b259941a
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/FieldAttribute.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import java.util.List;
+import org.eclipse.jdt.core.IField;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.dom.BodyDeclaration;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jdt.core.dom.FieldDeclaration;
+import org.eclipse.jdt.core.dom.VariableDeclarationFragment;
+
+/**
+ * Adapt and extend a jdt field.
+ * Attribute based on a Java field, e.g.
+ * private int foo;
+ */
+public class FieldAttribute extends Attribute {
+
+ public FieldAttribute(IField field) {
+ super(field);
+ }
+
+ public IField jdtField() {
+ return (IField) this.getJdtMember();
+ }
+
+ FieldDeclaration fieldDeclaration() {
+ return (FieldDeclaration) this.bodyDeclaration();
+ }
+
+ FieldDeclaration fieldDeclaration(CompilationUnit astRoot) {
+ return (FieldDeclaration) this.bodyDeclaration(astRoot);
+ }
+
+
+ // ********** Member implementation **********
+
+ @Override
+ public BodyDeclaration bodyDeclaration(CompilationUnit astRoot) {
+ String fieldName = this.getName();
+ for (FieldDeclaration fieldDeclaration : this.declaringTypeDeclaration(astRoot).getFields()) {
+ // handle multiple fields declared in a single statement:
+ // private int foo, bar;
+ for (VariableDeclarationFragment fragment : this.fragments(fieldDeclaration)) {
+ if (fragment.getName().getFullyQualifiedName().equals(fieldName)) {
+ return fieldDeclaration;
+ }
+ }
+ }
+ return null;
+ }
+
+
+ // ********** Attribute implementation **********
+
+ @Override
+ public boolean isField() {
+ return true;
+ }
+
+ @Override
+ public String attributeName() {
+ return this.getName();
+ }
+
+ @Override
+ public String typeSignature() {
+ try {
+ return this.jdtField().getTypeSignature();
+ } catch (JavaModelException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+
+ // ********** miscellaneous **********
+
+ @SuppressWarnings("unchecked")
+ protected List<VariableDeclarationFragment> fragments(FieldDeclaration fd) {
+ return fd.fragments();
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/IndexedAnnotationAdapter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/IndexedAnnotationAdapter.java
new file mode 100644
index 0000000000..3b620ed775
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/IndexedAnnotationAdapter.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+/**
+ * Adapt an indexed Java annotation with a simple-to-use interface.
+ */
+public interface IndexedAnnotationAdapter extends AnnotationAdapter {
+
+ /**
+ * Return the the index at which the annotation is situated.
+ */
+ int index();
+
+ /**
+ * Move the annotation to the specified index, leaving its original
+ * position cleared out.
+ */
+ void moveAnnotation(int newIndex);
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/IndexedDeclarationAnnotationAdapter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/IndexedDeclarationAnnotationAdapter.java
new file mode 100644
index 0000000000..eab6a9dbc5
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/IndexedDeclarationAnnotationAdapter.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+/**
+ * Allow clients to manipulate an annotation within an array of annotations.
+ */
+public interface IndexedDeclarationAnnotationAdapter extends DeclarationAnnotationAdapter {
+
+ /**
+ * Return the the index at which the annotation is situated.
+ */
+ int getIndex();
+
+ /**
+ * Move the annotation to the specified index, leaving its original
+ * position cleared out.
+ */
+ void moveAnnotation(int newIndex, ModifiedDeclaration declaration);
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/JDTTools.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/JDTTools.java
new file mode 100644
index 0000000000..4e4a425110
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/JDTTools.java
@@ -0,0 +1,201 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import org.eclipse.jdt.core.Flags;
+import org.eclipse.jdt.core.IClassFile;
+import org.eclipse.jdt.core.ICompilationUnit;
+import org.eclipse.jdt.core.IImportDeclaration;
+import org.eclipse.jdt.core.IMember;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.Signature;
+import org.eclipse.jdt.core.compiler.CategorizedProblem;
+import org.eclipse.jdt.core.dom.AST;
+import org.eclipse.jdt.core.dom.ASTParser;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jdt.core.dom.Expression;
+import org.eclipse.jdt.internal.codeassist.ISelectionRequestor;
+import org.eclipse.jdt.internal.codeassist.SelectionEngine;
+import org.eclipse.jdt.internal.core.DefaultWorkingCopyOwner;
+import org.eclipse.jdt.internal.core.JavaProject;
+import org.eclipse.jdt.internal.core.SearchableEnvironment;
+
+public class JDTTools {
+
+ /**
+ * add a "normal" import, as opposed to a "static" import
+ */
+ public static IImportDeclaration addImport(ICompilationUnit compilationUnit, String importElement) {
+ return addImport(compilationUnit, importElement, Flags.AccDefault);
+ }
+
+ /**
+ * this doesn't work yet... see eclipse bugzilla 143684
+ */
+ public static IImportDeclaration addStaticImport(ICompilationUnit compilationUnit, String importElement) {
+ return addImport(compilationUnit, importElement, Flags.AccStatic);
+ }
+
+ public static IImportDeclaration addImport(ICompilationUnit compilationUnit, String importElement, int flags) {
+ try {
+ return compilationUnit.createImport(importElement, null, flags, null); // null = place at end of import list; null = no progress monitor
+ } catch (JavaModelException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ /**
+ * Build an AST for the specified member's compilation unit or class file.
+ */
+ public static CompilationUnit createASTRoot(IMember member) {
+ return (member.isBinary()) ?
+ createASTRoot(member.getClassFile()) // the class file must have a source attachment
+ :
+ createASTRoot(member.getCompilationUnit());
+ }
+
+ public static CompilationUnit createASTRoot(IClassFile classFile) {
+ ASTParser parser = ASTParser.newParser(AST.JLS3);
+ parser.setSource(classFile);
+ return (CompilationUnit) parser.createAST(null);
+
+ }
+
+ public static CompilationUnit createASTRoot(ICompilationUnit compilationUnit) {
+ ASTParser parser = ASTParser.newParser(AST.JLS3);
+ parser.setSource(compilationUnit);
+ return (CompilationUnit) parser.createAST(null);
+ }
+
+ /**
+ * Resolve the specified signature in the scope of the specified jdt type.
+ * Return the fully-qualified type name or return null if it cannot be
+ * resolved unambiguously.
+ */
+ public static String resolveSignature(String signature, IType type) {
+ String elementSignature = Signature.getElementType(signature);
+ if (signatureIsPrimitive(elementSignature)) {
+ return Signature.toString(signature); // no need to resolve primitives
+ }
+ String elementTypeName = Signature.toString(elementSignature);
+ elementTypeName = resolve(elementTypeName, type);
+ if (elementTypeName == null) {
+ return null; // unable to resolve type
+ }
+ int arrayCount = Signature.getArrayCount(signature);
+ if (arrayCount == 0) {
+ return elementTypeName;
+ }
+ StringBuffer sb = new StringBuffer(elementTypeName.length() + 2*arrayCount);
+ sb.append(elementTypeName);
+ for (int i = arrayCount; i-- > 0; ) {
+ sb.append('[').append(']');
+ }
+ return sb.toString();
+ }
+
+ /**
+ * Resolve the specified type name in the scope of the specified jdt type.
+ * Return the fully-qualified type name or return null if it cannot be
+ * resolved unambiguously.
+ */
+ public static String resolve(String typeName, IType type) {
+ try {
+ return resolve_(typeName, type);
+ } catch (JavaModelException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ private static String resolve_(String typeName, IType type) throws JavaModelException {
+ String[][] resolvedTypes = type.resolveType(typeName);
+ // if more than one resolved type is returned, the type name is ambiguous
+ if (resolvedTypes == null) {
+ return null;
+ }
+ if (resolvedTypes.length > 1) {
+ return null;
+ }
+ return resolvedTypes[0][0] + "." + resolvedTypes[0][1];
+ }
+
+ public static boolean signatureIsPrimitive(String signature) {
+ return Signature.getTypeSignatureKind(signature) == Signature.BASE_TYPE_SIGNATURE;
+ }
+
+ public static String resolveEnum(ICompilationUnit sourceUnit, Expression enumExpression) {
+ return resolveEnum(sourceUnit, enumExpression.getStartPosition(), enumExpression.getStartPosition() + enumExpression.getLength() - 1);
+ }
+
+ public static String resolveEnum(ICompilationUnit sourceUnit, int enumSourceStart, int enumSourceEnd) {
+ try {
+ return resolveEnum_(sourceUnit, enumSourceStart, enumSourceEnd);
+ } catch (JavaModelException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ private static String resolveEnum_(ICompilationUnit sourceUnit, int enumSourceStart, int enumSourceEnd) throws JavaModelException {
+ String[][] resolvedEnums = resolveField_((org.eclipse.jdt.internal.core.CompilationUnit) sourceUnit, enumSourceStart, enumSourceEnd);
+ // if more than one resolved enum is returned, the enum name is ambiguous
+ if (resolvedEnums == null) {
+ return null;
+ }
+ if (resolvedEnums.length > 1) {
+ return null;
+ }
+ return resolvedEnums[0][0] + "." + resolvedEnums[0][1] + "." + resolvedEnums[0][2];
+ }
+
+ // code lifted from SourceType.resolveType(String, WorkingCopyOwner)
+ private static String[][] resolveField_(org.eclipse.jdt.internal.core.CompilationUnit sourceUnit, int selectionSourceStart, int selectionSourceEnd) throws JavaModelException {
+ class TypeResolveRequestor implements ISelectionRequestor {
+ String[][] answers = null;
+ public void acceptType(char[] packageName, char[] tName, int modifiers, boolean isDeclaration, char[] uniqueKey, int start, int end) {
+ // ignore
+ }
+ public void acceptError(CategorizedProblem error) {
+ // ignore
+ }
+ public void acceptField(char[] declaringTypePackageName, char[] declaringTypeName, char[] fieldName, boolean isDeclaration, char[] uniqueKey, int start, int end) {
+ String[] answer = new String[] {new String(declaringTypePackageName), new String(declaringTypeName), new String(fieldName) };
+ if (this.answers == null) {
+ this.answers = new String[][]{ answer };
+ } else {
+ int len = this.answers.length;
+ System.arraycopy(this.answers, 0, this.answers = new String[len+1][], 0, len);
+ this.answers[len] = answer;
+ }
+ }
+ public void acceptMethod(char[] declaringTypePackageName, char[] declaringTypeName, String enclosingDeclaringTypeSignature, char[] selector, char[][] parameterPackageNames, char[][] parameterTypeNames, String[] parameterSignatures, char[][] typeParameterNames, char[][][] typeParameterBoundNames, boolean isConstructor, boolean isDeclaration, char[] uniqueKey, int start, int end) {
+ // ignore
+ }
+ public void acceptPackage(char[] packageName){
+ // ignore
+ }
+ public void acceptTypeParameter(char[] declaringTypePackageName, char[] declaringTypeName, char[] typeParameterName, boolean isDeclaration, int start, int end) {
+ // ignore
+ }
+ public void acceptMethodTypeParameter(char[] declaringTypePackageName, char[] declaringTypeName, char[] selector, int selectorStart, int selcetorEnd, char[] typeParameterName, boolean isDeclaration, int start, int end) {
+ // ignore
+ }
+
+ }
+ TypeResolveRequestor requestor = new TypeResolveRequestor();
+ JavaProject project = (JavaProject) sourceUnit.getJavaProject();
+ SearchableEnvironment environment = project.newSearchableNameEnvironment(DefaultWorkingCopyOwner.PRIMARY);
+
+ SelectionEngine engine = new SelectionEngine(environment, requestor, project.getOptions(true));
+
+ engine.select(sourceUnit, selectionSourceStart, selectionSourceEnd);
+ return requestor.answers;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/Member.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/Member.java
new file mode 100644
index 0000000000..87fba5c1e4
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/Member.java
@@ -0,0 +1,394 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import org.eclipse.core.filebuffers.FileBuffers;
+import org.eclipse.core.filebuffers.ITextFileBuffer;
+import org.eclipse.jdt.core.ICompilationUnit;
+import org.eclipse.jdt.core.IMember;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.Annotation;
+import org.eclipse.jdt.core.dom.BodyDeclaration;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jdt.core.dom.Expression;
+import org.eclipse.jdt.core.dom.TypeDeclaration;
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.Document;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.utility.internal.StringTools;
+import org.eclipse.text.edits.TextEdit;
+
+/**
+ * Adapt and extend a JDT member with simplified annotation handling.
+ */
+public abstract class Member {
+
+ private final IMember jdtMember;
+
+ /** this will be null for a top-level type */
+ private final Type declaringType;
+
+
+ // ********** constructor **********
+
+ Member(IMember jdtMember) {
+ super();
+ this.jdtMember = jdtMember;
+ IType jdtDeclaringType = jdtMember.getDeclaringType();
+ this.declaringType = (jdtDeclaringType == null) ? null : new Type(jdtDeclaringType);
+ }
+
+
+ // ********** accessors **********
+
+ public IMember getJdtMember() {
+ return this.jdtMember;
+ }
+
+ public boolean wraps(IMember member) {
+ return this.jdtMember.exists()
+ && this.jdtMember.equals(member);
+ }
+
+ /**
+ * this will return null for a top-level type
+ */
+ public Type getDeclaringType() {
+ return this.declaringType;
+ }
+
+
+ // ********** miscellaneous **********
+
+ public ICompilationUnit compilationUnit() {
+ return this.jdtMember.getCompilationUnit();
+ }
+
+ public String getName() {
+ return this.jdtMember.getElementName();
+ }
+
+ public Type topLevelDeclaringType() {
+ return this.declaringType.topLevelDeclaringType();
+ }
+
+ /**
+ * note: this creates a *new* AST
+ */
+ public CompilationUnit astRoot() {
+ return JDTTools.createASTRoot(this.jdtMember);
+ }
+
+ public ModifiedDeclaration modifiedDeclaration() {
+ return this.modifiedDeclaration(this.astRoot());
+ }
+
+ public ModifiedDeclaration modifiedDeclaration(CompilationUnit astRoot) {
+ return new ModifiedDeclaration(this.bodyDeclaration(astRoot));
+ }
+
+ public BodyDeclaration bodyDeclaration() {
+ return this.bodyDeclaration(this.astRoot());
+ }
+
+ public ITextRange textRange() {
+ return this.textRange(this.astRoot());
+ }
+
+ public ITextRange textRange(CompilationUnit astRoot) {
+ return this.textRange(this.bodyDeclaration(astRoot));
+ }
+
+ ITextRange textRange(BodyDeclaration bodyDeclaration) {
+ return new ASTNodeTextRange(bodyDeclaration);
+ }
+
+ /**
+ * this will throw a NPE for a top-level type
+ */
+ TypeDeclaration declaringTypeDeclaration(CompilationUnit astRoot) {
+ return this.declaringType.typeDeclaration(astRoot);
+ }
+
+ @Override
+ public String toString() {
+ return StringTools.buildToStringFor(this, this.getName());
+ }
+
+
+ // ********** abstract methods **********
+
+ /**
+ * Return the member's body declaration.
+ */
+ public abstract BodyDeclaration bodyDeclaration(CompilationUnit astRoot);
+
+
+ // ********** annotations **********
+
+ public Annotation annotation(DeclarationAnnotationAdapter adapter, CompilationUnit astRoot) {
+ return adapter.getAnnotation(this.modifiedDeclaration(astRoot));
+ }
+
+ public Annotation annotation(DeclarationAnnotationAdapter adapter) {
+ return this.annotation(adapter, this.astRoot());
+ }
+
+ public boolean containsAnnotation(DeclarationAnnotationAdapter adapter, CompilationUnit astRoot) {
+ return this.annotation(adapter, astRoot) != null;
+ }
+
+ public boolean containsAnnotation(DeclarationAnnotationAdapter adapter) {
+ return this.containsAnnotation(adapter, this.astRoot());
+ }
+
+ /**
+ * Return whether the member contains any one of the specified annotations.
+ */
+ public boolean containsAnyAnnotation(DeclarationAnnotationAdapter[] adapters) {
+ return this.containsAnyAnnotation(adapters, this.astRoot());
+ }
+
+ /**
+ * Return whether the member contains any one of the specified annotations.
+ */
+ public boolean containsAnyAnnotation(DeclarationAnnotationAdapter[] adapters, CompilationUnit astRoot) {
+ for (DeclarationAnnotationAdapter adapter : adapters) {
+ if (this.containsAnnotation(adapter, astRoot)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Return the text range corresponding to the specified annotation.
+ * If the annotation is missing, return null.
+ */
+ public ITextRange annotationTextRange(DeclarationAnnotationAdapter adapter, CompilationUnit astRoot) {
+ Annotation annotation = this.annotation(adapter, astRoot);
+ return (annotation == null) ? null : new ASTNodeTextRange(annotation);
+ }
+
+ /**
+ * Return the text range corresponding to the specified annotation.
+ * If the annotation is missing, return null.
+ */
+ public ITextRange annotationTextRange(DeclarationAnnotationAdapter adapter) {
+ return this.annotationTextRange(adapter, this.astRoot());
+ }
+
+ /**
+ * Return the AST node corresponding to the specified annotation.
+ * If the annotation is missing, return its parent node.
+ */
+ public ASTNode annotationASTNode(DeclarationAnnotationAdapter adapter, CompilationUnit astRoot) {
+ return adapter.astNode(this.modifiedDeclaration(astRoot));
+ }
+
+ /**
+ * Return the AST node corresponding to the specified annotation.
+ * If the annotation is missing, return its parent node.
+ */
+ public ASTNode annotationASTNode(DeclarationAnnotationAdapter adapter) {
+ return this.annotationASTNode(adapter, this.astRoot());
+ }
+
+ /**
+ * Add the specified marker annotation to the member.
+ */
+ public void newMarkerAnnotation(final DeclarationAnnotationAdapter adapter) {
+ this.edit(new Editor() {
+ public void edit(ModifiedDeclaration declaration) {
+ adapter.newMarkerAnnotation(declaration);
+ }
+ });
+ }
+
+ /**
+ * Add the specified single member annotation to the member.
+ */
+ public void newSingleMemberAnnotation(final DeclarationAnnotationAdapter adapter) {
+ this.edit(new Editor() {
+ public void edit(ModifiedDeclaration declaration) {
+ adapter.newSingleMemberAnnotation(declaration);
+ }
+ });
+ }
+
+ /**
+ * Add the specified normal annotation to the member.
+ */
+ public void newNormalAnnotation(final DeclarationAnnotationAdapter adapter) {
+ this.edit(new Editor() {
+ public void edit(ModifiedDeclaration declaration) {
+ adapter.newNormalAnnotation(declaration);
+ }
+ });
+ }
+
+ /**
+ * Remove the specified annotation from the member.
+ */
+ public void removeAnnotation(final DeclarationAnnotationAdapter adapter) {
+ this.edit(new Editor() {
+ public void edit(ModifiedDeclaration declaration) {
+ adapter.removeAnnotation(declaration);
+ }
+ });
+ }
+
+
+ // ********** annotation elements **********
+
+ public Object annotationElementValue(DeclarationAnnotationElementAdapter adapter, CompilationUnit astRoot) {
+ return adapter.getValue(this.modifiedDeclaration(astRoot));
+ }
+
+ public Object annotationElementValue(DeclarationAnnotationElementAdapter adapter) {
+ return this.annotationElementValue(adapter, this.astRoot());
+ }
+
+ public Expression annotationElementExpression(DeclarationAnnotationElementAdapter adapter, CompilationUnit astRoot) {
+ return adapter.expression(this.modifiedDeclaration(astRoot));
+ }
+
+ public Expression annotationElementExpression(DeclarationAnnotationElementAdapter adapter) {
+ return this.annotationElementExpression(adapter, this.astRoot());
+ }
+
+ public boolean containsAnnotationElement(DeclarationAnnotationElementAdapter adapter, CompilationUnit astRoot) {
+ return this.annotationElementExpression(adapter, astRoot) != null;
+ }
+
+ public boolean containsAnnotationElement(DeclarationAnnotationElementAdapter adapter) {
+ return this.containsAnnotationElement(adapter, this.astRoot());
+ }
+
+ /**
+ * Return the text range corresponding to the specified element.
+ * If the element is missing, return null.
+ */
+ public ITextRange annotationElementTextRange(DeclarationAnnotationElementAdapter adapter, CompilationUnit astRoot) {
+ Expression expression = this.annotationElementExpression(adapter, astRoot);
+ return (expression == null) ? null : new ASTNodeTextRange(expression);
+ }
+
+ /**
+ * Return the text range corresponding to the specified element.
+ * If the element is missing, return null.
+ */
+ public ITextRange annotationElementTextRange(DeclarationAnnotationElementAdapter adapter) {
+ return this.annotationElementTextRange(adapter, this.astRoot());
+ }
+
+ /**
+ * Return the AST node corresponding to the specified element.
+ * If the element is missing, return its parent node.
+ */
+ public ASTNode annotationElementASTNode(DeclarationAnnotationElementAdapter adapter, CompilationUnit astRoot) {
+ return adapter.astNode(this.modifiedDeclaration(astRoot));
+ }
+
+ /**
+ * Return the AST node corresponding to the specified element.
+ * If the element is missing, return its parent node.
+ */
+ public ASTNode annotationElementASTNode(DeclarationAnnotationElementAdapter adapter) {
+ return this.annotationElementASTNode(adapter, this.astRoot());
+ }
+
+ /**
+ * Set the value of the specified element.
+ */
+ public void setAnnotationElementValue(final DeclarationAnnotationElementAdapter adapter, final Object value) {
+ this.edit(new Editor() {
+ public void edit(ModifiedDeclaration declaration) {
+ adapter.setValue(value, declaration);
+ }
+ });
+ }
+
+
+ // ********** editing **********
+
+ /**
+ * Edit the member with the specified editor.
+ * The editor will be invoked once the member's compilation unit
+ * is in an editable state.
+ */
+ public void edit(Editor editor) {
+ try {
+ this.edit_(editor);
+ } catch (JavaModelException ex) {
+ throw new RuntimeException(ex);
+ } catch (BadLocationException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ /**
+ * NB: Be careful changing this method.
+ * Things to look out for:
+ * - when editing via the JavaEditor there is no need to create a working copy
+ * - when editing headlessly, a "working copy" must be created
+ * (at least as far as I can tell ~kfm)
+ * - when editing via a plain text editor, make a working copy or else things are screwed
+ * up the second time you edit through the Persistence Properties View
+ */
+ private void edit_(Editor editor) throws JavaModelException, BadLocationException {
+ ICompilationUnit compilationUnit = this.compilationUnit();
+ if ( ! compilationUnit.isWorkingCopy()) {
+ compilationUnit.becomeWorkingCopy(null, null);
+ }
+
+ ITextFileBuffer buffer = FileBuffers.getTextFileBufferManager().getTextFileBuffer(compilationUnit.getResource().getFullPath());
+ boolean textEditorPresent = (buffer != null);
+ IDocument doc = textEditorPresent ?
+ buffer.getDocument()
+ :
+ new Document(compilationUnit.getBuffer().getContents());
+
+ CompilationUnit astRoot = this.astRoot();
+ astRoot.recordModifications();
+
+ editor.edit(this.modifiedDeclaration(astRoot));
+
+ TextEdit edits = astRoot.rewrite(doc, compilationUnit.getJavaProject().getOptions(true));
+ AnnotationEditFormatter formatter = new AnnotationEditFormatter(doc);
+ formatter.apply(edits);
+
+ if ( ! textEditorPresent) {
+ compilationUnit.getBuffer().setContents(doc.get());
+ compilationUnit.commitWorkingCopy(true, null);
+ compilationUnit.discardWorkingCopy();
+ }
+ }
+
+
+ // ********** "editor" interface **********
+
+ /**
+ * This interface defines a callback that is invoked when the member's
+ * compilation unit is in a state to be manipulated.
+ */
+ public interface Editor {
+
+ /**
+ * Edit the specified declaration.
+ */
+ void edit(ModifiedDeclaration declaration);
+
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/MemberAnnotationAdapter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/MemberAnnotationAdapter.java
new file mode 100644
index 0000000000..211e1c880f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/MemberAnnotationAdapter.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+/**
+ * Adapt a member and a declaration annotation adapter.
+ */
+public class MemberAnnotationAdapter extends AbstractAnnotationAdapter {
+
+
+ // ********** constructor **********
+
+ public MemberAnnotationAdapter(Member member, DeclarationAnnotationAdapter daa) {
+ super(member, daa);
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/MemberAnnotationElementAdapter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/MemberAnnotationElementAdapter.java
new file mode 100644
index 0000000000..10b67729d7
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/MemberAnnotationElementAdapter.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jdt.core.dom.Expression;
+import org.eclipse.jpt.utility.internal.StringTools;
+
+ /**
+ * Adapt a member and a declaration annotation element adapter.
+ */
+public class MemberAnnotationElementAdapter
+ implements AnnotationElementAdapter
+{
+ private final Member member;
+ private final DeclarationAnnotationElementAdapter daea;
+
+
+ // ********** constructor **********
+
+ public MemberAnnotationElementAdapter(Member member, DeclarationAnnotationElementAdapter daea) {
+ super();
+ this.member = member;
+ this.daea = daea;
+ }
+
+
+ // ********** AnnotationElementAdapter implementation **********
+
+ public Object getValue() {
+ return this.daea.getValue(this.member.modifiedDeclaration());
+ }
+
+ public Object getValue(CompilationUnit astRoot) {
+ return this.daea.getValue(this.member.modifiedDeclaration(astRoot));
+ }
+
+ public void setValue(Object value) {
+ this.edit(this.buildSetValueEditor(value));
+ }
+
+ public Expression expression() {
+ return this.daea.expression(this.member.modifiedDeclaration());
+ }
+
+ public Expression expression(CompilationUnit astRoot) {
+ return this.daea.expression(this.member.modifiedDeclaration(astRoot));
+ }
+
+ public ASTNode astNode() {
+ return this.daea.astNode(this.member.modifiedDeclaration());
+ }
+
+ public ASTNode astNode(CompilationUnit astRoot) {
+ return this.daea.astNode(this.member.modifiedDeclaration(astRoot));
+ }
+
+ @Override
+ public String toString() {
+ return StringTools.buildToStringFor(this, this.daea);
+ }
+
+
+ // ********** internal methods **********
+
+ protected void edit(Member.Editor editor) {
+ this.member.edit(editor);
+ }
+
+ protected Member.Editor buildSetValueEditor(Object value) {
+ return new SetValueEditor(value, this.daea);
+ }
+
+
+ // ********** member classes **********
+
+ protected static class SetValueEditor implements Member.Editor {
+ private final DeclarationAnnotationElementAdapter daea;
+ private final Object value;
+
+ SetValueEditor(Object value, DeclarationAnnotationElementAdapter daea) {
+ super();
+ this.value = value;
+ this.daea = daea;
+ }
+ public void edit(ModifiedDeclaration declaration) {
+ this.daea.setValue(this.value, declaration);
+ }
+ @Override
+ public String toString() {
+ return StringTools.buildToStringFor(this);
+ }
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/MemberIndexedAnnotationAdapter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/MemberIndexedAnnotationAdapter.java
new file mode 100644
index 0000000000..2358e4ec39
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/MemberIndexedAnnotationAdapter.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import org.eclipse.jpt.utility.internal.StringTools;
+
+/**
+ * Adapt a member and an indexed declaration annotation adapter.
+ */
+public class MemberIndexedAnnotationAdapter
+ extends AbstractAnnotationAdapter
+ implements IndexedAnnotationAdapter
+{
+ private final IndexedDeclarationAnnotationAdapter idaa;
+
+
+ // ********** constructor **********
+
+ public MemberIndexedAnnotationAdapter(Member member, IndexedDeclarationAnnotationAdapter idaa) {
+ super(member, idaa);
+ this.idaa = idaa;
+ }
+
+
+ // ********** IndexedAnnotationAdapter implementation **********
+
+ public int index() {
+ return this.idaa.getIndex();
+ }
+
+ public void moveAnnotation(int newIndex) {
+ this.edit(this.buildMoveAnnotationEditor(newIndex));
+ }
+
+
+ // ********** factory methods **********
+
+ protected Member.Editor buildMoveAnnotationEditor(int newIndex) {
+ return new MoveAnnotationEditor(this.idaa, newIndex);
+ }
+
+
+ // ********** member classes **********
+
+ protected static class MoveAnnotationEditor implements Member.Editor {
+ private final IndexedDeclarationAnnotationAdapter idaa;
+ private int index;
+
+ MoveAnnotationEditor(IndexedDeclarationAnnotationAdapter idaa, int index) {
+ super();
+ this.idaa = idaa;
+ this.index = index;
+ }
+ public void edit(ModifiedDeclaration declaration) {
+ this.idaa.moveAnnotation(this.index, declaration);
+ }
+ @Override
+ public String toString() {
+ return StringTools.buildToStringFor(this);
+ }
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/MethodAttribute.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/MethodAttribute.java
new file mode 100644
index 0000000000..e343550c8f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/MethodAttribute.java
@@ -0,0 +1,97 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import java.beans.Introspector;
+import org.eclipse.jdt.core.IMethod;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.dom.BodyDeclaration;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jdt.core.dom.MethodDeclaration;
+
+/**
+ * Adapt and extend a jdt method.
+ * Attribute based on a Java property, e.g.
+ * private int getFoo() {
+ * return foo;
+ * }
+ * private void setFoo(int foo) {
+ * this.foo = foo;
+ * }
+ *
+ * For now we only hold the getter method, since that's where the
+ * annotations are put.
+ */
+public class MethodAttribute extends Attribute {
+
+ public MethodAttribute(IMethod getMethod) {
+ super(getMethod);
+ }
+
+ public IMethod jdtMethod() {
+ return (IMethod) this.getJdtMember();
+ }
+
+ MethodDeclaration methodDeclaration() {
+ return (MethodDeclaration) this.bodyDeclaration();
+ }
+
+ MethodDeclaration methodDeclaration(CompilationUnit astRoot) {
+ return (MethodDeclaration) this.bodyDeclaration(astRoot);
+ }
+
+
+ // ********** Member implementation **********
+
+ @Override
+ public BodyDeclaration bodyDeclaration(CompilationUnit astRoot) {
+ String methodName = this.getName();
+ for (MethodDeclaration methodDeclaration : this.declaringTypeDeclaration(astRoot).getMethods()) {
+ if (methodDeclaration.getName().getFullyQualifiedName().equals(methodName)
+ && (methodDeclaration.parameters().size() == 0)) {
+ return methodDeclaration;
+ }
+ }
+ return null;
+ }
+
+
+ // ********** Attribute implementation **********
+
+ @Override
+ public boolean isMethod() {
+ return true;
+ }
+
+ /**
+ * "foo" returned for a method named "getFoo" or "isFoo"
+ */
+ @Override
+ public String attributeName() {
+ String methodName = super.getName();
+ int beginIndex = 0;
+ if (methodName.startsWith("get")) {
+ beginIndex = 3;
+ } else if (methodName.startsWith("is")) {
+ beginIndex = 2;
+ }
+ return Introspector.decapitalize(methodName.substring(beginIndex));
+ }
+
+ @Override
+ public String typeSignature() {
+ try {
+ return this.jdtMethod().getReturnType();
+ } catch (JavaModelException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ModifiedDeclaration.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ModifiedDeclaration.java
new file mode 100644
index 0000000000..564a22e910
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ModifiedDeclaration.java
@@ -0,0 +1,442 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+import org.eclipse.jdt.core.ICompilationUnit;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.dom.AST;
+import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.Annotation;
+import org.eclipse.jdt.core.dom.BodyDeclaration;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jdt.core.dom.IExtendedModifier;
+import org.eclipse.jdt.core.dom.ImportDeclaration;
+import org.eclipse.jdt.core.dom.SingleVariableDeclaration;
+import org.eclipse.jdt.core.dom.VariableDeclarationExpression;
+import org.eclipse.jdt.core.dom.VariableDeclarationStatement;
+import org.eclipse.jpt.utility.internal.StringTools;
+import org.eclipse.jpt.utility.internal.iterators.FilteringIterator;
+
+/**
+ * Define a wrapper that provides a common protocol for all the various AST
+ * declarations that have modifiers (i.e. there are a number of AST node
+ * classes that implement the method #modifiers(), but they do not implement
+ * a common interface):
+ * BodyDeclaration
+ * SingleVariableDeclaration
+ * VariableDeclarationExpression
+ * VariableDeclarationStatement
+ */
+public class ModifiedDeclaration {
+ private final Adapter adapter;
+
+
+ // ********** constructors **********
+
+ public ModifiedDeclaration(Adapter adapter) {
+ super();
+ this.adapter = adapter;
+ }
+
+ public ModifiedDeclaration(BodyDeclaration declaration) {
+ this(new BodyDeclarationAdapter(declaration));
+ }
+
+ public ModifiedDeclaration(SingleVariableDeclaration declaration) {
+ this(new SingleVariableDeclarationAdapter(declaration));
+ }
+
+ public ModifiedDeclaration(VariableDeclarationExpression declaration) {
+ this(new VariableDeclarationExpressionAdapter(declaration));
+ }
+
+ public ModifiedDeclaration(VariableDeclarationStatement declaration) {
+ this(new VariableDeclarationStatementAdapter(declaration));
+ }
+
+
+ // ********** public methods **********
+
+ /**
+ * Return the "declaration" AST node.
+ */
+ public ASTNode getDeclaration() {
+ return this.adapter.getDeclaration();
+ }
+
+ /**
+ * Return the declaration's list of modifiers.
+ * Element type: org.eclipse.jdt.core.dom.IExtendedModifier
+ */
+ public List<IExtendedModifier> modifiers() {
+ return this.adapter.modifiers();
+ }
+
+ /**
+ * Return the "declaration" AST.
+ */
+ public AST getAST() {
+ return this.getDeclaration().getAST();
+ }
+
+ public CompilationUnit compilationUnit() {
+ return (CompilationUnit) this.getDeclaration().getRoot();
+ }
+
+ public ICompilationUnit iCompilationUnit() {
+ return (ICompilationUnit) this.compilationUnit().getJavaElement();
+ }
+
+ public IType type() {
+ return this.compilationUnit().getTypeRoot().findPrimaryType();
+ }
+
+ /**
+ * Return the declaration's annotations.
+ */
+ public Iterator<Annotation> annotations() {
+ return new FilteringIterator<Annotation>(this.modifiers().iterator()) {
+ @Override
+ protected boolean accept(Object next) {
+ return ((IExtendedModifier) next).isAnnotation();
+ }
+ };
+ }
+
+ /**
+ * Return the *first* annotation with the specified name.
+ * Return null if the declaration has no such annotation.
+ */
+ public Annotation getAnnotationNamed(String annotationName) {
+ for (Iterator<Annotation> stream = this.annotations(); stream.hasNext(); ) {
+ Annotation annotation = stream.next();
+ if (this.annotationIsNamed(annotation, annotationName)) {
+ return annotation;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Return whether the declaration has an annotation with the specified name.
+ */
+ public boolean containsAnnotationNamed(String annotationName) {
+ return this.getAnnotationNamed(annotationName) != null;
+ }
+
+ /**
+ * Add the specified annotation to the declaration.
+ * By convention annotations precede the "standard" (JLS2) modifiers;
+ * though, technically, they can be interspersed.
+ */
+ public void addAnnotation(Annotation annotation) {
+ List<IExtendedModifier> modifiers = this.modifiers();
+ for (ListIterator<IExtendedModifier> stream = modifiers.listIterator(); stream.hasNext(); ) {
+ if (stream.next().isModifier()) {
+ stream.previous(); // put the annotation *before* the first "standard" (JLS2) modifier
+ stream.add(annotation);
+ return;
+ }
+ }
+ modifiers.add(annotation); // just tack it on to the end
+ }
+
+ /**
+ * Remove the *first* annotation with the specified name from the declaration.
+ */
+ public void removeAnnotationNamed(String annotationName) {
+ for (Iterator<IExtendedModifier> stream = this.modifiers().iterator(); stream.hasNext(); ) {
+ IExtendedModifier modifier = stream.next();
+ if (modifier.isAnnotation()) {
+ if (this.annotationIsNamed((Annotation) modifier, annotationName)) {
+ stream.remove();
+ break;
+ }
+ }
+ }
+ }
+
+ /**
+ * Remove the specified annotation from the declaration.
+ */
+ public void removeAnnotation(Annotation annotation) {
+ if ( ! this.modifiers().remove(annotation)) {
+ throw new IllegalArgumentException("invalid annotation: " + annotation);
+ }
+ }
+
+ /**
+ * Replace the specified old annotation with the specified new annotation.
+ */
+ public void replaceAnnotation(Annotation oldAnnotation, Annotation newAnnotation) {
+ for (ListIterator<IExtendedModifier> stream = this.modifiers().listIterator(); stream.hasNext(); ) {
+ if (stream.next().equals(oldAnnotation)) {
+ stream.set(newAnnotation);
+ return;
+ }
+ }
+ throw new IllegalArgumentException("invalid old annotation: " + oldAnnotation);
+ }
+
+ /**
+ * Replace the specified old annotation with the specified new annotation.
+ * If there is no annotation with the specified name, simply add the new
+ * annotation to the declaration's modifiers.
+ */
+ public void replaceAnnotationNamed(String oldAnnotationName, Annotation newAnnotation) {
+ List<IExtendedModifier> modifiers = this.modifiers();
+ for (ListIterator<IExtendedModifier> stream = modifiers.listIterator(); stream.hasNext(); ) {
+ IExtendedModifier modifier = stream.next();
+ if (modifier.isAnnotation()) {
+ if (this.annotationIsNamed((Annotation) modifier, oldAnnotationName)) {
+ stream.set(newAnnotation);
+ return;
+ }
+ }
+ }
+ this.addAnnotation(newAnnotation);
+ }
+
+ /**
+ * Add the specified import to the declaration's compilation unit.
+ */
+ public void addImport(String importName) {
+ this.addImport(importName, false);
+ }
+
+ /**
+ * Add the specified static import to the declaration's compilation unit.
+ */
+ public void addStaticImport(String importName) {
+ this.addImport(importName, true);
+ }
+
+ /**
+ * Add the specified import to the declaration's compilation unit.
+ */
+ public void addImport(String importName, boolean static_) {
+ if (importName.indexOf('.') != -1) {
+ this.addImportTo(this.compilationUnit(), importName, static_);
+ }
+ }
+
+ public String importFor(String shortName) {
+ return this.importFor(shortName, false);
+ }
+
+ public String staticImportFor(String shortName) {
+ return this.importFor(shortName, true);
+ }
+
+ // TODO handle wildcards
+ public String importFor(String shortName, boolean static_) {
+ if (shortName.indexOf('.') != -1) {
+ return shortName;
+ }
+ List<ImportDeclaration> imports = this.imports(this.compilationUnit());
+ for (ImportDeclaration importDeclaration : imports) {
+ if (this.importIsFor(importDeclaration, shortName, static_)) {
+ return importDeclaration.getName().getFullyQualifiedName();
+ }
+ }
+ return null;
+ }
+
+ protected boolean importIsFor(ImportDeclaration importDeclaration, String shortName, boolean static_) {
+ if (importDeclaration.isStatic() != static_) {
+ return false;
+ }
+ String importDeclarationName = importDeclaration.getName().getFullyQualifiedName();
+ return importDeclarationName.endsWith(shortName);
+ }
+
+ @Override
+ public String toString() {
+ return StringTools.buildToStringFor(this, this.adapter.toString());
+ }
+
+
+ // ********** internal methods **********
+
+ /**
+ * Return whether the specified annotation has the specified name.
+ */
+ boolean annotationIsNamed(Annotation annotation, String name) {
+ String qualifiedName = this.qualifiedName(annotation);
+ return (qualifiedName != null) && qualifiedName.equals(name);
+ }
+
+ private String qualifiedName(Annotation annotation) {
+ String name = annotation.getTypeName().getFullyQualifiedName();
+ if (name.indexOf('.') != -1) {
+ return name; // name is already qualified
+ }
+ String resolvedName = JDTTools.resolve(name, this.type());
+ if (resolvedName != null) {
+ return resolvedName;
+ }
+ // hack(?): check for a matching import because when moving a stand-alone
+ // annotation to its container in CombinationIndexedDeclarationAnnotationAdapter
+ // the container's import is added but then it won't "resolve" upon
+ // subsequent lookups... :-(
+ return this.importFor(name); // look for a matching import
+ }
+
+ /**
+ * Return whether the specified import was added without a collision.
+ */
+ // TODO handle collisions (e.g. java.util.Date vs. java.sql.Date)
+ protected void addImportTo(CompilationUnit astRoot, String importName, boolean static_) {
+ List<ImportDeclaration> imports = this.imports(astRoot);
+ if (this.importsInclude(imports, importName, static_)) {
+ return;
+ }
+ AST ast = astRoot.getAST();
+ ImportDeclaration import_ = ast.newImportDeclaration();
+ import_.setName(ast.newName(importName));
+ import_.setStatic(static_);
+ imports.add(import_);
+ }
+
+ @SuppressWarnings("unchecked")
+ protected List<ImportDeclaration> imports(CompilationUnit astRoot) {
+ return astRoot.imports();
+ }
+
+ protected boolean importsInclude(List<ImportDeclaration> imports, String importName, boolean static_) {
+ for (ImportDeclaration importDeclaration : imports) {
+ if (this.importIncludes(importDeclaration, importName, static_)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ protected boolean importIncludes(ImportDeclaration importDeclaration, String importName, boolean static_) {
+ if (importDeclaration.isStatic() != static_) {
+ return false;
+ }
+ String importDeclarationName = importDeclaration.getName().getFullyQualifiedName();
+ if (importName.equals(importDeclarationName)) {
+ return true;
+ }
+ if (importDeclaration.isOnDemand()
+ && this.onDemandNameFor(importName).equals(importDeclarationName)) {
+ return true;
+ }
+ return false;
+ }
+
+ protected String onDemandNameFor(String importName) {
+ int lastPeriod = importName.lastIndexOf('.');
+ return (lastPeriod == -1) ? "" : importName.substring(0, lastPeriod);
+ }
+
+
+ // ********** declaration adapter interface and implementations **********
+
+ /**
+ * Define common protocol among the various "declarations".
+ */
+ public interface Adapter {
+
+ /**
+ * Return the adapted "declaration".
+ */
+ ASTNode getDeclaration();
+
+ /**
+ * Return the "declaration"'s list of modifiers.
+ * Element type: org.eclipse.jdt.core.dom.IExtendedModifier
+ */
+ List<IExtendedModifier> modifiers();
+
+ }
+
+ public static class BodyDeclarationAdapter implements Adapter {
+ private final BodyDeclaration declaration;
+ public BodyDeclarationAdapter(BodyDeclaration declaration) {
+ super();
+ this.declaration = declaration;
+ }
+ public ASTNode getDeclaration() {
+ return this.declaration;
+ }
+ @SuppressWarnings("unchecked")
+ public List<IExtendedModifier> modifiers() {
+ return this.declaration.modifiers();
+ }
+ @Override
+ public String toString() {
+ return StringTools.buildToStringFor(this, this.declaration.toString());
+ }
+ }
+
+ public static class SingleVariableDeclarationAdapter implements Adapter {
+ private final SingleVariableDeclaration declaration;
+ public SingleVariableDeclarationAdapter(SingleVariableDeclaration declaration) {
+ super();
+ this.declaration = declaration;
+ }
+ public ASTNode getDeclaration() {
+ return this.declaration;
+ }
+ @SuppressWarnings("unchecked")
+ public List<IExtendedModifier> modifiers() {
+ return this.declaration.modifiers();
+ }
+ @Override
+ public String toString() {
+ return StringTools.buildToStringFor(this, this.declaration.toString());
+ }
+ }
+
+ public static class VariableDeclarationExpressionAdapter implements Adapter {
+ private final VariableDeclarationExpression declaration;
+ public VariableDeclarationExpressionAdapter(VariableDeclarationExpression declaration) {
+ super();
+ this.declaration = declaration;
+ }
+ public ASTNode getDeclaration() {
+ return this.declaration;
+ }
+ @SuppressWarnings("unchecked")
+ public List<IExtendedModifier> modifiers() {
+ return this.declaration.modifiers();
+ }
+ @Override
+ public String toString() {
+ return StringTools.buildToStringFor(this, this.declaration.toString());
+ }
+ }
+
+ public static class VariableDeclarationStatementAdapter implements Adapter {
+ private final VariableDeclarationStatement declaration;
+ public VariableDeclarationStatementAdapter(VariableDeclarationStatement declaration) {
+ super();
+ this.declaration = declaration;
+ }
+ public ASTNode getDeclaration() {
+ return this.declaration;
+ }
+ @SuppressWarnings("unchecked")
+ public List<IExtendedModifier> modifiers() {
+ return this.declaration.modifiers();
+ }
+ @Override
+ public String toString() {
+ return StringTools.buildToStringFor(this, this.declaration.toString());
+ }
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NameStringExpressionConverter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NameStringExpressionConverter.java
new file mode 100644
index 0000000000..3eaf04e644
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NameStringExpressionConverter.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import org.eclipse.jdt.core.dom.AST;
+import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.Expression;
+import org.eclipse.jdt.core.dom.Name;
+
+/**
+ * Convert an expression to/from a string representation of a name/identifier
+ * (e.g. "com.xxx.Foo.VALUE1" or "value").
+ */
+public final class NameStringExpressionConverter extends AbstractExpressionConverter {
+ private static ExpressionConverter INSTANCE;
+
+ /**
+ * Return the singleton.
+ */
+ public static ExpressionConverter instance() {
+ if (INSTANCE == null) {
+ INSTANCE = new NameStringExpressionConverter();
+ }
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private NameStringExpressionConverter() {
+ super();
+ }
+
+ @Override
+ protected Expression convert_(Object o, AST ast) {
+ return ast.newName((String) o);
+ }
+
+ @Override
+ protected Object convert_(Expression expression) {
+ switch (expression.getNodeType()) {
+ case ASTNode.QUALIFIED_NAME:
+ case ASTNode.SIMPLE_NAME:
+ return ((Name) expression).getFullyQualifiedName();
+ default:
+ return null;
+ }
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NestedDeclarationAnnotationAdapter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NestedDeclarationAnnotationAdapter.java
new file mode 100644
index 0000000000..b373a16599
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NestedDeclarationAnnotationAdapter.java
@@ -0,0 +1,93 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import org.eclipse.jdt.core.dom.Annotation;
+import org.eclipse.jdt.core.dom.Expression;
+import org.eclipse.jdt.core.dom.MemberValuePair;
+import org.eclipse.jdt.core.dom.SingleMemberAnnotation;
+
+/**
+ * Manipulate an annotation that is embedded as an element within
+ * another annotation, e.g.
+ * <pre>
+ * &#64;Outer(foo=&#64;Inner)
+ * private int id;
+ * outerAnnotationAdapter = AnnotationAdapter<&#64;Outer>
+ * elementName = "foo"
+ * annotationName = "Inner"
+ * </pre>
+ */
+public class NestedDeclarationAnnotationAdapter extends AbstractNestedDeclarationAnnotationAdapter {
+
+
+ // ********** constructors **********
+
+ /**
+ * default element name is "value";
+ * default behavior is to remove the outer annotation when it is empty
+ */
+ public NestedDeclarationAnnotationAdapter(DeclarationAnnotationAdapter outerAnnotationAdapter, String annotationName) {
+ super(outerAnnotationAdapter, annotationName);
+ }
+
+ /**
+ * default behavior is to remove the outer annotation when it is empty
+ */
+ public NestedDeclarationAnnotationAdapter(DeclarationAnnotationAdapter outerAnnotationAdapter, String elementName, String annotationName) {
+ super(outerAnnotationAdapter, elementName, annotationName);
+ }
+
+ public NestedDeclarationAnnotationAdapter(DeclarationAnnotationAdapter outerAnnotationAdapter, String elementName, String annotationName, boolean removeOuterAnnotationWhenEmpty) {
+ super(outerAnnotationAdapter, elementName, annotationName, removeOuterAnnotationWhenEmpty);
+ }
+
+
+ // ********** AbstractNestedDeclarationAnnotationAdapter implementation **********
+
+ @Override
+ protected Annotation getAnnotation(Expression value) {
+ return this.annotationValue(value);
+ }
+
+ @Override
+ protected Expression buildNewInnerExpression(Annotation inner) {
+ return inner;
+ }
+
+ /**
+ * the annotation is the expression itself, so the annotation cannot be
+ * "removed" from itself - return 'false'
+ */
+ @Override
+ protected boolean removeAnnotation(ModifiedDeclaration declaration, Annotation outer, Expression value) {
+ return false;
+ }
+
+ /**
+ * <pre>
+ * &#64;Outer("lorem ipsum") => &#64;Outer(&#64;Inner)
+ * </pre>
+ */
+ @Override
+ protected void modifyAnnotationValue(SingleMemberAnnotation outer, Annotation inner) {
+ // replace(?) the current element value
+ outer.setValue(inner);
+ }
+
+ /**
+ * Simply set the pair's value.
+ */
+ @Override
+ protected void modifyMemberValuePair(MemberValuePair pair, Annotation inner) {
+ pair.setValue(inner);
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NestedIndexedDeclarationAnnotationAdapter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NestedIndexedDeclarationAnnotationAdapter.java
new file mode 100644
index 0000000000..78a9988d76
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NestedIndexedDeclarationAnnotationAdapter.java
@@ -0,0 +1,331 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import java.util.List;
+import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.Annotation;
+import org.eclipse.jdt.core.dom.ArrayInitializer;
+import org.eclipse.jdt.core.dom.Expression;
+import org.eclipse.jdt.core.dom.MemberValuePair;
+import org.eclipse.jdt.core.dom.NormalAnnotation;
+import org.eclipse.jdt.core.dom.SingleMemberAnnotation;
+
+/**
+ * Manipulate an annotation that is embedded in an element array within
+ * another annotation, e.g.
+ * <pre>
+ * &#64;Outer(foo={&#64;Inner("zero"), &#64;Inner("one"), &#64;Inner("two")})
+ * private int id;
+ * outerAnnotationAdapter = AnnotationAdapter<&#64;Outer>
+ * elementName = "foo"
+ * index = 0-2
+ * annotationName = "Inner"
+ * </pre>
+ */
+public class NestedIndexedDeclarationAnnotationAdapter
+ extends AbstractNestedDeclarationAnnotationAdapter
+ implements IndexedDeclarationAnnotationAdapter
+{
+ private int index;
+
+
+ // ********** constructors **********
+
+ /**
+ * default element name is "value";
+ * default behavior is to remove the outer annotation when it is empty
+ */
+ public NestedIndexedDeclarationAnnotationAdapter(DeclarationAnnotationAdapter annotationAdapter, int index, String annotationName) {
+ super(annotationAdapter, annotationName);
+ this.index = index;
+ }
+
+ /**
+ * default behavior is to remove the outer annotation when it is empty
+ */
+ public NestedIndexedDeclarationAnnotationAdapter(DeclarationAnnotationAdapter annotationAdapter, String elementName, int index, String annotationName) {
+ super(annotationAdapter, elementName, annotationName);
+ this.index = index;
+ }
+
+ public NestedIndexedDeclarationAnnotationAdapter(DeclarationAnnotationAdapter annotationAdapter, String elementName, int index, String annotationName, boolean removeOuterAnnotationWhenEmpty) {
+ super(annotationAdapter, elementName, annotationName, removeOuterAnnotationWhenEmpty);
+ this.index = index;
+ }
+
+
+ // ********** AbstractNestedDeclarationAnnotationAdapter implementation **********
+
+ @Override
+ protected Annotation getAnnotation(Expression value) {
+ if (value.getNodeType() == ASTNode.ARRAY_INITIALIZER) {
+ return this.getAnnotation((ArrayInitializer) value);
+ }
+ return (this.index == 0) ? this.annotationValue(value) : null;
+ }
+
+ @Override
+ protected Expression buildNewInnerExpression(Annotation inner) {
+ return (this.index == 0) ? inner : (Expression) this.buildNewInnerArrayInitializer(inner);
+ }
+
+ @Override
+ protected boolean removeAnnotation(ModifiedDeclaration declaration, Annotation outer, Expression value) {
+ if (value.getNodeType() == ASTNode.ARRAY_INITIALIZER) {
+ this.removeAnnotation(declaration, outer, (ArrayInitializer) value);
+ return true;
+ }
+ // if our index is greater than zero, but we don't have an array,
+ // then the annotation must already be gone
+ return (this.index != 0);
+ }
+
+ /**
+ * <pre>
+ * &#64;Outer({&#64;Inner(0), &#64;Inner(1)}) => &#64;Outer({&#64;Inner(0), &#64;Inner(1), &#64;Inner(2)})
+ * or
+ * &#64;Outer("lorem ipsum") => &#64;Outer(&#64;Inner(0))
+ * or
+ * &#64;Outer(&#64;Inner(0)) => &#64;Outer({&#64;Inner(0), &#64;Inner(1)})
+ * </pre>
+ */
+ @Override
+ protected void modifyAnnotationValue(SingleMemberAnnotation outer, Annotation inner) {
+ this.modifyExpression(outer, SINGLE_MEMBER_ANNOTATION_EXPRESSION_PROVIDER, inner);
+ }
+
+ /**
+ * <pre>
+ * &#64;Outer(text="lorem ipsum") => &#64;Outer(text="lorem ipsum", foo=&#64;Inner(0))
+ * or
+ * &#64;Outer(foo={&#64;Inner(0), &#64;Inner(1)}) => &#64;Outer(foo={&#64;Inner(0), &#64;Inner(1), &#64;Inner(2)})
+ * or
+ * &#64;Outer(foo="lorem ipsum") => &#64;Outer(foo=&#64;Inner(0))
+ * or
+ * &#64;Outer(foo=&#64;NotInner) => &#64;Outer(foo=&#64;Inner(0))
+ * or
+ * &#64;Outer(foo=&#64;Inner(0)) => &#64;Outer(foo={&#64;Inner(0), &#64;Inner(1)})
+ * </pre>
+ */
+ @Override
+ protected void modifyMemberValuePair(MemberValuePair pair, Annotation inner) {
+ this.modifyExpression(pair, MEMBER_VALUE_PAIR_EXPRESSION_PROVIDER, inner);
+ }
+
+
+ // ********** IndexedDeclarationAnnotationAdapter implementation **********
+
+ public int getIndex() {
+ return this.index;
+ }
+
+ /**
+ * Move the annotation to the specified index, leaving its original
+ * position cleared out.
+ */
+ public void moveAnnotation(int newIndex, ModifiedDeclaration declaration) {
+ int oldIndex = this.index;
+ if (newIndex == oldIndex) {
+ return;
+ }
+
+ Annotation original = this.getAnnotation(declaration);
+ if (original == null) {
+ this.index = newIndex;
+ this.removeAnnotation(declaration); // clear out the new location (?)
+ } else {
+ Annotation copy = (Annotation) ASTNode.copySubtree(original.getAST(), original);
+ this.index = newIndex;
+ this.addAnnotation(declaration, copy); // install the copy in the new location
+ this.index = oldIndex;
+ this.removeAnnotation(declaration); // go back and clear out the original location (AFTER the move)
+ this.index = newIndex;
+ }
+ }
+
+
+ // ********** internal methods **********
+
+ /**
+ * Return the adapter's annotation from the specified array initializer.
+ */
+ private Annotation getAnnotation(ArrayInitializer value) {
+ List<Expression> expressions = this.expressions(value);
+ return (this.index >= expressions.size()) ? null : this.annotationValue(expressions.get(this.index));
+ }
+
+ /**
+ * Build a new array initializer to hold the specified annotation,
+ * padding it with 'null' literals as necessary
+ */
+ private ArrayInitializer buildNewInnerArrayInitializer(Annotation inner) {
+ ArrayInitializer ai = inner.getAST().newArrayInitializer();
+ this.addInnerToExpressions(inner, this.expressions(ai));
+ return ai;
+ }
+
+ /**
+ * Add the specified annotation to the specified array initializer,
+ * padding it with 'null' literals as necessary
+ */
+ private void addInnerToExpressions(Annotation inner, List<Expression> expressions) {
+ if (expressions.size() > this.index) {
+ throw new IllegalStateException("expressions size is greater than index - size: " + expressions.size() + " - index: " + this.index);
+ }
+ while (expressions.size() < this.index) {
+ expressions.add(inner.getAST().newNullLiteral());
+ }
+ expressions.add(inner);
+ }
+
+ /**
+ * Remove the adapter's annotation from the specified array initializer.
+ */
+ private void removeAnnotation(ModifiedDeclaration declaration, Annotation outer, ArrayInitializer value) {
+ List<Expression> expressions = this.expressions(value);
+ if (this.index >= expressions.size()) {
+ return; // avoid IndexOutOfBoundsException(?)
+ }
+ Annotation inner = this.annotationValue(expressions.get(this.index));
+ if (inner == null) {
+ return;
+ }
+ if ( ! this.nameMatches(declaration, inner)) {
+ return;
+ }
+ if (this.index == (expressions.size() - 1)) {
+ expressions.remove(this.index);
+ } else {
+ expressions.set(this.index, value.getAST().newNullLiteral());
+ }
+ this.trimExpressions(declaration, outer, expressions);
+ }
+
+ /**
+ * Strip all the null literals off the end of the specified list of expressions
+ * and normalize the specified outer annotation.
+ */
+ private void trimExpressions(ModifiedDeclaration declaration, Annotation outer, List<Expression> expressions) {
+ // start at the end of the list
+ for (int i = expressions.size(); i-- > 0; ) {
+ if (expressions.get(i).getNodeType() == ASTNode.NULL_LITERAL) {
+ expressions.remove(i);
+ } else {
+ break; // stop with the first non-null literal encountered
+ }
+ }
+ switch (expressions.size()) {
+ case 0:
+ this.removeElementAndNormalize(declaration, outer);
+ break;
+ case 1:
+ this.convertArrayToLastRemainingExpression(outer, expressions.get(0));
+ break;
+ default:
+ break;
+ }
+ }
+
+ /**
+ * When there is only a single element in an array initializer, convert the
+ * expression to be just the single element; e.g.
+ * <pre>
+ * &#64;Foo(xxx={"abc"}) => &#64;Foo(xxx="abc")
+ * or
+ * &#64;Foo({"abc"}) => &#64;Foo("abc")
+ * </pre>
+ */
+ private void convertArrayToLastRemainingExpression(Annotation outer, Expression lastValue) {
+ lastValue = (Expression) ASTNode.copySubtree(lastValue.getAST(), lastValue);
+ if (outer.isNormalAnnotation()) {
+ this.memberValuePair((NormalAnnotation) outer).setValue(lastValue);
+ } else if (outer.isSingleMemberAnnotation()) {
+ ((SingleMemberAnnotation) outer).setValue(lastValue);
+ } else {
+ throw new IllegalArgumentException("unexpected annotation type: " + outer);
+ }
+ }
+
+ /**
+ * Manipulate the specified expression appropriately.
+ * If it is an array initializer, add the specified annotation to it.
+ * If it is not, replace the expression or convert it into an array
+ * initializer.
+ */
+ private void modifyExpression(ASTNode node, ExpressionProvider expProvider, Annotation inner) {
+ Expression value = expProvider.getExpression(node);
+ if (value.getNodeType() == ASTNode.ARRAY_INITIALIZER) {
+ // ignore the other entries in the array initializer(?) - they may not be matching Annotations...
+ List<Expression> expressions = this.expressions((ArrayInitializer) value);
+ if (this.index >= expressions.size()) {
+ this.addInnerToExpressions(inner, expressions);
+ } else {
+ expressions.set(this.index, inner);
+ }
+ } else {
+ if (this.index == 0) {
+ // replace whatever was there before
+ expProvider.setExpression(node, inner);
+ } else {
+ // convert to an array
+ ArrayInitializer ai = inner.getAST().newArrayInitializer();
+ List<Expression> expressions = this.expressions(ai);
+ expressions.add((Expression) ASTNode.copySubtree(value.getAST(), value));
+ this.addInnerToExpressions(inner, expressions);
+ expProvider.setExpression(node, ai);
+ }
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ protected List<Expression> expressions(ArrayInitializer ai) {
+ return ai.expressions();
+ }
+
+
+ // ********** expression providers **********
+
+ /**
+ * define interface that allows us to "re-use" the code in
+ * #modifyExpression(ASTNode, ExpressionProvider, Annotation)
+ */
+ private interface ExpressionProvider {
+ Expression getExpression(ASTNode node);
+ void setExpression(ASTNode node, Expression expression);
+ }
+
+ private static final ExpressionProvider MEMBER_VALUE_PAIR_EXPRESSION_PROVIDER = new ExpressionProvider() {
+ public Expression getExpression(ASTNode node) {
+ return ((MemberValuePair) node).getValue();
+ }
+ public void setExpression(ASTNode node, Expression expression) {
+ ((MemberValuePair) node).setValue(expression);
+ }
+ @Override
+ public String toString() {
+ return "MemberValuePairExpressionProvider";
+ }
+ };
+
+ private static final ExpressionProvider SINGLE_MEMBER_ANNOTATION_EXPRESSION_PROVIDER = new ExpressionProvider() {
+ public Expression getExpression(ASTNode node) {
+ return ((SingleMemberAnnotation) node).getValue();
+ }
+ public void setExpression(ASTNode node, Expression expression) {
+ ((SingleMemberAnnotation) node).setValue(expression);
+ }
+ @Override
+ public String toString() {
+ return "SingleMemberAnnotationExpressionProvider";
+ }
+ };
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NullDeclarationAnnotationAdapter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NullDeclarationAnnotationAdapter.java
new file mode 100644
index 0000000000..9dc042ea6e
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NullDeclarationAnnotationAdapter.java
@@ -0,0 +1,80 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.Annotation;
+import org.eclipse.jdt.core.dom.MarkerAnnotation;
+import org.eclipse.jdt.core.dom.NormalAnnotation;
+import org.eclipse.jdt.core.dom.SingleMemberAnnotation;
+
+/**
+ * Behaviorless implementation.
+ */
+public final class NullDeclarationAnnotationAdapter
+ implements IndexedDeclarationAnnotationAdapter
+{
+
+ // singleton
+ private static final NullDeclarationAnnotationAdapter INSTANCE = new NullDeclarationAnnotationAdapter();
+
+ /**
+ * Return the singleton.
+ */
+ public static IndexedDeclarationAnnotationAdapter instance() {
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private NullDeclarationAnnotationAdapter() {
+ super();
+ }
+
+
+ // ********** DeclarationAnnotationAdapter implementation **********
+
+ public Annotation getAnnotation(ModifiedDeclaration declaration) {
+ return null;
+ }
+
+ public MarkerAnnotation newMarkerAnnotation(ModifiedDeclaration declaration) {
+ return null;
+ }
+
+ public SingleMemberAnnotation newSingleMemberAnnotation(ModifiedDeclaration declaration) {
+ return null;
+ }
+
+ public NormalAnnotation newNormalAnnotation(ModifiedDeclaration declaration) {
+ return null;
+ }
+
+ public void removeAnnotation(ModifiedDeclaration declaration) {
+ // do nothing
+ }
+
+ public ASTNode astNode(ModifiedDeclaration declaration) {
+ return declaration.getDeclaration();
+ }
+
+
+ // ********** IndexedDeclarationAnnotationAdapter implementation **********
+
+ public int getIndex() {
+ return -1;
+ }
+
+ public void moveAnnotation(int newIndex, ModifiedDeclaration declaration) {
+ // do nothing
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NullDeclarationAnnotationElementAdapter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NullDeclarationAnnotationElementAdapter.java
new file mode 100644
index 0000000000..7a3c82fd20
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NullDeclarationAnnotationElementAdapter.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.Expression;
+
+/**
+ * Behaviorless implementation.
+ */
+public class NullDeclarationAnnotationElementAdapter implements DeclarationAnnotationElementAdapter {
+
+ // singleton
+ private static final NullDeclarationAnnotationElementAdapter INSTANCE = new NullDeclarationAnnotationElementAdapter();
+
+ /**
+ * Return the singleton.
+ */
+ public static DeclarationAnnotationElementAdapter instance() {
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private NullDeclarationAnnotationElementAdapter() {
+ super();
+ }
+
+ public Object getValue(ModifiedDeclaration declaration) {
+ return null;
+ }
+
+ public void setValue(Object value, ModifiedDeclaration declaration) {
+ // do nothing
+ }
+
+ public ASTNode astNode(ModifiedDeclaration declaration) {
+ return declaration.getDeclaration();
+ }
+
+ public Expression expression(ModifiedDeclaration declaration) {
+ return null;
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NullExpressionConverter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NullExpressionConverter.java
new file mode 100644
index 0000000000..e237327f70
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NullExpressionConverter.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import org.eclipse.jdt.core.dom.AST;
+import org.eclipse.jdt.core.dom.Expression;
+import org.eclipse.jpt.utility.internal.StringTools;
+
+/**
+ * No conversion.
+ */
+public final class NullExpressionConverter implements ExpressionConverter {
+ private static ExpressionConverter INSTANCE;
+
+ /**
+ * Return the singleton.
+ */
+ public static ExpressionConverter instance() {
+ if (INSTANCE == null) {
+ INSTANCE = new NullExpressionConverter();
+ }
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private NullExpressionConverter() {
+ super();
+ }
+
+ public Expression convert(Object o, AST ast) {
+ return (Expression) o;
+ }
+
+ public Object convert(Expression expression) {
+ return expression;
+ }
+
+ @Override
+ public String toString() {
+ return StringTools.buildToStringFor(this);
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NumberStringExpressionConverter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NumberStringExpressionConverter.java
new file mode 100644
index 0000000000..36077cb5c4
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/NumberStringExpressionConverter.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import org.eclipse.jdt.core.dom.AST;
+import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.Expression;
+import org.eclipse.jdt.core.dom.NumberLiteral;
+
+/**
+ * Convert an expression to/from a string representation of a number
+ * (e.g. "48").
+ */
+public final class NumberStringExpressionConverter extends AbstractExpressionConverter {
+ private static ExpressionConverter INSTANCE;
+
+ /**
+ * Return the singleton.
+ */
+ public static ExpressionConverter instance() {
+ if (INSTANCE == null) {
+ INSTANCE = new NumberStringExpressionConverter();
+ }
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private NumberStringExpressionConverter() {
+ super();
+ }
+
+ @Override
+ protected Expression convert_(Object o, AST ast) {
+ return ast.newNumberLiteral((String) o);
+ }
+
+ @Override
+ protected Object convert_(Expression expression) {
+ return (expression.getNodeType() == ASTNode.NUMBER_LITERAL) ?
+ ((NumberLiteral) expression).getToken()
+ :
+ null;
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/PrimitiveTypeStringExpressionConverter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/PrimitiveTypeStringExpressionConverter.java
new file mode 100644
index 0000000000..6fe837c663
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/PrimitiveTypeStringExpressionConverter.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import org.eclipse.jdt.core.dom.AST;
+import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.Expression;
+import org.eclipse.jdt.core.dom.PrimitiveType;
+import org.eclipse.jdt.core.dom.TypeLiteral;
+
+/**
+ * Convert an expression to/from a string representation of a primitive type
+ * (e.g. "int").
+ */
+public final class PrimitiveTypeStringExpressionConverter extends AbstractExpressionConverter {
+ private static ExpressionConverter INSTANCE;
+
+ /**
+ * Return the singleton.
+ */
+ public static ExpressionConverter instance() {
+ if (INSTANCE == null) {
+ INSTANCE = new PrimitiveTypeStringExpressionConverter();
+ }
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private PrimitiveTypeStringExpressionConverter() {
+ super();
+ }
+
+ @Override
+ protected Expression convert_(Object o, AST ast) {
+ org.eclipse.jdt.core.dom.Type type = ast.newPrimitiveType(PrimitiveType.toCode((String) o));
+ TypeLiteral typeLiteral = ast.newTypeLiteral();
+ typeLiteral.setType(type);
+ return typeLiteral;
+ }
+
+ @Override
+ protected Object convert_(Expression expression) {
+ if (expression.getNodeType() == ASTNode.TYPE_LITERAL) {
+ org.eclipse.jdt.core.dom.Type type = ((TypeLiteral) expression).getType();
+ if (type.getNodeType() == ASTNode.PRIMITIVE_TYPE) {
+ return ((PrimitiveType) type).getPrimitiveTypeCode().toString();
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ShortCircuitAnnotationElementAdapter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ShortCircuitAnnotationElementAdapter.java
new file mode 100644
index 0000000000..ce763d7430
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/ShortCircuitAnnotationElementAdapter.java
@@ -0,0 +1,102 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jdt.core.dom.Expression;
+import org.eclipse.jpt.utility.internal.StringTools;
+
+/**
+ * Wrap another annotation element adapter and short-circuit the
+ * #setValue method if the value has not changed.
+ */
+public class ShortCircuitAnnotationElementAdapter
+ implements AnnotationElementAdapter
+{
+ /** the wrapped adapter */
+ private final AnnotationElementAdapter adapter;
+
+
+ // ********** constructor **********
+
+ public ShortCircuitAnnotationElementAdapter(Member member, DeclarationAnnotationElementAdapter daea) {
+ this(new MemberAnnotationElementAdapter(member, daea));
+ }
+
+ public ShortCircuitAnnotationElementAdapter(AnnotationElementAdapter adapter) {
+ super();
+ this.adapter = adapter;
+ }
+
+
+ // ********** AnnotationElementAdapter implementation **********
+
+ public Object getValue() {
+ return this.adapter.getValue();
+ }
+
+ public Object getValue(CompilationUnit astRoot) {
+ return this.adapter.getValue(astRoot);
+ }
+
+ public void setValue(Object value) {
+ this.setValue(this.adapter.getValue(), value);
+ }
+
+ public Expression expression() {
+ return this.adapter.expression();
+ }
+
+ public Expression expression(CompilationUnit astRoot) {
+ return this.adapter.expression(astRoot);
+ }
+
+ public ASTNode astNode() {
+ return this.adapter.astNode();
+ }
+
+ public ASTNode astNode(CompilationUnit astRoot) {
+ return this.adapter.astNode(astRoot);
+ }
+
+ @Override
+ public String toString() {
+ return StringTools.buildToStringFor(this, this.adapter);
+ }
+
+
+ // ********** internal methods **********
+
+ /**
+ * set the adapter's value to the specified new value if it
+ * is different from the specified old value
+ */
+ protected void setValue(Object oldValue, Object newValue) {
+ if (oldValue == null) {
+ if (newValue == null) { // null => null
+ // do nothing
+ } else { // null => object
+ this.adapter.setValue(newValue);
+ }
+ } else {
+ if (newValue == null) { // object => null
+ this.adapter.setValue(newValue);
+ } else { // object => object
+ if (newValue.equals(oldValue)) {
+ // do nothing
+ } else {
+ this.adapter.setValue(newValue);
+ }
+ }
+ }
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/SimpleBooleanAnnotationAdapter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/SimpleBooleanAnnotationAdapter.java
new file mode 100644
index 0000000000..23311e47ae
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/SimpleBooleanAnnotationAdapter.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.Annotation;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+
+/**
+ * Wrap an annotation adapter and return true if the annotation is simply
+ * present; return false if it is missing. The annotation can be of any type
+ * (marker, single member, or normal).
+ */
+public class SimpleBooleanAnnotationAdapter implements BooleanAnnotationAdapter {
+ private final AnnotationAdapter adapter;
+
+ public SimpleBooleanAnnotationAdapter(AnnotationAdapter adapter) {
+ super();
+ this.adapter = adapter;
+ }
+
+
+ // ********** BooleanAnnotationAdapter implementation **********
+
+ public ASTNode astNode() {
+ return this.adapter.astNode();
+ }
+
+ public ASTNode astNode(CompilationUnit astRoot) {
+ return this.adapter.astNode(astRoot);
+ }
+
+ public Annotation getAnnotation() {
+ return this.adapter.getAnnotation();
+ }
+
+ public Annotation getAnnotation(CompilationUnit astRoot) {
+ return this.adapter.getAnnotation(astRoot);
+ }
+
+ public boolean getValue() {
+ return this.getValue(this.getAnnotation());
+ }
+
+ public boolean getValue(CompilationUnit astRoot) {
+ return this.getValue(this.getAnnotation(astRoot));
+ }
+
+ public void setValue(boolean value) {
+ this.setValue(this.getValue(), value);
+ }
+
+
+ // ********** internal methods **********
+
+ protected boolean getValue(Annotation annotation) {
+ return annotation != null;
+ }
+
+ /**
+ * set the adapter's value to the specified new value if it
+ * is different from the specified old value
+ */
+ protected void setValue(boolean oldValue, boolean newValue) {
+ if (newValue != oldValue) {
+ this.setNewValue(newValue);
+ }
+ }
+
+ protected void setNewValue(boolean value) {
+ if (value) {
+ this.adapter.newMarkerAnnotation();
+ } else {
+ this.adapter.removeAnnotation();
+ }
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/SimpleDeclarationAnnotationAdapter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/SimpleDeclarationAnnotationAdapter.java
new file mode 100644
index 0000000000..77d3352d06
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/SimpleDeclarationAnnotationAdapter.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.Annotation;
+
+/**
+ * Manipulate an annotation with a specific name, e.g.
+ * <pre>
+ * &#64;Foo
+ * private int id;
+ * </pre>
+ *
+ * NB:
+ * If the declaration contains more than one annotation with the same
+ * name, the adapter will correspond to the first annotation with the specified
+ * name. (Also note that the compiler will not allow a declaration to be
+ * modified by multiple annotations with the same name, i.e. of the same type;
+ * so if there *are* multiple annotations of the same type, there are bigger
+ * problems to worry about than which annotation the adapter manipulates.)
+ */
+public class SimpleDeclarationAnnotationAdapter extends AbstractDeclarationAnnotationAdapter {
+
+
+ // ********** constructors **********
+
+ public SimpleDeclarationAnnotationAdapter(String annotationName) {
+ super(annotationName);
+ }
+
+
+ // ********** AbstractAnnotationAdapter implementation **********
+
+ @Override
+ public Annotation getAnnotation(ModifiedDeclaration declaration) {
+ return declaration.getAnnotationNamed(this.getAnnotationName());
+ }
+
+ @Override
+ public void removeAnnotation(ModifiedDeclaration declaration) {
+ declaration.removeAnnotationNamed(this.getAnnotationName());
+ }
+
+ @Override
+ protected void addAnnotation(ModifiedDeclaration declaration, Annotation annotation) {
+ declaration.replaceAnnotationNamed(this.getAnnotationName(), annotation);
+ }
+
+ @Override
+ public ASTNode astNode(ModifiedDeclaration declaration) {
+ // if the annotation is missing, return the declaration
+ Annotation annotation = this.getAnnotation(declaration);
+ return (annotation != null) ? annotation : declaration.getDeclaration();
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/SimpleTypeStringExpressionConverter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/SimpleTypeStringExpressionConverter.java
new file mode 100644
index 0000000000..30de666039
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/SimpleTypeStringExpressionConverter.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import org.eclipse.jdt.core.dom.AST;
+import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.Expression;
+import org.eclipse.jdt.core.dom.Name;
+import org.eclipse.jdt.core.dom.SimpleType;
+import org.eclipse.jdt.core.dom.TypeLiteral;
+
+/**
+ * Convert an expression to/from a string representation of a simple type
+ * (e.g. "java.lang.Object").
+ */
+public final class SimpleTypeStringExpressionConverter extends AbstractExpressionConverter {
+ private static ExpressionConverter INSTANCE;
+
+ /**
+ * Return the singleton.
+ */
+ public static ExpressionConverter instance() {
+ if (INSTANCE == null) {
+ INSTANCE = new SimpleTypeStringExpressionConverter();
+ }
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private SimpleTypeStringExpressionConverter() {
+ super();
+ }
+
+ @Override
+ protected Expression convert_(Object o, AST ast) {
+ Name name = ast.newName((String) o);
+ org.eclipse.jdt.core.dom.Type type = ast.newSimpleType(name);
+ TypeLiteral typeLiteral = ast.newTypeLiteral();
+ typeLiteral.setType(type);
+ return typeLiteral;
+ }
+
+ @Override
+ protected Object convert_(Expression expression) {
+ if (expression.getNodeType() == ASTNode.TYPE_LITERAL) {
+ org.eclipse.jdt.core.dom.Type type = ((TypeLiteral) expression).getType();
+ if (type.getNodeType() == ASTNode.SIMPLE_TYPE) {
+ return ((SimpleType) type).getName().getFullyQualifiedName();
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/StringExpressionConverter.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/StringExpressionConverter.java
new file mode 100644
index 0000000000..afde9f518f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/StringExpressionConverter.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import org.eclipse.jdt.core.dom.AST;
+import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.Expression;
+import org.eclipse.jdt.core.dom.StringLiteral;
+
+/**
+ * Convert an expression to/from a string (e.g. "text").
+ */
+public final class StringExpressionConverter extends AbstractExpressionConverter {
+ private static ExpressionConverter INSTANCE;
+
+ /**
+ * Return the singleton.
+ */
+ public static ExpressionConverter instance() {
+ if (INSTANCE == null) {
+ INSTANCE = new StringExpressionConverter();
+ }
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private StringExpressionConverter() {
+ super();
+ }
+
+ @Override
+ protected Expression convert_(Object o, AST ast) {
+ StringLiteral stringLiteral = ast.newStringLiteral();
+ stringLiteral.setLiteralValue((String) o);
+ return stringLiteral;
+ }
+
+ @Override
+ protected Object convert_(Expression expression) {
+ return (expression.getNodeType() == ASTNode.STRING_LITERAL) ?
+ ((StringLiteral) expression).getLiteralValue()
+ :
+ null;
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/Type.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/Type.java
new file mode 100644
index 0000000000..322012a311
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/jdtutility/Type.java
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.jdtutility;
+
+import java.util.List;
+import org.eclipse.jdt.core.Flags;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.dom.AbstractTypeDeclaration;
+import org.eclipse.jdt.core.dom.BodyDeclaration;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jdt.core.dom.TypeDeclaration;
+
+public class Type extends Member {
+
+ public Type(IType type) {
+ super(type);
+ }
+
+ public IType jdtType() {
+ return (IType) this.getJdtMember();
+ }
+
+ TypeDeclaration typeDeclaration() {
+ return (TypeDeclaration) this.bodyDeclaration();
+ }
+
+ TypeDeclaration typeDeclaration(CompilationUnit astRoot) {
+ return (TypeDeclaration) this.bodyDeclaration(astRoot);
+ }
+
+ public boolean isAbstract() {
+ try {
+ return Flags.isAbstract(this.jdtType().getFlags());
+ } catch (JavaModelException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
+ @Override
+ public Type topLevelDeclaringType() {
+ return (this.getDeclaringType() == null) ? this : super.topLevelDeclaringType();
+ }
+
+ public String getFullyQualifiedName() {
+ return this.jdtType().getFullyQualifiedName();
+ }
+
+
+ // ********** Member implementation **********
+
+ @Override
+ public BodyDeclaration bodyDeclaration(CompilationUnit astRoot) {
+ String name = this.getName();
+ for (AbstractTypeDeclaration typeDeclaration : this.types(astRoot)) {
+ if (typeDeclaration.getName().getFullyQualifiedName().equals(name)) {
+ return typeDeclaration;
+ }
+ }
+ return null;
+ }
+
+
+ // ********** miscellaneous **********
+
+ @SuppressWarnings("unchecked")
+ protected List<AbstractTypeDeclaration> types(CompilationUnit astRoot) {
+ return astRoot.types();
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/DefaultEagerFetchType.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/DefaultEagerFetchType.java
new file mode 100644
index 0000000000..116fd30133
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/DefaultEagerFetchType.java
@@ -0,0 +1,265 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import static org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType.DEFAULT_VALUE;
+import static org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType.EAGER_VALUE;
+import static org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType.LAZY_VALUE;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import org.eclipse.emf.common.util.Enumerator;
+import org.eclipse.jpt.core.internal.content.java.mappings.JPA;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Default Eager Fetch Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getDefaultEagerFetchType()
+ * @model
+ * @generated
+ */
+public enum DefaultEagerFetchType implements Enumerator {
+ /**
+ * The '<em><b>Default</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #DEFAULT_VALUE
+ * @generated
+ * @ordered
+ */
+ DEFAULT(0, "Default", "Default (Eager)"), /**
+ * The '<em><b>EAGER</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #EAGER_VALUE
+ * @generated
+ * @ordered
+ */
+ EAGER(1, "EAGER", "Eager"), /**
+ * The '<em><b>LAZY</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #LAZY_VALUE
+ * @generated
+ * @ordered
+ */
+ LAZY(2, "LAZY", "Lazy");
+ /**
+ * The '<em><b>Default</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Default</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #DEFAULT
+ * @model name="Default" literal="Default (Eager)"
+ * @generated
+ * @ordered
+ */
+ public static final int DEFAULT_VALUE = 0;
+
+ /**
+ * The '<em><b>EAGER</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>EAGER</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #EAGER
+ * @model literal="Eager"
+ * @generated
+ * @ordered
+ */
+ public static final int EAGER_VALUE = 1;
+
+ /**
+ * The '<em><b>LAZY</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>LAZY</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #LAZY
+ * @model literal="Lazy"
+ * @generated
+ * @ordered
+ */
+ public static final int LAZY_VALUE = 2;
+
+ /**
+ * An array of all the '<em><b>Default Eager Fetch Type</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final DefaultEagerFetchType[] VALUES_ARRAY = new DefaultEagerFetchType[] {
+ DEFAULT, EAGER, LAZY,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Default Eager Fetch Type</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<DefaultEagerFetchType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Default Eager Fetch Type</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static DefaultEagerFetchType get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ DefaultEagerFetchType result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Default Eager Fetch Type</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static DefaultEagerFetchType getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ DefaultEagerFetchType result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Default Eager Fetch Type</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static DefaultEagerFetchType get(int value) {
+ switch (value) {
+ case DEFAULT_VALUE :
+ return DEFAULT;
+ case EAGER_VALUE :
+ return EAGER;
+ case LAZY_VALUE :
+ return LAZY;
+ }
+ 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 DefaultEagerFetchType(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;
+ }
+
+ public static DefaultEagerFetchType fromJavaAnnotationValue(Object javaAnnotationValue) {
+ if (javaAnnotationValue == null) {
+ return DEFAULT;
+ }
+ if (javaAnnotationValue.equals(JPA.FETCH_TYPE__EAGER)) {
+ return EAGER;
+ }
+ if (javaAnnotationValue.equals(JPA.FETCH_TYPE__LAZY)) {
+ return LAZY;
+ }
+ return DEFAULT;
+ }
+
+ public String convertToJavaAnnotationValue() {
+ switch (this.getValue()) {
+ case DEFAULT_VALUE :
+ return null;
+ case EAGER_VALUE :
+ return JPA.FETCH_TYPE__EAGER;
+ case LAZY_VALUE :
+ return JPA.FETCH_TYPE__LAZY;
+ default :
+ throw new IllegalArgumentException("unknown fetch type: " + this);
+ }
+ }
+} //DefaultEagerFetchType
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/DefaultFalseBoolean.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/DefaultFalseBoolean.java
new file mode 100644
index 0000000000..5b7b6388d7
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/DefaultFalseBoolean.java
@@ -0,0 +1,264 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import static org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean.DEFAULT_VALUE;
+import static org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean.FALSE_VALUE;
+import static org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean.TRUE_VALUE;
+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>Default False Boolean</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getDefaultFalseBoolean()
+ * @model
+ * @generated
+ */
+public enum DefaultFalseBoolean implements Enumerator {
+ /**
+ * The '<em><b>Default</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #DEFAULT_VALUE
+ * @generated
+ * @ordered
+ */
+ DEFAULT(0, "Default", "Default (False)"), /**
+ * The '<em><b>False</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #FALSE_VALUE
+ * @generated
+ * @ordered
+ */
+ FALSE(1, "false", "False"), /**
+ * The '<em><b>True</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #TRUE_VALUE
+ * @generated
+ * @ordered
+ */
+ TRUE(2, "true", "True");
+ /**
+ * The '<em><b>Default</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Default</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #DEFAULT
+ * @model name="Default" literal="Default (False)"
+ * @generated
+ * @ordered
+ */
+ public static final int DEFAULT_VALUE = 0;
+
+ /**
+ * The '<em><b>False</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>False</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #FALSE
+ * @model name="false" literal="False"
+ * @generated
+ * @ordered
+ */
+ public static final int FALSE_VALUE = 1;
+
+ /**
+ * The '<em><b>True</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>True</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #TRUE
+ * @model name="true" literal="True"
+ * @generated
+ * @ordered
+ */
+ public static final int TRUE_VALUE = 2;
+
+ /**
+ * An array of all the '<em><b>Default False Boolean</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final DefaultFalseBoolean[] VALUES_ARRAY = new DefaultFalseBoolean[] {
+ DEFAULT, FALSE, TRUE,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Default False Boolean</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<DefaultFalseBoolean> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Default False Boolean</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static DefaultFalseBoolean get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ DefaultFalseBoolean result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Default False Boolean</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static DefaultFalseBoolean getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ DefaultFalseBoolean result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Default False Boolean</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static DefaultFalseBoolean get(int value) {
+ switch (value) {
+ case DEFAULT_VALUE :
+ return DEFAULT;
+ case FALSE_VALUE :
+ return FALSE;
+ case TRUE_VALUE :
+ return TRUE;
+ }
+ 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 DefaultFalseBoolean(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;
+ }
+
+ public static DefaultFalseBoolean fromJavaAnnotationValue(Object javaAnnotationValue) {
+ if (javaAnnotationValue == null) {
+ return DEFAULT;
+ }
+ if (javaAnnotationValue.equals("true")) {
+ return TRUE;
+ }
+ if (javaAnnotationValue.equals("false")) {
+ return FALSE;
+ }
+ return DEFAULT;
+ }
+
+ public String convertToJavaAnnotationValue() {
+ switch (this.getValue()) {
+ case DEFAULT_VALUE :
+ return null;
+ case TRUE_VALUE :
+ return "true";
+ case FALSE_VALUE :
+ return "false";
+ default :
+ throw new IllegalArgumentException("unknown boolean type: " + this);
+ }
+ }
+} //DefaultFalseBoolean
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/DefaultLazyFetchType.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/DefaultLazyFetchType.java
new file mode 100644
index 0000000000..8400033273
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/DefaultLazyFetchType.java
@@ -0,0 +1,265 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import static org.eclipse.jpt.core.internal.mappings.DefaultLazyFetchType.DEFAULT_VALUE;
+import static org.eclipse.jpt.core.internal.mappings.DefaultLazyFetchType.EAGER_VALUE;
+import static org.eclipse.jpt.core.internal.mappings.DefaultLazyFetchType.LAZY_VALUE;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import org.eclipse.emf.common.util.Enumerator;
+import org.eclipse.jpt.core.internal.content.java.mappings.JPA;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Default Lazy Fetch Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getDefaultLazyFetchType()
+ * @model
+ * @generated
+ */
+public enum DefaultLazyFetchType implements Enumerator {
+ /**
+ * The '<em><b>Default</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #DEFAULT_VALUE
+ * @generated
+ * @ordered
+ */
+ DEFAULT(0, "Default", "Default (Lazy)"), /**
+ * The '<em><b>LAZY</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #LAZY_VALUE
+ * @generated
+ * @ordered
+ */
+ LAZY(1, "LAZY", "Lazy"), /**
+ * The '<em><b>EAGER</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #EAGER_VALUE
+ * @generated
+ * @ordered
+ */
+ EAGER(2, "EAGER", "Eager");
+ /**
+ * The '<em><b>Default</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Default</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #DEFAULT
+ * @model name="Default" literal="Default (Lazy)"
+ * @generated
+ * @ordered
+ */
+ public static final int DEFAULT_VALUE = 0;
+
+ /**
+ * The '<em><b>LAZY</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>LAZY</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #LAZY
+ * @model literal="Lazy"
+ * @generated
+ * @ordered
+ */
+ public static final int LAZY_VALUE = 1;
+
+ /**
+ * The '<em><b>EAGER</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>EAGER</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #EAGER
+ * @model literal="Eager"
+ * @generated
+ * @ordered
+ */
+ public static final int EAGER_VALUE = 2;
+
+ /**
+ * An array of all the '<em><b>Default Lazy Fetch Type</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final DefaultLazyFetchType[] VALUES_ARRAY = new DefaultLazyFetchType[] {
+ DEFAULT, LAZY, EAGER,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Default Lazy Fetch Type</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<DefaultLazyFetchType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Default Lazy Fetch Type</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static DefaultLazyFetchType get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ DefaultLazyFetchType result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Default Lazy Fetch Type</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static DefaultLazyFetchType getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ DefaultLazyFetchType result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Default Lazy Fetch Type</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static DefaultLazyFetchType get(int value) {
+ switch (value) {
+ case DEFAULT_VALUE :
+ return DEFAULT;
+ case LAZY_VALUE :
+ return LAZY;
+ case EAGER_VALUE :
+ return EAGER;
+ }
+ 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 DefaultLazyFetchType(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;
+ }
+
+ public static DefaultLazyFetchType fromJavaAnnotationValue(Object javaAnnotationValue) {
+ if (javaAnnotationValue == null) {
+ return DEFAULT;
+ }
+ if (javaAnnotationValue.equals(JPA.FETCH_TYPE__EAGER)) {
+ return EAGER;
+ }
+ if (javaAnnotationValue.equals(JPA.FETCH_TYPE__LAZY)) {
+ return LAZY;
+ }
+ return DEFAULT;
+ }
+
+ public String convertToJavaAnnotationValue() {
+ switch (this.getValue()) {
+ case DEFAULT_VALUE :
+ return null;
+ case EAGER_VALUE :
+ return JPA.FETCH_TYPE__EAGER;
+ case LAZY_VALUE :
+ return JPA.FETCH_TYPE__LAZY;
+ default :
+ throw new IllegalArgumentException("unknown fetch type: " + this);
+ }
+ }
+} //DefaultLazyFetchType
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/DefaultTrueBoolean.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/DefaultTrueBoolean.java
new file mode 100644
index 0000000000..37bd32fc41
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/DefaultTrueBoolean.java
@@ -0,0 +1,264 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import static org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean.DEFAULT_VALUE;
+import static org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean.FALSE_VALUE;
+import static org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean.TRUE_VALUE;
+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>Default True Boolean</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getDefaultTrueBoolean()
+ * @model
+ * @generated
+ */
+public enum DefaultTrueBoolean implements Enumerator {
+ /**
+ * The '<em><b>Default</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #DEFAULT_VALUE
+ * @generated
+ * @ordered
+ */
+ DEFAULT(0, "Default", "Default (False)"), /**
+ * The '<em><b>True</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #TRUE_VALUE
+ * @generated
+ * @ordered
+ */
+ TRUE(1, "true", "True"), /**
+ * The '<em><b>False</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #FALSE_VALUE
+ * @generated
+ * @ordered
+ */
+ FALSE(2, "false", "False");
+ /**
+ * The '<em><b>Default</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Default</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #DEFAULT
+ * @model name="Default" literal="Default (False)"
+ * @generated
+ * @ordered
+ */
+ public static final int DEFAULT_VALUE = 0;
+
+ /**
+ * The '<em><b>True</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>True</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #TRUE
+ * @model name="true" literal="True"
+ * @generated
+ * @ordered
+ */
+ public static final int TRUE_VALUE = 1;
+
+ /**
+ * The '<em><b>False</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>False</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #FALSE
+ * @model name="false" literal="False"
+ * @generated
+ * @ordered
+ */
+ public static final int FALSE_VALUE = 2;
+
+ /**
+ * An array of all the '<em><b>Default True Boolean</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final DefaultTrueBoolean[] VALUES_ARRAY = new DefaultTrueBoolean[] {
+ DEFAULT, TRUE, FALSE,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Default True Boolean</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<DefaultTrueBoolean> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Default True Boolean</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static DefaultTrueBoolean get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ DefaultTrueBoolean result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Default True Boolean</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static DefaultTrueBoolean getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ DefaultTrueBoolean result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Default True Boolean</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static DefaultTrueBoolean get(int value) {
+ switch (value) {
+ case DEFAULT_VALUE :
+ return DEFAULT;
+ case TRUE_VALUE :
+ return TRUE;
+ case FALSE_VALUE :
+ return FALSE;
+ }
+ 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 DefaultTrueBoolean(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;
+ }
+
+ public static DefaultTrueBoolean fromJavaAnnotationValue(Object javaAnnotationValue) {
+ if (javaAnnotationValue == null) {
+ return DEFAULT;
+ }
+ if (javaAnnotationValue.equals("true")) {
+ return TRUE;
+ }
+ if (javaAnnotationValue.equals("false")) {
+ return FALSE;
+ }
+ return DEFAULT;
+ }
+
+ public String convertToJavaAnnotationValue() {
+ switch (this.getValue()) {
+ case DEFAULT_VALUE :
+ return null;
+ case TRUE_VALUE :
+ return "true";
+ case FALSE_VALUE :
+ return "false";
+ default :
+ throw new IllegalArgumentException("unknown boolean type: " + this);
+ }
+ }
+} //DefaultTrueBoolean
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/DiscriminatorType.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/DiscriminatorType.java
new file mode 100644
index 0000000000..ef1b54227b
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/DiscriminatorType.java
@@ -0,0 +1,303 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import static org.eclipse.jpt.core.internal.mappings.DiscriminatorType.CHAR_VALUE;
+import static org.eclipse.jpt.core.internal.mappings.DiscriminatorType.DEFAULT_VALUE;
+import static org.eclipse.jpt.core.internal.mappings.DiscriminatorType.INTEGER_VALUE;
+import static org.eclipse.jpt.core.internal.mappings.DiscriminatorType.STRING_VALUE;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import org.eclipse.emf.common.util.Enumerator;
+import org.eclipse.jpt.core.internal.content.java.mappings.JPA;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Discriminator Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getDiscriminatorType()
+ * @model
+ * @generated
+ */
+public enum DiscriminatorType implements Enumerator {
+ /**
+ * The '<em><b>Default</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #DEFAULT_VALUE
+ * @generated
+ * @ordered
+ */
+ DEFAULT(0, "Default", "Default (String)"),
+ /**
+ * The '<em><b>STRING</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #STRING_VALUE
+ * @generated
+ * @ordered
+ */
+ STRING(1, "STRING", "String"),
+ /**
+ * The '<em><b>CHAR</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #CHAR_VALUE
+ * @generated
+ * @ordered
+ */
+ CHAR(2, "CHAR", "Char"),
+ /**
+ * The '<em><b>INTEGER</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #INTEGER_VALUE
+ * @generated
+ * @ordered
+ */
+ INTEGER(3, "INTEGER", "Integer");
+ /**
+ * The '<em><b>Default</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Default</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #DEFAULT
+ * @model name="Default" literal="Default (String)"
+ * @generated
+ * @ordered
+ */
+ public static final int DEFAULT_VALUE = 0;
+
+ /**
+ * The '<em><b>STRING</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>String</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #STRING
+ * @model literal="String"
+ * @generated
+ * @ordered
+ */
+ public static final int STRING_VALUE = 1;
+
+ /**
+ * The '<em><b>CHAR</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Char</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #CHAR
+ * @model literal="Char"
+ * @generated
+ * @ordered
+ */
+ public static final int CHAR_VALUE = 2;
+
+ /**
+ * The '<em><b>INTEGER</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Integer</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #INTEGER
+ * @model literal="Integer"
+ * @generated
+ * @ordered
+ */
+ public static final int INTEGER_VALUE = 3;
+
+ /**
+ * An array of all the '<em><b>Discriminator Type</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final DiscriminatorType[] VALUES_ARRAY = new DiscriminatorType[] {
+ DEFAULT, STRING, CHAR, INTEGER,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Discriminator Type</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<DiscriminatorType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Discriminator Type</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static DiscriminatorType get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ DiscriminatorType result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Discriminator Type</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static DiscriminatorType getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ DiscriminatorType result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Discriminator Type</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static DiscriminatorType get(int value) {
+ switch (value) {
+ case DEFAULT_VALUE :
+ return DEFAULT;
+ case STRING_VALUE :
+ return STRING;
+ case CHAR_VALUE :
+ return CHAR;
+ case INTEGER_VALUE :
+ return INTEGER;
+ }
+ 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 DiscriminatorType(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;
+ }
+
+ public static DiscriminatorType fromJavaAnnotationValue(Object javaAnnotationValue) {
+ if (javaAnnotationValue == null) {
+ return DEFAULT;
+ }
+ if (javaAnnotationValue.equals(JPA.DISCRIMINATOR_TYPE__CHAR)) {
+ return CHAR;
+ }
+ if (javaAnnotationValue.equals(JPA.DISCRIMINATOR_TYPE__INTEGER)) {
+ return INTEGER;
+ }
+ if (javaAnnotationValue.equals(JPA.DISCRIMINATOR_TYPE__STRING)) {
+ return STRING;
+ }
+ return DEFAULT;
+ }
+
+ public String convertToJavaAnnotationValue() {
+ switch (this.getValue()) {
+ case DiscriminatorType.DEFAULT_VALUE :
+ return null;
+ case CHAR_VALUE :
+ return JPA.DISCRIMINATOR_TYPE__CHAR;
+ case INTEGER_VALUE :
+ return JPA.DISCRIMINATOR_TYPE__INTEGER;
+ case STRING_VALUE :
+ return JPA.DISCRIMINATOR_TYPE__STRING;
+ default :
+ throw new IllegalArgumentException("unknown discriminator type: " + this);
+ }
+ }
+
+ public boolean isString() {
+ return (this.getValue() == DEFAULT_VALUE) || (this.getValue() == STRING_VALUE);
+ }
+} //DiscriminatorType
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/EnumType.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/EnumType.java
new file mode 100644
index 0000000000..fd7b48c8ff
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/EnumType.java
@@ -0,0 +1,266 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import static org.eclipse.jpt.core.internal.mappings.EnumType.DEFAULT_VALUE;
+import static org.eclipse.jpt.core.internal.mappings.EnumType.ORDINAL_VALUE;
+import static org.eclipse.jpt.core.internal.mappings.EnumType.STRING_VALUE;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import org.eclipse.emf.common.util.Enumerator;
+import org.eclipse.jpt.core.internal.content.java.mappings.JPA;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Enum Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getEnumType()
+ * @model
+ * @generated
+ */
+public enum EnumType implements Enumerator {
+ /**
+ * The '<em><b>Default</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #DEFAULT_VALUE
+ * @generated
+ * @ordered
+ */
+ DEFAULT(0, "Default", "Default (Ordinal)"), /**
+ * The '<em><b>ORDINAL</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #ORDINAL_VALUE
+ * @generated
+ * @ordered
+ */
+ ORDINAL(1, "ORDINAL", "Ordinal"),
+ /**
+ * The '<em><b>STRING</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #STRING_VALUE
+ * @generated
+ * @ordered
+ */
+ STRING(2, "STRING", "String");
+ /**
+ * The '<em><b>Default</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Default</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #DEFAULT
+ * @model name="Default" literal="Default (Ordinal)"
+ * @generated
+ * @ordered
+ */
+ public static final int DEFAULT_VALUE = 0;
+
+ /**
+ * The '<em><b>ORDINAL</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>ORDINAL</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #ORDINAL
+ * @model literal="Ordinal"
+ * @generated
+ * @ordered
+ */
+ public static final int ORDINAL_VALUE = 1;
+
+ /**
+ * The '<em><b>STRING</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>STRING</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #STRING
+ * @model literal="String"
+ * @generated
+ * @ordered
+ */
+ public static final int STRING_VALUE = 2;
+
+ /**
+ * An array of all the '<em><b>Enum Type</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final EnumType[] VALUES_ARRAY = new EnumType[] {
+ DEFAULT, ORDINAL, STRING,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Enum Type</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<EnumType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Enum Type</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static EnumType get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ EnumType result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Enum Type</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static EnumType getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ EnumType result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Enum Type</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static EnumType get(int value) {
+ switch (value) {
+ case DEFAULT_VALUE :
+ return DEFAULT;
+ case ORDINAL_VALUE :
+ return ORDINAL;
+ case STRING_VALUE :
+ return STRING;
+ }
+ 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 EnumType(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;
+ }
+
+ public static EnumType fromJavaAnnotationValue(Object javaAnnotationValue) {
+ if (javaAnnotationValue == null) {
+ return DEFAULT;
+ }
+ if (javaAnnotationValue.equals(JPA.ENUM_TYPE__ORDINAL)) {
+ return ORDINAL;
+ }
+ if (javaAnnotationValue.equals(JPA.ENUM_TYPE__STRING)) {
+ return STRING;
+ }
+ return DEFAULT;
+ }
+
+ public String convertToJavaAnnotationValue() {
+ switch (this.getValue()) {
+ case DEFAULT_VALUE :
+ return null;
+ case ORDINAL_VALUE :
+ return JPA.ENUM_TYPE__ORDINAL;
+ case STRING_VALUE :
+ return JPA.ENUM_TYPE__STRING;
+ default :
+ throw new IllegalArgumentException("unknown enum type: " + this);
+ }
+ }
+} //EnumType
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/GenerationType.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/GenerationType.java
new file mode 100644
index 0000000000..f3156c7b79
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/GenerationType.java
@@ -0,0 +1,331 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import static org.eclipse.jpt.core.internal.mappings.GenerationType.AUTO_VALUE;
+import static org.eclipse.jpt.core.internal.mappings.GenerationType.DEFAULT_VALUE;
+import static org.eclipse.jpt.core.internal.mappings.GenerationType.IDENTITY_VALUE;
+import static org.eclipse.jpt.core.internal.mappings.GenerationType.SEQUENCE_VALUE;
+import static org.eclipse.jpt.core.internal.mappings.GenerationType.TABLE_VALUE;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import org.eclipse.emf.common.util.Enumerator;
+import org.eclipse.jpt.core.internal.content.java.mappings.JPA;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Generation Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getGenerationType()
+ * @model
+ * @generated
+ */
+public enum GenerationType implements Enumerator {
+ /**
+ * The '<em><b>Default</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #DEFAULT_VALUE
+ * @generated
+ * @ordered
+ */
+ DEFAULT(0, "Default", "Default (Auto)"),
+ /**
+ * The '<em><b>Auto</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #AUTO_VALUE
+ * @generated
+ * @ordered
+ */
+ AUTO(1, "Auto", "Auto"),
+ /**
+ * The '<em><b>Identity</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #IDENTITY_VALUE
+ * @generated
+ * @ordered
+ */
+ IDENTITY(2, "Identity", "Identity"),
+ /**
+ * The '<em><b>Sequence</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #SEQUENCE_VALUE
+ * @generated
+ * @ordered
+ */
+ SEQUENCE(3, "Sequence", "Sequence"),
+ /**
+ * The '<em><b>Table</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #TABLE_VALUE
+ * @generated
+ * @ordered
+ */
+ TABLE(4, "Table", "Table");
+ /**
+ * The '<em><b>Default</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Default</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #DEFAULT
+ * @model name="Default" literal="Default (Auto)"
+ * @generated
+ * @ordered
+ */
+ public static final int DEFAULT_VALUE = 0;
+
+ /**
+ * The '<em><b>Auto</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Auto</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #AUTO
+ * @model name="Auto"
+ * @generated
+ * @ordered
+ */
+ public static final int AUTO_VALUE = 1;
+
+ /**
+ * The '<em><b>Identity</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Identity</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #IDENTITY
+ * @model name="Identity"
+ * @generated
+ * @ordered
+ */
+ public static final int IDENTITY_VALUE = 2;
+
+ /**
+ * The '<em><b>Sequence</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Sequence</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #SEQUENCE
+ * @model name="Sequence"
+ * @generated
+ * @ordered
+ */
+ public static final int SEQUENCE_VALUE = 3;
+
+ /**
+ * The '<em><b>Table</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Table</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #TABLE
+ * @model name="Table"
+ * @generated
+ * @ordered
+ */
+ public static final int TABLE_VALUE = 4;
+
+ /**
+ * An array of all the '<em><b>Generation Type</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final GenerationType[] VALUES_ARRAY = new GenerationType[] {
+ DEFAULT, AUTO, IDENTITY, SEQUENCE, TABLE,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Generation Type</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<GenerationType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Generation Type</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static GenerationType get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ GenerationType result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Generation Type</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static GenerationType getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ GenerationType result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Generation Type</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static GenerationType get(int value) {
+ switch (value) {
+ case DEFAULT_VALUE :
+ return DEFAULT;
+ case AUTO_VALUE :
+ return AUTO;
+ case IDENTITY_VALUE :
+ return IDENTITY;
+ case SEQUENCE_VALUE :
+ return SEQUENCE;
+ case TABLE_VALUE :
+ return TABLE;
+ }
+ 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 GenerationType(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;
+ }
+
+ public static GenerationType fromJavaAnnotationValue(Object javaAnnotationValue) {
+ if (javaAnnotationValue == null) {
+ return DEFAULT;
+ }
+ if (javaAnnotationValue.equals(JPA.GENERATION_TYPE__AUTO)) {
+ return AUTO;
+ }
+ if (javaAnnotationValue.equals(JPA.GENERATION_TYPE__IDENTITY)) {
+ return IDENTITY;
+ }
+ if (javaAnnotationValue.equals(JPA.GENERATION_TYPE__SEQUENCE)) {
+ return SEQUENCE;
+ }
+ if (javaAnnotationValue.equals(JPA.GENERATION_TYPE__TABLE)) {
+ return TABLE;
+ }
+ return DEFAULT;
+ }
+
+ public String convertToJavaAnnotationValue() {
+ switch (this.getValue()) {
+ case DEFAULT_VALUE :
+ return null;
+ case AUTO_VALUE :
+ return JPA.GENERATION_TYPE__AUTO;
+ case IDENTITY_VALUE :
+ return JPA.GENERATION_TYPE__IDENTITY;
+ case SEQUENCE_VALUE :
+ return JPA.GENERATION_TYPE__SEQUENCE;
+ case TABLE_VALUE :
+ return JPA.GENERATION_TYPE__TABLE;
+ default :
+ throw new IllegalArgumentException("unknown generation type: " + this);
+ }
+ }
+} //GenerationType
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IAbstractColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IAbstractColumn.java
new file mode 100644
index 0000000000..cd3b85281f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IAbstractColumn.java
@@ -0,0 +1,238 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: IAbstractColumn.java,v 1.1 2007/04/25 20:09:33 pfullbright Exp $
+ */
+package org.eclipse.jpt.core.internal.mappings;
+
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.db.internal.Column;
+import org.eclipse.jpt.db.internal.Table;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IAbstract Column</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IAbstractColumn#getUnique <em>Unique</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IAbstractColumn#getNullable <em>Nullable</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IAbstractColumn#getInsertable <em>Insertable</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IAbstractColumn#getUpdatable <em>Updatable</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IAbstractColumn#getTable <em>Table</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IAbstractColumn#getSpecifiedTable <em>Specified Table</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IAbstractColumn#getDefaultTable <em>Default Table</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIAbstractColumn()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IAbstractColumn extends INamedColumn
+{
+ /**
+ * Returns the value of the '<em><b>Unique</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Unique</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Unique</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean
+ * @see #setUnique(DefaultFalseBoolean)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIAbstractColumn_Unique()
+ * @model
+ * @generated
+ */
+ DefaultFalseBoolean getUnique();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IAbstractColumn#getUnique <em>Unique</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Unique</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean
+ * @see #getUnique()
+ * @generated
+ */
+ void setUnique(DefaultFalseBoolean value);
+
+ /**
+ * Returns the value of the '<em><b>Nullable</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Nullable</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Nullable</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean
+ * @see #setNullable(DefaultTrueBoolean)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIAbstractColumn_Nullable()
+ * @model
+ * @generated
+ */
+ DefaultTrueBoolean getNullable();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IAbstractColumn#getNullable <em>Nullable</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Nullable</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean
+ * @see #getNullable()
+ * @generated
+ */
+ void setNullable(DefaultTrueBoolean value);
+
+ /**
+ * Returns the value of the '<em><b>Insertable</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Insertable</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Insertable</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean
+ * @see #setInsertable(DefaultTrueBoolean)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIAbstractColumn_Insertable()
+ * @model
+ * @generated
+ */
+ DefaultTrueBoolean getInsertable();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IAbstractColumn#getInsertable <em>Insertable</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Insertable</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean
+ * @see #getInsertable()
+ * @generated
+ */
+ void setInsertable(DefaultTrueBoolean value);
+
+ /**
+ * Returns the value of the '<em><b>Updatable</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Updatable</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Updatable</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean
+ * @see #setUpdatable(DefaultTrueBoolean)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIAbstractColumn_Updatable()
+ * @model
+ * @generated
+ */
+ DefaultTrueBoolean getUpdatable();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IAbstractColumn#getUpdatable <em>Updatable</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Updatable</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean
+ * @see #getUpdatable()
+ * @generated
+ */
+ void setUpdatable(DefaultTrueBoolean value);
+
+ /**
+ * Returns the value of the '<em><b>Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Table</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Table</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIAbstractColumn_Table()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated
+ */
+ String getTable();
+
+ /**
+ * Returns the value of the '<em><b>Specified Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Table</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Table</em>' attribute.
+ * @see #setSpecifiedTable(String)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIAbstractColumn_SpecifiedTable()
+ * @model
+ * @generated
+ */
+ String getSpecifiedTable();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IAbstractColumn#getSpecifiedTable <em>Specified Table</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Table</em>' attribute.
+ * @see #getSpecifiedTable()
+ * @generated
+ */
+ void setSpecifiedTable(String value);
+
+ /**
+ * Returns the value of the '<em><b>Default Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Table</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Table</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIAbstractColumn_DefaultTable()
+ * @model changeable="false"
+ * @generated
+ */
+ String getDefaultTable();
+
+ /**
+ * Return the wrapper for the datasource column
+ */
+ Column dbColumn();
+
+ /**
+ * Return the wrapper for the datasource table
+ */
+ Table dbTable();
+
+ /**
+ * Return whether the datasource is connected
+ */
+ boolean isConnected();
+
+ /**
+ * Return whether the column is found on the datasource
+ */
+ boolean isResolved();
+
+ /**
+ * Return (best) text location of this column's name
+ */
+ ITextRange getNameTextRange();
+
+ /**
+ * Return (best) text location of this column's table
+ */
+ ITextRange getTableTextRange();
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IAbstractJoinColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IAbstractJoinColumn.java
new file mode 100644
index 0000000000..f5548c7d39
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IAbstractJoinColumn.java
@@ -0,0 +1,115 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id: IAbstractJoinColumn.java,v 1.1 2007/04/25 20:09:33 pfullbright Exp $
+ */
+package org.eclipse.jpt.core.internal.mappings;
+
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+import org.eclipse.jpt.db.internal.Column;
+import org.eclipse.jpt.db.internal.Table;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IAbstract Join Column</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn#getReferencedColumnName <em>Referenced Column Name</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn#getSpecifiedReferencedColumnName <em>Specified Referenced Column Name</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn#getDefaultReferencedColumnName <em>Default Referenced Column Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIAbstractJoinColumn()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IAbstractJoinColumn extends INamedColumn
+{
+ /**
+ * Returns the value of the '<em><b>Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Referenced Column Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Referenced Column Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIAbstractJoinColumn_ReferencedColumnName()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated
+ */
+ String getReferencedColumnName();
+
+ /**
+ * Returns the value of the '<em><b>Specified Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Referenced Column Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Referenced Column Name</em>' attribute.
+ * @see #setSpecifiedReferencedColumnName(String)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIAbstractJoinColumn_SpecifiedReferencedColumnName()
+ * @model
+ * @generated
+ */
+ String getSpecifiedReferencedColumnName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn#getSpecifiedReferencedColumnName <em>Specified Referenced Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Referenced Column Name</em>' attribute.
+ * @see #getSpecifiedReferencedColumnName()
+ * @generated
+ */
+ void setSpecifiedReferencedColumnName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Default Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Referenced Column Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Referenced Column Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIAbstractJoinColumn_DefaultReferencedColumnName()
+ * @model changeable="false"
+ * @generated
+ */
+ String getDefaultReferencedColumnName();
+
+ public Owner getOwner();
+ public interface Owner extends INamedColumn.Owner
+ {
+ /**
+ * Return the wrapper for the datasource table for the referenced column
+ */
+ Table dbReferencedColumnTable();
+ }
+
+ void refreshDefaults(DefaultsContext defaultsContext);
+
+ /**
+ * Return the wrapper for the datasource referenced column
+ */
+ Column dbReferencedColumn();
+
+ /**
+ * Return whether the reference column is found on the datasource
+ */
+ boolean isReferencedColumnResolved();
+
+ /**
+ * Return (best) text location of the referenced column name
+ */
+ ITextRange getReferencedColumnNameTextRange();
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IAssociationOverride.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IAssociationOverride.java
new file mode 100644
index 0000000000..3c515b735e
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IAssociationOverride.java
@@ -0,0 +1,152 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import java.util.List;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.db.internal.Table;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IAssociation Override</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IAssociationOverride#getJoinColumns <em>Join Columns</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IAssociationOverride#getSpecifiedJoinColumns <em>Specified Join Columns</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IAssociationOverride#getDefaultJoinColumns <em>Default Join Columns</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIAssociationOverride()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IAssociationOverride extends IOverride
+{
+ /**
+ * Returns the value of the '<em><b>Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Join Columns</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>Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIAssociationOverride_JoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IJoinColumn" containment="true" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ EList<IJoinColumn> getJoinColumns();
+
+ /**
+ * Returns the value of the '<em><b>Specified Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Join Columns</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>Specified Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIAssociationOverride_SpecifiedJoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IJoinColumn" containment="true"
+ * @generated
+ */
+ EList<IJoinColumn> getSpecifiedJoinColumns();
+
+ /**
+ * Returns the value of the '<em><b>Default Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Join Columns</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>Default Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIAssociationOverride_DefaultJoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IJoinColumn" containment="true"
+ * @generated
+ */
+ EList<IJoinColumn> getDefaultJoinColumns();
+
+ IJoinColumn createJoinColumn(int index);
+
+ boolean containsSpecifiedJoinColumns();
+
+ ITypeMapping typeMapping();
+ public class JoinColumnOwner implements IJoinColumn.Owner
+ {
+ private IAssociationOverride associationOverride;
+
+ public JoinColumnOwner(IAssociationOverride associationOverride) {
+ super();
+ this.associationOverride = associationOverride;
+ }
+
+ /**
+ * by default, the join column is in the type mapping's primary table
+ */
+ public String defaultTableName() {
+ return this.associationOverride.getOwner().getTypeMapping().getTableName();
+ }
+
+ public List joinColumns() {
+ return this.associationOverride.getJoinColumns();
+ }
+
+ public IEntity targetEntity() {
+ return getRelationshipMapping().getResolvedTargetEntity();
+ }
+
+ public String attributeName() {
+ return this.associationOverride.getName();
+ }
+
+ public IRelationshipMapping getRelationshipMapping() {
+ //TODO cast or check instanceof first??
+ return (IRelationshipMapping) this.associationOverride.getOwner().attributeMapping(this.associationOverride.getName());
+ }
+
+ public boolean tableNameIsInvalid(String tableName) {
+ return getTypeMapping().tableNameIsInvalid(tableName);
+ }
+
+ /**
+ * the join column can be on a secondary table
+ */
+ public boolean tableIsAllowed() {
+ return true;
+ }
+
+ public ITextRange getTextRange() {
+ return this.associationOverride.getTextRange();
+ }
+
+ public ITypeMapping getTypeMapping() {
+ return this.associationOverride.getOwner().getTypeMapping();
+ }
+
+ public Table dbTable(String tableName) {
+ return getTypeMapping().dbTable(tableName);
+ }
+
+ public Table dbReferencedColumnTable() {
+ IEntity targetEntity = targetEntity();
+ return (targetEntity == null) ? null : targetEntity().primaryDbTable();
+ }
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IAttributeOverride.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IAttributeOverride.java
new file mode 100644
index 0000000000..97e19b51a1
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IAttributeOverride.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IAttribute Override</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride#getColumn <em>Column</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIAttributeOverride()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IAttributeOverride extends IOverride, IColumnMapping
+{
+ /**
+ * Returns the value of the '<em><b>Column</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Column</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Column</em>' containment reference.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIAttributeOverride_Column()
+ * @model containment="true" required="true" changeable="false"
+ * @generated
+ */
+ IColumn getColumn();
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IBasic.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IBasic.java
new file mode 100644
index 0000000000..d724620631
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IBasic.java
@@ -0,0 +1,193 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import org.eclipse.jpt.core.internal.IAttributeMapping;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Basic</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IBasic#getFetch <em>Fetch</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IBasic#getOptional <em>Optional</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IBasic#getColumn <em>Column</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IBasic#isLob <em>Lob</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IBasic#getTemporal <em>Temporal</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IBasic#getEnumerated <em>Enumerated</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIBasic()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IBasic extends IAttributeMapping, IColumnMapping
+{
+ /**
+ * Returns the value of the '<em><b>Fetch</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Fetch</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Fetch</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType
+ * @see #setFetch(DefaultEagerFetchType)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIBasic_Fetch()
+ * @model
+ * @generated
+ */
+ DefaultEagerFetchType getFetch();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IBasic#getFetch <em>Fetch</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Fetch</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType
+ * @see #getFetch()
+ * @generated
+ */
+ void setFetch(DefaultEagerFetchType value);
+
+ /**
+ * Returns the value of the '<em><b>Optional</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Optional</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Optional</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean
+ * @see #setOptional(DefaultTrueBoolean)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIBasic_Optional()
+ * @model
+ * @generated
+ */
+ DefaultTrueBoolean getOptional();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IBasic#getOptional <em>Optional</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Optional</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean
+ * @see #getOptional()
+ * @generated
+ */
+ void setOptional(DefaultTrueBoolean value);
+
+ /**
+ * Returns the value of the '<em><b>Column</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Column</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Column</em>' containment reference.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIBasic_Column()
+ * @model containment="true" required="true" changeable="false"
+ * @generated
+ */
+ IColumn getColumn();
+
+ /**
+ * Returns the value of the '<em><b>Lob</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Lob</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Lob</em>' attribute.
+ * @see #setLob(boolean)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIBasic_Lob()
+ * @model
+ * @generated
+ */
+ boolean isLob();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IBasic#isLob <em>Lob</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Lob</em>' attribute.
+ * @see #isLob()
+ * @generated
+ */
+ void setLob(boolean value);
+
+ /**
+ * Returns the value of the '<em><b>Temporal</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.TemporalType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Temporal</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Temporal</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.TemporalType
+ * @see #setTemporal(TemporalType)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIBasic_Temporal()
+ * @model
+ * @generated
+ */
+ TemporalType getTemporal();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IBasic#getTemporal <em>Temporal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Temporal</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.TemporalType
+ * @see #getTemporal()
+ * @generated
+ */
+ void setTemporal(TemporalType value);
+
+ /**
+ * Returns the value of the '<em><b>Enumerated</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.EnumType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Enumerated</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Enumerated</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.EnumType
+ * @see #setEnumerated(EnumType)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIBasic_Enumerated()
+ * @model
+ * @generated
+ */
+ EnumType getEnumerated();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IBasic#getEnumerated <em>Enumerated</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Enumerated</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.EnumType
+ * @see #getEnumerated()
+ * @generated
+ */
+ void setEnumerated(EnumType value);
+} // Basic \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IColumn.java
new file mode 100644
index 0000000000..a5c63e1162
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IColumn.java
@@ -0,0 +1,119 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IColumn</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IColumn#getLength <em>Length</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IColumn#getPrecision <em>Precision</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IColumn#getScale <em>Scale</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIColumn()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IColumn extends IAbstractColumn
+{
+ /**
+ * Returns the value of the '<em><b>Length</b></em>' attribute.
+ * The default value is <code>"255"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Length</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Length</em>' attribute.
+ * @see #setLength(int)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIColumn_Length()
+ * @model default="255"
+ * @generated
+ */
+ int getLength();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IColumn#getLength <em>Length</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Length</em>' attribute.
+ * @see #getLength()
+ * @generated
+ */
+ void setLength(int value);
+
+ /**
+ * Returns the value of the '<em><b>Precision</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Precision</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Precision</em>' attribute.
+ * @see #setPrecision(int)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIColumn_Precision()
+ * @model
+ * @generated
+ */
+ int getPrecision();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IColumn#getPrecision <em>Precision</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Precision</em>' attribute.
+ * @see #getPrecision()
+ * @generated
+ */
+ void setPrecision(int value);
+
+ /**
+ * Returns the value of the '<em><b>Scale</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Scale</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Scale</em>' attribute.
+ * @see #setScale(int)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIColumn_Scale()
+ * @model
+ * @generated
+ */
+ int getScale();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IColumn#getScale <em>Scale</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Scale</em>' attribute.
+ * @see #getScale()
+ * @generated
+ */
+ void setScale(int value);
+
+ void refreshDefaults(DefaultsContext defaultsContext);
+
+ /**
+ * Return whether the column is found on the datasource
+ */
+ boolean isResolved();
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IColumnMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IColumnMapping.java
new file mode 100644
index 0000000000..ba99090c6c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IColumnMapping.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IColumn Mapping</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIColumnMapping()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IColumnMapping extends EObject
+{
+ /**
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Column</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @model kind="operation"
+ * @generated
+ */
+ IColumn getColumn();
+} // IColumnMapping \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IDiscriminatorColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IDiscriminatorColumn.java
new file mode 100644
index 0000000000..3fd206495d
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IDiscriminatorColumn.java
@@ -0,0 +1,235 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import org.eclipse.jpt.core.internal.IJpaSourceObject;
+import org.eclipse.jpt.db.internal.Table;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IDiscriminator Column</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getDefaultName <em>Default Name</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getSpecifiedName <em>Specified Name</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getDiscriminatorType <em>Discriminator Type</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getColumnDefinition <em>Column Definition</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getDefaultLength <em>Default Length</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getSpecifiedLength <em>Specified Length</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getLength <em>Length</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIDiscriminatorColumn()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IDiscriminatorColumn extends IJpaSourceObject
+{
+ /**
+ * Returns the value of the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Name</em>' attribute.
+ * @see #setDefaultName(String)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIDiscriminatorColumn_DefaultName()
+ * @model
+ * @generated
+ */
+ String getDefaultName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getDefaultName <em>Default Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Default Name</em>' attribute.
+ * @see #getDefaultName()
+ * @generated
+ */
+ void setDefaultName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Name</em>' attribute.
+ * @see #setSpecifiedName(String)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIDiscriminatorColumn_SpecifiedName()
+ * @model
+ * @generated
+ */
+ String getSpecifiedName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getSpecifiedName <em>Specified Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Name</em>' attribute.
+ * @see #getSpecifiedName()
+ * @generated
+ */
+ void setSpecifiedName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIDiscriminatorColumn_Name()
+ * @model transient="true" changeable="false" volatile="true" derived="true"
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Returns the value of the '<em><b>Discriminator Type</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DiscriminatorType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Discriminator 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>Discriminator Type</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DiscriminatorType
+ * @see #setDiscriminatorType(DiscriminatorType)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIDiscriminatorColumn_DiscriminatorType()
+ * @model
+ * @generated
+ */
+ DiscriminatorType getDiscriminatorType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getDiscriminatorType <em>Discriminator Type</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Discriminator Type</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DiscriminatorType
+ * @see #getDiscriminatorType()
+ * @generated
+ */
+ void setDiscriminatorType(DiscriminatorType value);
+
+ /**
+ * Returns the value of the '<em><b>Column Definition</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Column Definition</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Column Definition</em>' attribute.
+ * @see #setColumnDefinition(String)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIDiscriminatorColumn_ColumnDefinition()
+ * @model
+ * @generated
+ */
+ String getColumnDefinition();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getColumnDefinition <em>Column Definition</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Column Definition</em>' attribute.
+ * @see #getColumnDefinition()
+ * @generated
+ */
+ void setColumnDefinition(String value);
+
+ /**
+ * Returns the value of the '<em><b>Default Length</b></em>' attribute.
+ * The default value is <code>"31"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Length</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Length</em>' attribute.
+ * @see #setDefaultLength(int)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIDiscriminatorColumn_DefaultLength()
+ * @model default="31"
+ * @generated
+ */
+ int getDefaultLength();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getDefaultLength <em>Default Length</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Default Length</em>' attribute.
+ * @see #getDefaultLength()
+ * @generated
+ */
+ void setDefaultLength(int value);
+
+ /**
+ * Returns the value of the '<em><b>Specified Length</b></em>' attribute.
+ * The default value is <code>"-1"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Length</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Length</em>' attribute.
+ * @see #setSpecifiedLength(int)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIDiscriminatorColumn_SpecifiedLength()
+ * @model default="-1"
+ * @generated
+ */
+ int getSpecifiedLength();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getSpecifiedLength <em>Specified Length</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Length</em>' attribute.
+ * @see #getSpecifiedLength()
+ * @generated
+ */
+ void setSpecifiedLength(int value);
+
+ /**
+ * Returns the value of the '<em><b>Length</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Length</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Length</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIDiscriminatorColumn_Length()
+ * @model transient="true" changeable="false" volatile="true" derived="true"
+ * @generated
+ */
+ int getLength();
+
+ /**
+ * return the resolved db table for the discriminatorColumn
+ */
+ Table dbTable();
+} // IDiscriminatorColumn
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IEmbeddable.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IEmbeddable.java
new file mode 100644
index 0000000000..46845137df
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IEmbeddable.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import org.eclipse.jpt.core.internal.ITypeMapping;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Embeddable</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEmbeddable()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IEmbeddable extends ITypeMapping
+{} // Embeddable \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IEmbedded.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IEmbedded.java
new file mode 100644
index 0000000000..3e4942cb32
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IEmbedded.java
@@ -0,0 +1,144 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import java.util.Iterator;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.jpt.core.internal.IAttributeMapping;
+import org.eclipse.jpt.core.internal.IPersistentAttribute;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.mappings.IOverride.Owner;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IEmbedded</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IEmbedded#getAttributeOverrides <em>Attribute Overrides</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IEmbedded#getSpecifiedAttributeOverrides <em>Specified Attribute Overrides</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IEmbedded#getDefaultAttributeOverrides <em>Default Attribute Overrides</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEmbedded()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IEmbedded extends IAttributeMapping
+{
+ /**
+ * Returns the value of the '<em><b>Attribute Overrides</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Attribute Overrides</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>Attribute Overrides</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEmbedded_AttributeOverrides()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IAttributeOverride" containment="true" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ EList<IAttributeOverride> getAttributeOverrides();
+
+ /**
+ * Returns the value of the '<em><b>Specified Attribute Overrides</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Attribute Overrides</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>Specified Attribute Overrides</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEmbedded_SpecifiedAttributeOverrides()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IAttributeOverride" containment="true"
+ * @generated
+ */
+ EList<IAttributeOverride> getSpecifiedAttributeOverrides();
+
+ /**
+ * Returns the value of the '<em><b>Default Attribute Overrides</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Attribute Overrides</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>Default Attribute Overrides</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEmbedded_DefaultAttributeOverrides()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IAttributeOverride" containment="true"
+ * @generated
+ */
+ EList<IAttributeOverride> getDefaultAttributeOverrides();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ IEmbeddable embeddable();
+
+ IAttributeOverride createAttributeOverride(int index);
+
+ Iterator<String> allOverridableAttributeNames();
+
+ boolean containsAttributeOverride(String name);
+
+ boolean containsSpecifiedAttributeOverride(String name);
+
+
+ class AttributeOverrideOwner implements Owner
+ {
+ private IEmbedded embedded;
+
+ public AttributeOverrideOwner(IEmbedded embedded) {
+ this.embedded = embedded;
+ }
+
+ public ITypeMapping getTypeMapping() {
+ return this.embedded.typeMapping();
+ }
+
+ public IAttributeMapping attributeMapping(String attributeName) {
+ return (IAttributeMapping) columnMapping(attributeName);
+ }
+
+ private IColumnMapping columnMapping(String name) {
+ IEmbeddable embeddable = this.embedded.embeddable();
+ if (embeddable != null) {
+ for (Iterator<IPersistentAttribute> stream = embeddable.getPersistentType().allAttributes(); stream.hasNext();) {
+ IPersistentAttribute persAttribute = stream.next();
+ if (persAttribute.getName().equals(name)) {
+ if (persAttribute.getMapping() instanceof IColumnMapping) {
+ return (IColumnMapping) persAttribute.getMapping();
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ public boolean isVirtual(IOverride override) {
+ return embedded.getDefaultAttributeOverrides().contains(override);
+ }
+
+ public ITextRange getTextRange() {
+ return embedded.getTextRange();
+ }
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IEmbeddedId.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IEmbeddedId.java
new file mode 100644
index 0000000000..d2e1f082db
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IEmbeddedId.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import org.eclipse.jpt.core.internal.IAttributeMapping;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IEmbedded Id</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEmbeddedId()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IEmbeddedId extends IAttributeMapping
+{} // IEmbeddedId
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IEntity.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IEntity.java
new file mode 100644
index 0000000000..584922308b
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IEntity.java
@@ -0,0 +1,636 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import java.util.Iterator;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.jpt.core.internal.IAttributeMapping;
+import org.eclipse.jpt.core.internal.IPersistentAttribute;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.db.internal.Table;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Entity</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IEntity#getSpecifiedName <em>Specified Name</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IEntity#getDefaultName <em>Default Name</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IEntity#getTable <em>Table</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IEntity#getPrimaryKeyJoinColumns <em>Primary Key Join Columns</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IEntity#getSpecifiedPrimaryKeyJoinColumns <em>Specified Primary Key Join Columns</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IEntity#getDefaultPrimaryKeyJoinColumns <em>Default Primary Key Join Columns</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IEntity#getInheritanceStrategy <em>Inheritance Strategy</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IEntity#getDefaultDiscriminatorValue <em>Default Discriminator Value</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IEntity#getSpecifiedDiscriminatorValue <em>Specified Discriminator Value</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IEntity#getDiscriminatorValue <em>Discriminator Value</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IEntity#getDiscriminatorColumn <em>Discriminator Column</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IEntity#getSequenceGenerator <em>Sequence Generator</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IEntity#getTableGenerator <em>Table Generator</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IEntity#getAttributeOverrides <em>Attribute Overrides</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IEntity#getSpecifiedAttributeOverrides <em>Specified Attribute Overrides</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IEntity#getDefaultAttributeOverrides <em>Default Attribute Overrides</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IEntity#getAssociationOverrides <em>Association Overrides</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IEntity#getSpecifiedAssociationOverrides <em>Specified Association Overrides</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IEntity#getDefaultAssociationOverrides <em>Default Association Overrides</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IEntity#getNamedQueries <em>Named Queries</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IEntity#getNamedNativeQueries <em>Named Native Queries</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEntity()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IEntity extends ITypeMapping
+{
+ /**
+ * Returns the value of the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Name</em>' attribute.
+ * @see #setSpecifiedName(String)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEntity_SpecifiedName()
+ * @model
+ * @generated
+ */
+ String getSpecifiedName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IEntity#getSpecifiedName <em>Specified Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Name</em>' attribute.
+ * @see #getSpecifiedName()
+ * @generated
+ */
+ void setSpecifiedName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEntity_DefaultName()
+ * @model changeable="false"
+ * @generated
+ */
+ String getDefaultName();
+
+ /**
+ * Returns the value of the '<em><b>Table</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Table</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Table</em>' containment reference.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEntity_Table()
+ * @model containment="true" required="true" changeable="false"
+ * @generated
+ */
+ ITable getTable();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Secondary Tables</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @model kind="operation" type="org.eclipse.jpt.core.internal.mappings.ISecondaryTable"
+ * @generated
+ */
+ EList<ISecondaryTable> getSecondaryTables();
+
+ /**
+ * Returns the value of the '<em><b>Inheritance Strategy</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.InheritanceType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Inheritance Strategy</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Inheritance Strategy</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.InheritanceType
+ * @see #setInheritanceStrategy(InheritanceType)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEntity_InheritanceStrategy()
+ * @model
+ * @generated
+ */
+ InheritanceType getInheritanceStrategy();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IEntity#getInheritanceStrategy <em>Inheritance Strategy</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Inheritance Strategy</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.InheritanceType
+ * @see #getInheritanceStrategy()
+ * @generated
+ */
+ void setInheritanceStrategy(InheritanceType value);
+
+ /**
+ * Returns the value of the '<em><b>Discriminator Column</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Discriminator Column</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Discriminator Column</em>' containment reference.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEntity_DiscriminatorColumn()
+ * @model containment="true" changeable="false"
+ * @generated
+ */
+ IDiscriminatorColumn getDiscriminatorColumn();
+
+ /**
+ * Returns the value of the '<em><b>Sequence Generator</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Sequence Generator</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Sequence Generator</em>' containment reference.
+ * @see #setSequenceGenerator(ISequenceGenerator)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEntity_SequenceGenerator()
+ * @model containment="true"
+ * @generated
+ */
+ ISequenceGenerator getSequenceGenerator();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IEntity#getSequenceGenerator <em>Sequence Generator</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Sequence Generator</em>' containment reference.
+ * @see #getSequenceGenerator()
+ * @generated
+ */
+ void setSequenceGenerator(ISequenceGenerator value);
+
+ /**
+ * Returns the value of the '<em><b>Table Generator</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Table Generator</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Table Generator</em>' containment reference.
+ * @see #setTableGenerator(ITableGenerator)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEntity_TableGenerator()
+ * @model containment="true"
+ * @generated
+ */
+ ITableGenerator getTableGenerator();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IEntity#getTableGenerator <em>Table Generator</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Table Generator</em>' containment reference.
+ * @see #getTableGenerator()
+ * @generated
+ */
+ void setTableGenerator(ITableGenerator value);
+
+ /**
+ * Returns the value of the '<em><b>Default Discriminator Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Discriminator 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>Default Discriminator Value</em>' attribute.
+ * @see #setDefaultDiscriminatorValue(String)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEntity_DefaultDiscriminatorValue()
+ * @model
+ * @generated
+ */
+ String getDefaultDiscriminatorValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IEntity#getDefaultDiscriminatorValue <em>Default Discriminator Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Default Discriminator Value</em>' attribute.
+ * @see #getDefaultDiscriminatorValue()
+ * @generated
+ */
+ void setDefaultDiscriminatorValue(String value);
+
+ /**
+ * Returns the value of the '<em><b>Specified Discriminator Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Discriminator 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>Specified Discriminator Value</em>' attribute.
+ * @see #setSpecifiedDiscriminatorValue(String)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEntity_SpecifiedDiscriminatorValue()
+ * @model
+ * @generated
+ */
+ String getSpecifiedDiscriminatorValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IEntity#getSpecifiedDiscriminatorValue <em>Specified Discriminator Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Discriminator Value</em>' attribute.
+ * @see #getSpecifiedDiscriminatorValue()
+ * @generated
+ */
+ void setSpecifiedDiscriminatorValue(String value);
+
+ /**
+ * Returns the value of the '<em><b>Discriminator Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Discriminator 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>Discriminator Value</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEntity_DiscriminatorValue()
+ * @model transient="true" changeable="false" volatile="true" derived="true"
+ * @generated
+ */
+ String getDiscriminatorValue();
+
+ /**
+ * Returns the value of the '<em><b>Primary Key Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Primary Key Join Columns</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>Primary Key Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEntity_PrimaryKeyJoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn" containment="true" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ EList<IPrimaryKeyJoinColumn> getPrimaryKeyJoinColumns();
+
+ /**
+ * Returns the value of the '<em><b>Specified Primary Key Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Primary Key Join Columns</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>Specified Primary Key Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEntity_SpecifiedPrimaryKeyJoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn" containment="true"
+ * @generated
+ */
+ EList<IPrimaryKeyJoinColumn> getSpecifiedPrimaryKeyJoinColumns();
+
+ /**
+ * Returns the value of the '<em><b>Default Primary Key Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Primary Key Join Columns</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>Default Primary Key Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEntity_DefaultPrimaryKeyJoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn" containment="true"
+ * @generated
+ */
+ EList<IPrimaryKeyJoinColumn> getDefaultPrimaryKeyJoinColumns();
+
+ /**
+ * Returns the value of the '<em><b>Attribute Overrides</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Attribute Overrides</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>Attribute Overrides</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEntity_AttributeOverrides()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IAttributeOverride" containment="true" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ EList<IAttributeOverride> getAttributeOverrides();
+
+ /**
+ * Returns the value of the '<em><b>Specified Attribute Overrides</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Attribute Overrides</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>Specified Attribute Overrides</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEntity_SpecifiedAttributeOverrides()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IAttributeOverride" containment="true"
+ * @generated
+ */
+ EList<IAttributeOverride> getSpecifiedAttributeOverrides();
+
+ /**
+ * Returns the value of the '<em><b>Default Attribute Overrides</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Attribute Overrides</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>Default Attribute Overrides</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEntity_DefaultAttributeOverrides()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IAttributeOverride" containment="true"
+ * @generated
+ */
+ EList<IAttributeOverride> getDefaultAttributeOverrides();
+
+ /**
+ * Returns the value of the '<em><b>Association Overrides</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAssociationOverride}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Association Overrides</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>Association Overrides</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEntity_AssociationOverrides()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IAssociationOverride" containment="true" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ EList<IAssociationOverride> getAssociationOverrides();
+
+ /**
+ * Returns the value of the '<em><b>Specified Association Overrides</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAssociationOverride}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Association Overrides</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>Specified Association Overrides</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEntity_SpecifiedAssociationOverrides()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IAssociationOverride" containment="true"
+ * @generated
+ */
+ EList<IAssociationOverride> getSpecifiedAssociationOverrides();
+
+ /**
+ * Returns the value of the '<em><b>Default Association Overrides</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IAssociationOverride}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Association Overrides</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>Default Association Overrides</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEntity_DefaultAssociationOverrides()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IAssociationOverride" containment="true"
+ * @generated
+ */
+ EList<IAssociationOverride> getDefaultAssociationOverrides();
+
+ /**
+ * Returns the value of the '<em><b>Named Queries</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.INamedQuery}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Named Queries</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>Named Queries</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEntity_NamedQueries()
+ * @model type="org.eclipse.jpt.core.internal.mappings.INamedQuery" containment="true"
+ * @generated
+ */
+ EList<INamedQuery> getNamedQueries();
+
+ /**
+ * Returns the value of the '<em><b>Named Native Queries</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.INamedNativeQuery}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Named Native Queries</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>Named Native Queries</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEntity_NamedNativeQueries()
+ * @model type="org.eclipse.jpt.core.internal.mappings.INamedNativeQuery" containment="true"
+ * @generated
+ */
+ EList<INamedNativeQuery> getNamedNativeQueries();
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ boolean discriminatorValueIsAllowed();
+
+ /**
+ * Return the ultimate top of the inheritance hierarchy
+ * This method should never return null. The root
+ * is defined as the persistent type in the inheritance hierarchy
+ * that has no parent. The root should be an entity
+ *
+ * Non-entities in the hierarchy should be ignored, ie skip
+ * over them in the search for the root.
+ *
+ * @model
+ * @generated
+ */
+ IEntity rootEntity();
+
+ /**
+ * <!-- begin-user-doc -->
+ * The first parent in the class hierarchy that is an entity.
+ * This is the parent in the entity (persistent) inheritance hierarchy
+ * (vs class inheritance hierarchy)
+ * <!-- end-user-doc -->
+ * @model
+ * @generated
+ */
+ IEntity parentEntity();
+
+ /**
+ * Return the name of the entity's primary key column.
+ * Return null if the entity's primary key is "compound"
+ * (i.e. the primary key is composed of multiple columns).
+ */
+ String primaryKeyColumnName();
+
+ /**
+ * Return the name of the entity's primary key attribute.
+ * Return null if the entity's primary key is "compound"
+ * (i.e. the primary key is composed of multiple columns).
+ */
+ String primaryKeyAttributeName();
+
+ IAttributeOverride createAttributeOverride(int index);
+
+ IAssociationOverride createAssociationOverride(int index);
+
+ Iterator<String> allOverridableAttributeNames();
+
+ Iterator<String> allOverridableAssociationNames();
+
+ boolean containsAttributeOverride(String name);
+
+ boolean containsSpecifiedAttributeOverride(String name);
+
+ boolean containsAssociationOverride(String name);
+
+ boolean containsSpecifiedAssociationOverride(String name);
+
+ boolean containsSecondaryTable(String name);
+
+ ISecondaryTable createSecondaryTable(int index);
+
+ boolean containsSpecifiedPrimaryKeyJoinColumns();
+
+ IPrimaryKeyJoinColumn createPrimaryKeyJoinColumn(int index);
+
+ INamedQuery createNamedQuery(int index);
+
+ INamedNativeQuery createNamedNativeQuery(int index);
+
+
+ abstract class OverrideOwner implements IOverride.Owner
+ {
+ protected IEntity entity;
+
+ public OverrideOwner(IEntity entity) {
+ this.entity = entity;
+ }
+
+ public ITypeMapping getTypeMapping() {
+ return this.entity;
+ }
+
+ public ITextRange getTextRange() {
+ return entity.getTextRange();
+ }
+ }
+
+
+ class AttributeOverrideOwner extends OverrideOwner
+ {
+ public AttributeOverrideOwner(IEntity entity) {
+ super(entity);
+ }
+
+ public IAttributeMapping attributeMapping(String attributeName) {
+ return (IAttributeMapping) columnMapping(attributeName);
+ }
+
+ private IColumnMapping columnMapping(String attributeName) {
+ for (Iterator<IPersistentAttribute> stream = this.entity.getPersistentType().allAttributes(); stream.hasNext();) {
+ IPersistentAttribute persAttribute = stream.next();
+ if (attributeName.equals(persAttribute.getName())) {
+ if (persAttribute.getMapping() instanceof IColumnMapping) {
+ return (IColumnMapping) persAttribute.getMapping();
+ }
+ }
+ }
+ return null;
+ }
+
+ public boolean isVirtual(IOverride override) {
+ return entity.getDefaultAttributeOverrides().contains(override);
+ }
+ }
+
+
+ class AssociationOverrideOwner extends OverrideOwner
+ {
+ public AssociationOverrideOwner(IEntity entity) {
+ super(entity);
+ }
+
+ public IAttributeMapping attributeMapping(String attributeName) {
+ for (Iterator<IPersistentAttribute> stream = this.entity.getPersistentType().allAttributes(); stream.hasNext();) {
+ IPersistentAttribute persAttribute = stream.next();
+ if (attributeName.equals(persAttribute.getName())) {
+ if (persAttribute.getMapping() instanceof IColumnMapping) {
+ return persAttribute.getMapping();
+ }
+ }
+ }
+ return null;
+ }
+
+ public boolean isVirtual(IOverride override) {
+ return entity.getDefaultAssociationOverrides().contains(override);
+ }
+ }
+
+
+ class PrimaryKeyJoinColumnOwner implements IAbstractJoinColumn.Owner
+ {
+ private IEntity entity;
+
+ public PrimaryKeyJoinColumnOwner(IEntity entity) {
+ this.entity = entity;
+ }
+
+ public ITextRange getTextRange() {
+ return entity.getTextRange();
+ }
+
+ public ITypeMapping getTypeMapping() {
+ return entity;
+ }
+
+ public Table dbTable(String tableName) {
+ return entity.dbTable(tableName);
+ }
+
+ public Table dbReferencedColumnTable() {
+ IEntity parentEntity = entity.parentEntity();
+ return (parentEntity == null) ? null : parentEntity.primaryDbTable();
+ }
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IGeneratedValue.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IGeneratedValue.java
new file mode 100644
index 0000000000..fd4ad5b0ca
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IGeneratedValue.java
@@ -0,0 +1,87 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import org.eclipse.jpt.core.internal.IJpaSourceObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IGenerated Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IGeneratedValue#getStrategy <em>Strategy</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IGeneratedValue#getGenerator <em>Generator</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIGeneratedValue()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IGeneratedValue extends IJpaSourceObject
+{
+ /**
+ * Returns the value of the '<em><b>Strategy</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.GenerationType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Strategy</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Strategy</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.GenerationType
+ * @see #setStrategy(GenerationType)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIGeneratedValue_Strategy()
+ * @model
+ * @generated
+ */
+ GenerationType getStrategy();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IGeneratedValue#getStrategy <em>Strategy</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Strategy</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.GenerationType
+ * @see #getStrategy()
+ * @generated
+ */
+ void setStrategy(GenerationType value);
+
+ /**
+ * Returns the value of the '<em><b>Generator</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Generator</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Generator</em>' attribute.
+ * @see #setGenerator(String)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIGeneratedValue_Generator()
+ * @model
+ * @generated
+ */
+ String getGenerator();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IGeneratedValue#getGenerator <em>Generator</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Generator</em>' attribute.
+ * @see #getGenerator()
+ * @generated
+ */
+ void setGenerator(String value);
+} // IGeneratedValue
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IGenerator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IGenerator.java
new file mode 100644
index 0000000000..07c74de367
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IGenerator.java
@@ -0,0 +1,177 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import org.eclipse.jpt.core.internal.IJpaSourceObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IGenerator</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IGenerator#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IGenerator#getInitialValue <em>Initial Value</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IGenerator#getSpecifiedInitialValue <em>Specified Initial Value</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IGenerator#getDefaultInitialValue <em>Default Initial Value</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IGenerator#getAllocationSize <em>Allocation Size</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IGenerator#getSpecifiedAllocationSize <em>Specified Allocation Size</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IGenerator#getDefaultAllocationSize <em>Default Allocation Size</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIGenerator()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IGenerator extends IJpaSourceObject
+{
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIGenerator_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IGenerator#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Initial Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Initial 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>Initial Value</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIGenerator_InitialValue()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated
+ */
+ int getInitialValue();
+
+ /**
+ * Returns the value of the '<em><b>Specified Initial Value</b></em>' attribute.
+ * The default value is <code>"-1"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Initial 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>Specified Initial Value</em>' attribute.
+ * @see #setSpecifiedInitialValue(int)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIGenerator_SpecifiedInitialValue()
+ * @model default="-1"
+ * @generated
+ */
+ int getSpecifiedInitialValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IGenerator#getSpecifiedInitialValue <em>Specified Initial Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Initial Value</em>' attribute.
+ * @see #getSpecifiedInitialValue()
+ * @generated
+ */
+ void setSpecifiedInitialValue(int value);
+
+ /**
+ * Returns the value of the '<em><b>Default Initial Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Initial 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>Default Initial Value</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIGenerator_DefaultInitialValue()
+ * @model changeable="false"
+ * @generated
+ */
+ int getDefaultInitialValue();
+
+ /**
+ * Returns the value of the '<em><b>Allocation Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Allocation Size</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Allocation Size</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIGenerator_AllocationSize()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated
+ */
+ int getAllocationSize();
+
+ /**
+ * Returns the value of the '<em><b>Specified Allocation Size</b></em>' attribute.
+ * The default value is <code>"-1"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Allocation Size</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Allocation Size</em>' attribute.
+ * @see #setSpecifiedAllocationSize(int)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIGenerator_SpecifiedAllocationSize()
+ * @model default="-1"
+ * @generated
+ */
+ int getSpecifiedAllocationSize();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IGenerator#getSpecifiedAllocationSize <em>Specified Allocation Size</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Allocation Size</em>' attribute.
+ * @see #getSpecifiedAllocationSize()
+ * @generated
+ */
+ void setSpecifiedAllocationSize(int value);
+
+ /**
+ * Returns the value of the '<em><b>Default Allocation Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Allocation Size</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Allocation Size</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIGenerator_DefaultAllocationSize()
+ * @model changeable="false"
+ * @generated
+ */
+ int getDefaultAllocationSize();
+} // IGenerator
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IId.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IId.java
new file mode 100644
index 0000000000..ed563634b7
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IId.java
@@ -0,0 +1,163 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import org.eclipse.jpt.core.internal.IAttributeMapping;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Id</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IId#getColumn <em>Column</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IId#getGeneratedValue <em>Generated Value</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IId#getTemporal <em>Temporal</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IId#getTableGenerator <em>Table Generator</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IId#getSequenceGenerator <em>Sequence Generator</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIId()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IId extends IAttributeMapping, IColumnMapping
+{
+ /**
+ * Returns the value of the '<em><b>Column</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Column</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Column</em>' containment reference.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIId_Column()
+ * @model containment="true" required="true" changeable="false"
+ * @generated
+ */
+ IColumn getColumn();
+
+ /**
+ * Returns the value of the '<em><b>Generated Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Generated 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>Generated Value</em>' containment reference.
+ * @see #setGeneratedValue(IGeneratedValue)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIId_GeneratedValue()
+ * @model containment="true"
+ * @generated
+ */
+ IGeneratedValue getGeneratedValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IId#getGeneratedValue <em>Generated Value</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Generated Value</em>' containment reference.
+ * @see #getGeneratedValue()
+ * @generated
+ */
+ void setGeneratedValue(IGeneratedValue value);
+
+ /**
+ * Returns the value of the '<em><b>Temporal</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.TemporalType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Temporal</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Temporal</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.TemporalType
+ * @see #setTemporal(TemporalType)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIId_Temporal()
+ * @model
+ * @generated
+ */
+ TemporalType getTemporal();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IId#getTemporal <em>Temporal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Temporal</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.TemporalType
+ * @see #getTemporal()
+ * @generated
+ */
+ void setTemporal(TemporalType value);
+
+ /**
+ * Returns the value of the '<em><b>Table Generator</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Table Generator</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Table Generator</em>' containment reference.
+ * @see #setTableGenerator(ITableGenerator)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIId_TableGenerator()
+ * @model containment="true"
+ * @generated
+ */
+ ITableGenerator getTableGenerator();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IId#getTableGenerator <em>Table Generator</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Table Generator</em>' containment reference.
+ * @see #getTableGenerator()
+ * @generated
+ */
+ void setTableGenerator(ITableGenerator value);
+
+ /**
+ * Returns the value of the '<em><b>Sequence Generator</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Sequence Generator</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Sequence Generator</em>' containment reference.
+ * @see #setSequenceGenerator(ISequenceGenerator)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIId_SequenceGenerator()
+ * @model containment="true"
+ * @generated
+ */
+ ISequenceGenerator getSequenceGenerator();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IId#getSequenceGenerator <em>Sequence Generator</em>}' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Sequence Generator</em>' containment reference.
+ * @see #getSequenceGenerator()
+ * @generated
+ */
+ void setSequenceGenerator(ISequenceGenerator value);
+
+ IGeneratedValue createGeneratedValue();
+
+ ITableGenerator createTableGenerator();
+
+ ISequenceGenerator createSequenceGenerator();
+} // Id \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IJoinColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IJoinColumn.java
new file mode 100644
index 0000000000..9ecc78897c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IJoinColumn.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import java.util.List;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IJoin Column</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIJoinColumn()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IJoinColumn extends IAbstractColumn, IAbstractJoinColumn
+{
+ IJoinColumn.Owner getOwner();
+ /**
+ * interface allowing join columns to be used in multiple places
+ * (e.g. 1:1 mappings and join tables)
+ */
+ interface Owner extends IAbstractJoinColumn.Owner
+ {
+ /**
+ * return the list of join columns containing the join column
+ */
+ List joinColumns();
+
+ /**
+ * return whether the specified table cannot be explicitly specified
+ * in the join column's 'table' element
+ */
+ boolean tableNameIsInvalid(String tableName);
+
+ /**
+ * return whether the join column's table can be specified explicitly
+ */
+ boolean tableIsAllowed();
+
+ /**
+ * return the entity referenced by the join column
+ */
+ IEntity targetEntity();
+
+ /**
+ * return the join column's attribute name
+ */
+ String attributeName();
+
+ /**
+ * return the relationship mapping for this join column
+ */
+ IRelationshipMapping getRelationshipMapping();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IJoinTable.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IJoinTable.java
new file mode 100644
index 0000000000..3aa7f773da
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IJoinTable.java
@@ -0,0 +1,281 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.jpt.core.internal.IAttributeMapping;
+import org.eclipse.jpt.core.internal.IPersistentAttribute;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.db.internal.Table;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IJoin Table</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IJoinTable#getJoinColumns <em>Join Columns</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IJoinTable#getSpecifiedJoinColumns <em>Specified Join Columns</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IJoinTable#getDefaultJoinColumns <em>Default Join Columns</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IJoinTable#getInverseJoinColumns <em>Inverse Join Columns</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IJoinTable#getSpecifiedInverseJoinColumns <em>Specified Inverse Join Columns</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IJoinTable#getDefaultInverseJoinColumns <em>Default Inverse Join Columns</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIJoinTable()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IJoinTable extends ITable
+{
+ /**
+ * Returns the value of the '<em><b>Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Join Columns</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>Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIJoinTable_JoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IJoinColumn" containment="true" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ EList<IJoinColumn> getJoinColumns();
+
+ /**
+ * Returns the value of the '<em><b>Specified Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Join Columns</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>Specified Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIJoinTable_SpecifiedJoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IJoinColumn" containment="true"
+ * @generated
+ */
+ EList<IJoinColumn> getSpecifiedJoinColumns();
+
+ /**
+ * Returns the value of the '<em><b>Default Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Join Columns</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>Default Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIJoinTable_DefaultJoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IJoinColumn" containment="true"
+ * @generated
+ */
+ EList<IJoinColumn> getDefaultJoinColumns();
+
+ /**
+ * Returns the value of the '<em><b>Inverse Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Inverse Join Columns</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>Inverse Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIJoinTable_InverseJoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IJoinColumn" containment="true" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ EList<IJoinColumn> getInverseJoinColumns();
+
+ /**
+ * Returns the value of the '<em><b>Specified Inverse Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Inverse Join Columns</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>Specified Inverse Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIJoinTable_SpecifiedInverseJoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IJoinColumn" containment="true"
+ * @generated
+ */
+ EList<IJoinColumn> getSpecifiedInverseJoinColumns();
+
+ /**
+ * Returns the value of the '<em><b>Default Inverse Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Inverse Join Columns</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>Default Inverse Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIJoinTable_DefaultInverseJoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IJoinColumn" containment="true"
+ * @generated
+ */
+ EList<IJoinColumn> getDefaultInverseJoinColumns();
+
+ IJoinColumn createJoinColumn(int index);
+
+ IJoinColumn createInverseJoinColumn(int index);
+
+ boolean containsSpecifiedJoinColumns();
+
+ boolean containsSpecifiedInverseJoinColumns();
+
+ IRelationshipMapping relationshipMapping();
+ /**
+ * just a little common behavior
+ */
+ abstract class AbstractJoinColumnOwner implements IJoinColumn.Owner
+ {
+ private final IJoinTable joinTable;
+
+ AbstractJoinColumnOwner(IJoinTable joinTable) {
+ super();
+ this.joinTable = joinTable;
+ }
+
+ protected IJoinTable getJoinTable() {
+ return this.joinTable;
+ }
+
+ public IRelationshipMapping getRelationshipMapping() {
+ return joinTable.relationshipMapping();
+ }
+
+ /**
+ * the default table name is always valid and a specified table name
+ * is prohibited (which will be handled elsewhere)
+ */
+ public boolean tableNameIsInvalid(String tableName) {
+ return false;
+ }
+
+ /**
+ * the join column can only be on the join table itself
+ */
+ public boolean tableIsAllowed() {
+ return false;
+ }
+
+ public ITextRange getTextRange() {
+ return joinTable.getTextRange();
+ }
+
+ public ITypeMapping getTypeMapping() {
+ return joinTable.getOwner().getTypeMapping();
+ }
+
+ public Table dbTable(String tableName) {
+ return (joinTable.getName().equals(tableName)) ? joinTable.dbTable() : null;
+ }
+ }
+ /**
+ * owner for "forward-pointer" JoinColumns;
+ * these point at the target/inverse entity
+ */
+ public class InverseJoinColumnOwner extends AbstractJoinColumnOwner
+ {
+ public InverseJoinColumnOwner(IJoinTable joinTable) {
+ super(joinTable);
+ }
+
+ public List<IJoinColumn> joinColumns() {
+ return getJoinTable().getInverseJoinColumns();
+ }
+
+ public IEntity targetEntity() {
+ return getJoinTable().relationshipMapping().getResolvedTargetEntity();
+ }
+
+ public String attributeName() {
+ return getJoinTable().relationshipMapping().getPersistentAttribute().getName();
+ }
+
+ public Table dbTable(String tableName) {
+ Table dbTable = super.dbTable(tableName);
+ if (dbTable != null) {
+ return dbTable;
+ }
+ IEntity targetEntity = targetEntity();
+ return (targetEntity == null) ? null : targetEntity.dbTable(tableName);
+ }
+
+ public Table dbReferencedColumnTable() {
+ IEntity targetEntity = targetEntity();
+ return (targetEntity == null) ? null : targetEntity.primaryDbTable();
+ }
+ }
+ /**
+ * owner for "back-pointer" JoinColumns;
+ * these point at the source/owning entity
+ */
+ public class JoinColumnOwner extends AbstractJoinColumnOwner
+ {
+ public JoinColumnOwner(IJoinTable joinTable) {
+ super(joinTable);
+ }
+
+ public List<IJoinColumn> joinColumns() {
+ return getJoinTable().getJoinColumns();
+ }
+
+ public IEntity targetEntity() {
+ return getJoinTable().relationshipMapping().getEntity();
+ }
+
+ public String attributeName() {
+ IEntity targetEntity = getJoinTable().relationshipMapping().getResolvedTargetEntity();
+ if (targetEntity == null) {
+ return null;
+ }
+ String attributeName = getJoinTable().relationshipMapping().getPersistentAttribute().getName();
+ for (Iterator<IPersistentAttribute> stream = targetEntity.getPersistentType().allAttributes(); stream.hasNext();) {
+ IPersistentAttribute attribute = stream.next();
+ IAttributeMapping mapping = attribute.getMapping();
+ if (mapping instanceof INonOwningMapping) {
+ String mappedBy = ((INonOwningMapping) mapping).getMappedBy();
+ if ((mappedBy != null) && mappedBy.equals(attributeName)) {
+ return attribute.getName();
+ }
+ }
+ }
+ return null;
+ }
+
+ public Table dbTable(String tableName) {
+ Table dbTable = super.dbTable(tableName);
+ if (dbTable != null) {
+ return dbTable;
+ }
+ return getTypeMapping().dbTable(tableName);
+ }
+
+ public Table dbReferencedColumnTable() {
+ return getTypeMapping().primaryDbTable();
+ }
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IManyToMany.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IManyToMany.java
new file mode 100644
index 0000000000..b06172c109
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IManyToMany.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IMany To Many</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIManyToMany()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IManyToMany extends IMultiRelationshipMapping
+{} // IManyToMany \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IManyToOne.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IManyToOne.java
new file mode 100644
index 0000000000..3e7027ad9c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IManyToOne.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IMany To One</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIManyToOne()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IManyToOne extends ISingleRelationshipMapping
+{} // IManyToOne
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IMappedSuperclass.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IMappedSuperclass.java
new file mode 100644
index 0000000000..2eb307174a
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IMappedSuperclass.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import org.eclipse.jpt.core.internal.ITypeMapping;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Mapped Superclass</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIMappedSuperclass()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IMappedSuperclass extends ITypeMapping
+{} // MappedSuperclass \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IMultiRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IMultiRelationshipMapping.java
new file mode 100644
index 0000000000..913da4103c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IMultiRelationshipMapping.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IMulti Relationship Mapping</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping#getFetch <em>Fetch</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping#getJoinTable <em>Join Table</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping#getOrderBy <em>Order By</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIMultiRelationshipMapping()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IMultiRelationshipMapping extends INonOwningMapping
+{
+ /**
+ * Returns the value of the '<em><b>Fetch</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultLazyFetchType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Fetch</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Fetch</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultLazyFetchType
+ * @see #setFetch(DefaultLazyFetchType)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIMultiRelationshipMapping_Fetch()
+ * @model
+ * @generated
+ */
+ DefaultLazyFetchType getFetch();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping#getFetch <em>Fetch</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Fetch</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultLazyFetchType
+ * @see #getFetch()
+ * @generated
+ */
+ void setFetch(DefaultLazyFetchType value);
+
+ /**
+ * Returns the value of the '<em><b>Join Table</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Join Table</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Join Table</em>' containment reference.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIMultiRelationshipMapping_JoinTable()
+ * @model containment="true" required="true" changeable="false"
+ * @generated
+ */
+ IJoinTable getJoinTable();
+
+ /**
+ * Returns the value of the '<em><b>Order By</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Order By</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Order By</em>' containment reference.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIMultiRelationshipMapping_OrderBy()
+ * @model containment="true" required="true" changeable="false"
+ * @generated
+ */
+ IOrderBy getOrderBy();
+} // IMultiRelationshipMapping \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/INamedColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/INamedColumn.java
new file mode 100644
index 0000000000..f18633b968
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/INamedColumn.java
@@ -0,0 +1,136 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import org.eclipse.jpt.core.internal.IJpaSourceObject;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.db.internal.Table;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>INamed Column</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.INamedColumn#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.INamedColumn#getSpecifiedName <em>Specified Name</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.INamedColumn#getDefaultName <em>Default Name</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.INamedColumn#getColumnDefinition <em>Column Definition</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getINamedColumn()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface INamedColumn extends IJpaSourceObject
+{
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getINamedColumn_Name()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Returns the value of the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Name</em>' attribute.
+ * @see #setSpecifiedName(String)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getINamedColumn_SpecifiedName()
+ * @model
+ * @generated
+ */
+ String getSpecifiedName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.INamedColumn#getSpecifiedName <em>Specified Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Name</em>' attribute.
+ * @see #getSpecifiedName()
+ * @generated
+ */
+ void setSpecifiedName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getINamedColumn_DefaultName()
+ * @model changeable="false"
+ * @generated
+ */
+ String getDefaultName();
+
+ /**
+ * Returns the value of the '<em><b>Column Definition</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Column Definition</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Column Definition</em>' attribute.
+ * @see #setColumnDefinition(String)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getINamedColumn_ColumnDefinition()
+ * @model
+ * @generated
+ */
+ String getColumnDefinition();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.INamedColumn#getColumnDefinition <em>Column Definition</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Column Definition</em>' attribute.
+ * @see #getColumnDefinition()
+ * @generated
+ */
+ void setColumnDefinition(String value);
+
+ Owner getOwner();
+ /**
+ * interface allowing columns to be used in multiple places
+ * (e.g. basic mappings and attribute overrides)
+ */
+ interface Owner
+ {
+ ITypeMapping getTypeMapping();
+
+ ITextRange getTextRange();
+
+ /**
+ * Return the wrapper for the datasource table for the given table name
+ */
+ Table dbTable(String tableName);
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/INamedNativeQuery.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/INamedNativeQuery.java
new file mode 100644
index 0000000000..ba382a05e3
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/INamedNativeQuery.java
@@ -0,0 +1,84 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import org.eclipse.jpt.core.internal.IJpaSourceObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>INamed Native Query</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.INamedNativeQuery#getResultClass <em>Result Class</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.INamedNativeQuery#getResultSetMapping <em>Result Set Mapping</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getINamedNativeQuery()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface INamedNativeQuery extends IJpaSourceObject, IQuery
+{
+ /**
+ * Returns the value of the '<em><b>Result Class</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Result Class</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Result Class</em>' attribute.
+ * @see #setResultClass(String)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getINamedNativeQuery_ResultClass()
+ * @model
+ * @generated
+ */
+ String getResultClass();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.INamedNativeQuery#getResultClass <em>Result Class</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Result Class</em>' attribute.
+ * @see #getResultClass()
+ * @generated
+ */
+ void setResultClass(String value);
+
+ /**
+ * Returns the value of the '<em><b>Result Set Mapping</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Result Set Mapping</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Result Set Mapping</em>' attribute.
+ * @see #setResultSetMapping(String)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getINamedNativeQuery_ResultSetMapping()
+ * @model
+ * @generated
+ */
+ String getResultSetMapping();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.INamedNativeQuery#getResultSetMapping <em>Result Set Mapping</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Result Set Mapping</em>' attribute.
+ * @see #getResultSetMapping()
+ * @generated
+ */
+ void setResultSetMapping(String value);
+} // INamedNativeQuery
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/INamedQuery.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/INamedQuery.java
new file mode 100644
index 0000000000..fc6c348e9c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/INamedQuery.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import org.eclipse.jpt.core.internal.IJpaSourceObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>INamed Query</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getINamedQuery()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface INamedQuery extends IJpaSourceObject, IQuery
+{} // INamedQuery
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/INonOwningMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/INonOwningMapping.java
new file mode 100644
index 0000000000..1b56c1870b
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/INonOwningMapping.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import java.util.Iterator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>INon Owning Mapping</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.INonOwningMapping#getMappedBy <em>Mapped By</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getINonOwningMapping()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface INonOwningMapping extends IRelationshipMapping
+{
+ /**
+ * Returns the value of the '<em><b>Mapped By</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Mapped By</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Mapped By</em>' attribute.
+ * @see #setMappedBy(String)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getINonOwningMapping_MappedBy()
+ * @model
+ * @generated
+ */
+ String getMappedBy();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.INonOwningMapping#getMappedBy <em>Mapped By</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Mapped By</em>' attribute.
+ * @see #getMappedBy()
+ * @generated
+ */
+ void setMappedBy(String value);
+
+ Iterator<String> possibleMappedByAttributeNames();
+} // INonOwningMapping
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IOneToMany.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IOneToMany.java
new file mode 100644
index 0000000000..f10722c7f5
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IOneToMany.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IOne To Many</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIOneToMany()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IOneToMany extends IMultiRelationshipMapping
+{} // IOneToMany \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IOneToOne.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IOneToOne.java
new file mode 100644
index 0000000000..c44b7b5ba1
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IOneToOne.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IOne To One</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIOneToOne()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IOneToOne
+ extends ISingleRelationshipMapping, INonOwningMapping
+{} // IOneToOne
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IOrderBy.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IOrderBy.java
new file mode 100644
index 0000000000..90075968c3
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IOrderBy.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import org.eclipse.jpt.core.internal.IJpaSourceObject;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IOrder By</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IOrderBy#getValue <em>Value</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IOrderBy#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIOrderBy()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IOrderBy extends IJpaSourceObject
+{
+ /**
+ * 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.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIOrderBy_Value()
+ * @model
+ * @generated
+ */
+ String getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IOrderBy#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);
+
+ /**
+ * Returns the value of the '<em><b>Type</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.OrderingType}.
+ * <!-- 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.jpt.core.internal.mappings.OrderingType
+ * @see #setType(OrderingType)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIOrderBy_Type()
+ * @model
+ * @generated
+ */
+ OrderingType getType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IOrderBy#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.jpt.core.internal.mappings.OrderingType
+ * @see #getType()
+ * @generated
+ */
+ void setType(OrderingType value);
+
+ void refreshDefaults(DefaultsContext defaultsContext);
+} // IOrderBy
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IOverride.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IOverride.java
new file mode 100644
index 0000000000..a34a13b3cd
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IOverride.java
@@ -0,0 +1,81 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import org.eclipse.jpt.core.internal.IAttributeMapping;
+import org.eclipse.jpt.core.internal.IJpaSourceObject;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IOverride</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IOverride#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIOverride()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IOverride extends IJpaSourceObject
+{
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIOverride_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IOverride#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Return true if override exists as specified on the owning object, or false
+ * if the override is "gotten for free" as a result of defaults calculation
+ */
+ boolean isVirtual();
+
+
+ Owner getOwner();
+
+
+ interface Owner
+ {
+ ITypeMapping getTypeMapping();
+
+ IAttributeMapping attributeMapping(String attributeName);
+
+ boolean isVirtual(IOverride override);
+
+ ITextRange getTextRange();
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IPrimaryKeyJoinColumn.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IPrimaryKeyJoinColumn.java
new file mode 100644
index 0000000000..79235c8643
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IPrimaryKeyJoinColumn.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IPrimary Key Join Column</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIPrimaryKeyJoinColumn()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IPrimaryKeyJoinColumn extends IAbstractJoinColumn
+{} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IQuery.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IQuery.java
new file mode 100644
index 0000000000..de11b6f43b
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IQuery.java
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.jpt.core.internal.IJpaSourceObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IQuery</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IQuery#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IQuery#getQuery <em>Query</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IQuery#getHints <em>Hints</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIQuery()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IQuery extends IJpaSourceObject
+{
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIQuery_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IQuery#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Query</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Query</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Query</em>' attribute.
+ * @see #setQuery(String)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIQuery_Query()
+ * @model
+ * @generated
+ */
+ String getQuery();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IQuery#getQuery <em>Query</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Query</em>' attribute.
+ * @see #getQuery()
+ * @generated
+ */
+ void setQuery(String value);
+
+ /**
+ * Returns the value of the '<em><b>Hints</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IQueryHint}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Hints</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>Hints</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIQuery_Hints()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IQueryHint" containment="true"
+ * @generated
+ */
+ EList<IQueryHint> getHints();
+
+ IQueryHint createQueryHint(int index);
+} // IQuery
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IQueryHint.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IQueryHint.java
new file mode 100644
index 0000000000..3d092622f5
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IQueryHint.java
@@ -0,0 +1,84 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import org.eclipse.jpt.core.internal.IJpaSourceObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IQuery Hint</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IQueryHint#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IQueryHint#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIQueryHint()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IQueryHint extends IJpaSourceObject
+{
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIQueryHint_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IQueryHint#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * 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.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIQueryHint_Value()
+ * @model
+ * @generated
+ */
+ String getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IQueryHint#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);
+} // IQueryHint
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IRelationshipMapping.java
new file mode 100644
index 0000000000..966cb54afc
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IRelationshipMapping.java
@@ -0,0 +1,134 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import org.eclipse.jpt.core.internal.IAttributeMapping;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IRelationship Mapping</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IRelationshipMapping#getTargetEntity <em>Target Entity</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IRelationshipMapping#getSpecifiedTargetEntity <em>Specified Target Entity</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IRelationshipMapping#getDefaultTargetEntity <em>Default Target Entity</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IRelationshipMapping#getResolvedTargetEntity <em>Resolved Target Entity</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIRelationshipMapping()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IRelationshipMapping extends IAttributeMapping
+{
+ /**
+ * Returns the value of the '<em><b>Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Target Entity</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Target Entity</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIRelationshipMapping_TargetEntity()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated
+ */
+ String getTargetEntity();
+
+ /**
+ * Returns the value of the '<em><b>Specified Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Target Entity</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Target Entity</em>' attribute.
+ * @see #setSpecifiedTargetEntity(String)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIRelationshipMapping_SpecifiedTargetEntity()
+ * @model
+ * @generated
+ */
+ String getSpecifiedTargetEntity();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IRelationshipMapping#getSpecifiedTargetEntity <em>Specified Target Entity</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Target Entity</em>' attribute.
+ * @see #getSpecifiedTargetEntity()
+ * @generated
+ */
+ void setSpecifiedTargetEntity(String value);
+
+ /**
+ * Returns the value of the '<em><b>Default Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Target Entity</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Target Entity</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIRelationshipMapping_DefaultTargetEntity()
+ * @model changeable="false"
+ * @generated
+ */
+ String getDefaultTargetEntity();
+
+ /**
+ * Returns the value of the '<em><b>Resolved Target Entity</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Resolved Target Entity</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Resolved Target Entity</em>' reference.
+ * @see #setResolvedTargetEntity(IEntity)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIRelationshipMapping_ResolvedTargetEntity()
+ * @model
+ * @generated
+ */
+ IEntity getResolvedTargetEntity();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IRelationshipMapping#getResolvedTargetEntity <em>Resolved Target Entity</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Resolved Target Entity</em>' reference.
+ * @see #getResolvedTargetEntity()
+ * @generated
+ */
+ void setResolvedTargetEntity(IEntity value);
+
+ /**
+ * Return whether the specified 'targetEntity' is valid.
+ */
+ boolean targetEntityIsValid(String targetEntity);
+
+ /**
+ * Return the fully qualified target entity. If it is already specified
+ * as fully qualified then just return that.
+ * @return
+ */
+ String fullyQualifiedTargetEntity();
+
+ /**
+ * Return the Entity that owns this relationship mapping
+ * @return
+ */
+ IEntity getEntity();
+} // IRelationshipMapping
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ISecondaryTable.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ISecondaryTable.java
new file mode 100644
index 0000000000..8ab0a6e34f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ISecondaryTable.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>ISecondary Table</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getISecondaryTable()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface ISecondaryTable extends ITable
+{} // ISecondaryTable
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ISequenceGenerator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ISequenceGenerator.java
new file mode 100644
index 0000000000..ca2e191675
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ISequenceGenerator.java
@@ -0,0 +1,87 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>ISequence Generator</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.ISequenceGenerator#getSequenceName <em>Sequence Name</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.ISequenceGenerator#getSpecifiedSequenceName <em>Specified Sequence Name</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.ISequenceGenerator#getDefaultSequenceName <em>Default Sequence Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getISequenceGenerator()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface ISequenceGenerator extends IGenerator
+{
+ /**
+ * Returns the value of the '<em><b>Sequence Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Sequence Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Sequence Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getISequenceGenerator_SequenceName()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated
+ */
+ String getSequenceName();
+
+ /**
+ * Returns the value of the '<em><b>Specified Sequence Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Sequence Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Sequence Name</em>' attribute.
+ * @see #setSpecifiedSequenceName(String)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getISequenceGenerator_SpecifiedSequenceName()
+ * @model
+ * @generated
+ */
+ String getSpecifiedSequenceName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.ISequenceGenerator#getSpecifiedSequenceName <em>Specified Sequence Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Sequence Name</em>' attribute.
+ * @see #getSpecifiedSequenceName()
+ * @generated
+ */
+ void setSpecifiedSequenceName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Default Sequence Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Sequence Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Sequence Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getISequenceGenerator_DefaultSequenceName()
+ * @model changeable="false"
+ * @generated
+ */
+ String getDefaultSequenceName();
+} // ISequenceGenerator
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ISingleRelationshipMapping.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ISingleRelationshipMapping.java
new file mode 100644
index 0000000000..80ea9064ac
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ISingleRelationshipMapping.java
@@ -0,0 +1,180 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import java.util.List;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.db.internal.Table;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>ISingle Relationship Mapping</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping#getFetch <em>Fetch</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping#getJoinColumns <em>Join Columns</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping#getSpecifiedJoinColumns <em>Specified Join Columns</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping#getDefaultJoinColumns <em>Default Join Columns</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getISingleRelationshipMapping()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface ISingleRelationshipMapping extends IRelationshipMapping
+{
+ /**
+ * Returns the value of the '<em><b>Fetch</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Fetch</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Fetch</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType
+ * @see #setFetch(DefaultEagerFetchType)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getISingleRelationshipMapping_Fetch()
+ * @model
+ * @generated
+ */
+ DefaultEagerFetchType getFetch();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping#getFetch <em>Fetch</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Fetch</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType
+ * @see #getFetch()
+ * @generated
+ */
+ void setFetch(DefaultEagerFetchType value);
+
+ /**
+ * Returns the value of the '<em><b>Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Join Columns</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>Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getISingleRelationshipMapping_JoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IJoinColumn" containment="true" transient="true" changeable="false" volatile="true"
+ * @generated
+ */
+ EList<IJoinColumn> getJoinColumns();
+
+ /**
+ * Returns the value of the '<em><b>Specified Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Join Columns</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>Specified Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getISingleRelationshipMapping_SpecifiedJoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IJoinColumn" containment="true"
+ * @generated
+ */
+ EList<IJoinColumn> getSpecifiedJoinColumns();
+
+ /**
+ * Returns the value of the '<em><b>Default Join Columns</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.jpt.core.internal.mappings.IJoinColumn}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Join Columns</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>Default Join Columns</em>' containment reference list.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getISingleRelationshipMapping_DefaultJoinColumns()
+ * @model type="org.eclipse.jpt.core.internal.mappings.IJoinColumn" containment="true"
+ * @generated
+ */
+ EList<IJoinColumn> getDefaultJoinColumns();
+
+ boolean containsSpecifiedJoinColumns();
+
+ IJoinColumn createJoinColumn(int index);
+ public class JoinColumnOwner implements IJoinColumn.Owner
+ {
+ private ISingleRelationshipMapping singleRelationshipMapping;
+
+ public JoinColumnOwner(ISingleRelationshipMapping singleRelationshipMapping) {
+ super();
+ this.singleRelationshipMapping = singleRelationshipMapping;
+ }
+
+ /**
+ * by default, the join column is in the type mapping's primary table
+ */
+ public String defaultTableName() {
+ return this.singleRelationshipMapping.getPersistentAttribute().typeMapping().getTableName();
+ }
+
+ public List joinColumns() {
+ return this.singleRelationshipMapping.getJoinColumns();
+ }
+
+ public IEntity targetEntity() {
+ return this.singleRelationshipMapping.getResolvedTargetEntity();
+ }
+
+ public String attributeName() {
+ return this.singleRelationshipMapping.getPersistentAttribute().getName();
+ }
+
+ public IRelationshipMapping getRelationshipMapping() {
+ return singleRelationshipMapping;
+ }
+
+ public boolean tableNameIsInvalid(String tableName) {
+ return this.singleRelationshipMapping.getPersistentAttribute().typeMapping().tableNameIsInvalid(tableName);
+ }
+
+ /**
+ * the join column can be on a secondary table
+ */
+ public boolean tableIsAllowed() {
+ return true;
+ }
+
+ public ITextRange getTextRange() {
+ // TODO Auto-generated method stub
+ return singleRelationshipMapping.getTextRange();
+ }
+
+ public ITypeMapping getTypeMapping() {
+ return singleRelationshipMapping.typeMapping();
+ }
+
+ public Table dbTable(String tableName) {
+ return getTypeMapping().dbTable(tableName);
+ }
+
+ public Table dbReferencedColumnTable() {
+ IEntity targetEntity = targetEntity();
+ return (targetEntity == null) ? null : targetEntity().primaryDbTable();
+ }
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ITable.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ITable.java
new file mode 100644
index 0000000000..7c80cb71e1
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ITable.java
@@ -0,0 +1,245 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import org.eclipse.jpt.core.internal.IJpaSourceObject;
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+import org.eclipse.jpt.db.internal.Table;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>ITable</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.ITable#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.ITable#getSpecifiedName <em>Specified Name</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.ITable#getDefaultName <em>Default Name</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.ITable#getCatalog <em>Catalog</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.ITable#getSpecifiedCatalog <em>Specified Catalog</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.ITable#getDefaultCatalog <em>Default Catalog</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.ITable#getSchema <em>Schema</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.ITable#getSpecifiedSchema <em>Specified Schema</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.ITable#getDefaultSchema <em>Default Schema</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITable()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface ITable extends IJpaSourceObject
+{
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITable_Name()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Returns the value of the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITable_DefaultName()
+ * @model changeable="false"
+ * @generated
+ */
+ String getDefaultName();
+
+ /**
+ * Returns the value of the '<em><b>Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Catalog</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Catalog</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITable_Catalog()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated
+ */
+ String getCatalog();
+
+ /**
+ * Returns the value of the '<em><b>Specified Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Catalog</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Catalog</em>' attribute.
+ * @see #setSpecifiedCatalog(String)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITable_SpecifiedCatalog()
+ * @model
+ * @generated
+ */
+ String getSpecifiedCatalog();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.ITable#getSpecifiedCatalog <em>Specified Catalog</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Catalog</em>' attribute.
+ * @see #getSpecifiedCatalog()
+ * @generated
+ */
+ void setSpecifiedCatalog(String value);
+
+ /**
+ * Returns the value of the '<em><b>Default Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Catalog</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Catalog</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITable_DefaultCatalog()
+ * @model changeable="false"
+ * @generated
+ */
+ String getDefaultCatalog();
+
+ /**
+ * Returns the value of the '<em><b>Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Schema</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Schema</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITable_Schema()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated
+ */
+ String getSchema();
+
+ /**
+ * Returns the value of the '<em><b>Specified Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Schema</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Schema</em>' attribute.
+ * @see #setSpecifiedSchema(String)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITable_SpecifiedSchema()
+ * @model
+ * @generated
+ */
+ String getSpecifiedSchema();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.ITable#getSpecifiedSchema <em>Specified Schema</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Schema</em>' attribute.
+ * @see #getSpecifiedSchema()
+ * @generated
+ */
+ void setSpecifiedSchema(String value);
+
+ /**
+ * Returns the value of the '<em><b>Default Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Schema</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Schema</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITable_DefaultSchema()
+ * @model changeable="false"
+ * @generated
+ */
+ String getDefaultSchema();
+
+ /**
+ * Returns the value of the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Name</em>' attribute.
+ * @see #setSpecifiedName(String)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITable_SpecifiedName()
+ * @model
+ * @generated
+ */
+ String getSpecifiedName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.ITable#getSpecifiedName <em>Specified Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Name</em>' attribute.
+ * @see #getSpecifiedName()
+ * @generated
+ */
+ void setSpecifiedName(String value);
+
+ void refreshDefaults(DefaultsContext defaultsContext);
+
+ Table dbTable();
+
+ /**
+ * Return true if this table is connected to a datasource
+ */
+ boolean isConnected();
+
+ /**
+ * Return true if this table's schema can be resolved to a schema on the active connection
+ */
+ boolean hasResolvedSchema();
+
+ /**
+ * Return true if this can be resolved to a table on the active connection
+ */
+ boolean isResolved();
+
+ ITextRange getNameTextRange();
+
+ ITextRange getSchemaTextRange();
+
+ Owner getOwner();
+ /**
+ * interface allowing tables to be owned by various objects
+ */
+ interface Owner
+ {
+ ITextRange getTextRange();
+
+ ITypeMapping getTypeMapping();
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ITableGenerator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ITableGenerator.java
new file mode 100644
index 0000000000..b9e0012a52
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ITableGenerator.java
@@ -0,0 +1,386 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import org.eclipse.jpt.core.internal.platform.DefaultsContext;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>ITable Generator</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getTable <em>Table</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getSpecifiedTable <em>Specified Table</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getDefaultTable <em>Default Table</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getCatalog <em>Catalog</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getSpecifiedCatalog <em>Specified Catalog</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getDefaultCatalog <em>Default Catalog</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getSchema <em>Schema</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getSpecifiedSchema <em>Specified Schema</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getDefaultSchema <em>Default Schema</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getPkColumnName <em>Pk Column Name</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getSpecifiedPkColumnName <em>Specified Pk Column Name</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getDefaultPkColumnName <em>Default Pk Column Name</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getValueColumnName <em>Value Column Name</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getSpecifiedValueColumnName <em>Specified Value Column Name</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getDefaultValueColumnName <em>Default Value Column Name</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getPkColumnValue <em>Pk Column Value</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getSpecifiedPkColumnValue <em>Specified Pk Column Value</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getDefaultPkColumnValue <em>Default Pk Column Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITableGenerator()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface ITableGenerator extends IGenerator
+{
+ /**
+ * Returns the value of the '<em><b>Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Table</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Table</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITableGenerator_Table()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated
+ */
+ String getTable();
+
+ /**
+ * Returns the value of the '<em><b>Specified Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Table</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Table</em>' attribute.
+ * @see #setSpecifiedTable(String)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITableGenerator_SpecifiedTable()
+ * @model
+ * @generated
+ */
+ String getSpecifiedTable();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getSpecifiedTable <em>Specified Table</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Table</em>' attribute.
+ * @see #getSpecifiedTable()
+ * @generated
+ */
+ void setSpecifiedTable(String value);
+
+ /**
+ * Returns the value of the '<em><b>Default Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Table</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Table</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITableGenerator_DefaultTable()
+ * @model changeable="false"
+ * @generated
+ */
+ String getDefaultTable();
+
+ /**
+ * Returns the value of the '<em><b>Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Catalog</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Catalog</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITableGenerator_Catalog()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated
+ */
+ String getCatalog();
+
+ /**
+ * Returns the value of the '<em><b>Specified Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Catalog</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Catalog</em>' attribute.
+ * @see #setSpecifiedCatalog(String)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITableGenerator_SpecifiedCatalog()
+ * @model
+ * @generated
+ */
+ String getSpecifiedCatalog();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getSpecifiedCatalog <em>Specified Catalog</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Catalog</em>' attribute.
+ * @see #getSpecifiedCatalog()
+ * @generated
+ */
+ void setSpecifiedCatalog(String value);
+
+ /**
+ * Returns the value of the '<em><b>Default Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Catalog</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Catalog</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITableGenerator_DefaultCatalog()
+ * @model changeable="false"
+ * @generated
+ */
+ String getDefaultCatalog();
+
+ /**
+ * Returns the value of the '<em><b>Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Schema</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Schema</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITableGenerator_Schema()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated
+ */
+ String getSchema();
+
+ /**
+ * Returns the value of the '<em><b>Specified Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Schema</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Schema</em>' attribute.
+ * @see #setSpecifiedSchema(String)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITableGenerator_SpecifiedSchema()
+ * @model
+ * @generated
+ */
+ String getSpecifiedSchema();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getSpecifiedSchema <em>Specified Schema</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Schema</em>' attribute.
+ * @see #getSpecifiedSchema()
+ * @generated
+ */
+ void setSpecifiedSchema(String value);
+
+ /**
+ * Returns the value of the '<em><b>Default Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Schema</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Schema</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITableGenerator_DefaultSchema()
+ * @model changeable="false"
+ * @generated
+ */
+ String getDefaultSchema();
+
+ /**
+ * Returns the value of the '<em><b>Pk Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Pk Column Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Pk Column Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITableGenerator_PkColumnName()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated
+ */
+ String getPkColumnName();
+
+ /**
+ * Returns the value of the '<em><b>Specified Pk Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Pk Column Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Pk Column Name</em>' attribute.
+ * @see #setSpecifiedPkColumnName(String)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITableGenerator_SpecifiedPkColumnName()
+ * @model
+ * @generated
+ */
+ String getSpecifiedPkColumnName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getSpecifiedPkColumnName <em>Specified Pk Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Pk Column Name</em>' attribute.
+ * @see #getSpecifiedPkColumnName()
+ * @generated
+ */
+ void setSpecifiedPkColumnName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Default Pk Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Pk Column Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Pk Column Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITableGenerator_DefaultPkColumnName()
+ * @model changeable="false"
+ * @generated
+ */
+ String getDefaultPkColumnName();
+
+ /**
+ * Returns the value of the '<em><b>Value Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Value Column Name</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 Column Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITableGenerator_ValueColumnName()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated
+ */
+ String getValueColumnName();
+
+ /**
+ * Returns the value of the '<em><b>Specified Value Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Value Column Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Specified Value Column Name</em>' attribute.
+ * @see #setSpecifiedValueColumnName(String)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITableGenerator_SpecifiedValueColumnName()
+ * @model
+ * @generated
+ */
+ String getSpecifiedValueColumnName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getSpecifiedValueColumnName <em>Specified Value Column Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Value Column Name</em>' attribute.
+ * @see #getSpecifiedValueColumnName()
+ * @generated
+ */
+ void setSpecifiedValueColumnName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Default Value Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Value Column Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Default Value Column Name</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITableGenerator_DefaultValueColumnName()
+ * @model changeable="false"
+ * @generated
+ */
+ String getDefaultValueColumnName();
+
+ /**
+ * Returns the value of the '<em><b>Pk Column Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Pk Column 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>Pk Column Value</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITableGenerator_PkColumnValue()
+ * @model changeable="false" volatile="true" derived="true"
+ * @generated
+ */
+ String getPkColumnValue();
+
+ /**
+ * Returns the value of the '<em><b>Specified Pk Column Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Specified Pk Column 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>Specified Pk Column Value</em>' attribute.
+ * @see #setSpecifiedPkColumnValue(String)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITableGenerator_SpecifiedPkColumnValue()
+ * @model
+ * @generated
+ */
+ String getSpecifiedPkColumnValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getSpecifiedPkColumnValue <em>Specified Pk Column Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Specified Pk Column Value</em>' attribute.
+ * @see #getSpecifiedPkColumnValue()
+ * @generated
+ */
+ void setSpecifiedPkColumnValue(String value);
+
+ /**
+ * Returns the value of the '<em><b>Default Pk Column Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Default Pk Column 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>Default Pk Column Value</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITableGenerator_DefaultPkColumnValue()
+ * @model changeable="false"
+ * @generated
+ */
+ String getDefaultPkColumnValue();
+
+ void refreshDefaults(DefaultsContext defaultsContext);
+} // ITableGenerator
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ITransient.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ITransient.java
new file mode 100644
index 0000000000..8024da8f27
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/ITransient.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import org.eclipse.jpt.core.internal.IAttributeMapping;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>ITransient</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITransient()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface ITransient extends IAttributeMapping
+{} // ITransient
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IVersion.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IVersion.java
new file mode 100644
index 0000000000..1f3ed18483
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/IVersion.java
@@ -0,0 +1,76 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import org.eclipse.jpt.core.internal.IAttributeMapping;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>IVersion</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IVersion#getColumn <em>Column</em>}</li>
+ * <li>{@link org.eclipse.jpt.core.internal.mappings.IVersion#getTemporal <em>Temporal</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIVersion()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface IVersion extends IAttributeMapping, IColumnMapping
+{
+ /**
+ * Returns the value of the '<em><b>Column</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Column</em>' containment reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Column</em>' containment reference.
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIVersion_Column()
+ * @model containment="true" required="true" changeable="false"
+ * @generated
+ */
+ IColumn getColumn();
+
+ /**
+ * Returns the value of the '<em><b>Temporal</b></em>' attribute.
+ * The literals are from the enumeration {@link org.eclipse.jpt.core.internal.mappings.TemporalType}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Temporal</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Temporal</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.TemporalType
+ * @see #setTemporal(TemporalType)
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIVersion_Temporal()
+ * @model
+ * @generated
+ */
+ TemporalType getTemporal();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.jpt.core.internal.mappings.IVersion#getTemporal <em>Temporal</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Temporal</em>' attribute.
+ * @see org.eclipse.jpt.core.internal.mappings.TemporalType
+ * @see #getTemporal()
+ * @generated
+ */
+ void setTemporal(TemporalType value);
+} // IVersion
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/InheritanceType.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/InheritanceType.java
new file mode 100644
index 0000000000..ccd4ef21ed
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/InheritanceType.java
@@ -0,0 +1,303 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import static org.eclipse.jpt.core.internal.mappings.InheritanceType.DEFAULT_VALUE;
+import static org.eclipse.jpt.core.internal.mappings.InheritanceType.JOINED_VALUE;
+import static org.eclipse.jpt.core.internal.mappings.InheritanceType.SINGLE_TABLE_VALUE;
+import static org.eclipse.jpt.core.internal.mappings.InheritanceType.TABLE_PER_CLASS_VALUE;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import org.eclipse.emf.common.util.Enumerator;
+import org.eclipse.jpt.core.internal.content.java.mappings.JPA;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Inheritance Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getInheritanceType()
+ * @model
+ * @generated
+ */
+public enum InheritanceType implements Enumerator {
+ /**
+ * The '<em><b>Default</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #DEFAULT_VALUE
+ * @generated
+ * @ordered
+ */
+ DEFAULT(0, "Default", "Default (Single Table)"),
+ /**
+ * The '<em><b>SINGLE TABLE</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #SINGLE_TABLE_VALUE
+ * @generated
+ * @ordered
+ */
+ SINGLE_TABLE(1, "SINGLE_TABLE", "Single Table"),
+ /**
+ * The '<em><b>JOINED</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #JOINED_VALUE
+ * @generated
+ * @ordered
+ */
+ JOINED(2, "JOINED", "Joined"),
+ /**
+ * The '<em><b>TABLE PER CLASS</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #TABLE_PER_CLASS_VALUE
+ * @generated
+ * @ordered
+ */
+ TABLE_PER_CLASS(3, "TABLE_PER_CLASS", "Table per Class");
+ /**
+ * The '<em><b>Default</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Default</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #DEFAULT
+ * @model name="Default" literal="Default (Single Table)"
+ * @generated
+ * @ordered
+ */
+ public static final int DEFAULT_VALUE = 0;
+
+ /**
+ * The '<em><b>SINGLE TABLE</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Single Table</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #SINGLE_TABLE
+ * @model literal="Single Table"
+ * @generated
+ * @ordered
+ */
+ public static final int SINGLE_TABLE_VALUE = 1;
+
+ /**
+ * The '<em><b>JOINED</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Joined</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #JOINED
+ * @model literal="Joined"
+ * @generated
+ * @ordered
+ */
+ public static final int JOINED_VALUE = 2;
+
+ /**
+ * The '<em><b>TABLE PER CLASS</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Table Per Class</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #TABLE_PER_CLASS
+ * @model literal="Table per Class"
+ * @generated
+ * @ordered
+ */
+ public static final int TABLE_PER_CLASS_VALUE = 3;
+
+ /**
+ * An array of all the '<em><b>Inheritance Type</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final InheritanceType[] VALUES_ARRAY = new InheritanceType[] {
+ DEFAULT, SINGLE_TABLE, JOINED, TABLE_PER_CLASS,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Inheritance Type</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<InheritanceType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Inheritance Type</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static InheritanceType get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ InheritanceType result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Inheritance Type</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static InheritanceType getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ InheritanceType result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Inheritance Type</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static InheritanceType get(int value) {
+ switch (value) {
+ case DEFAULT_VALUE :
+ return DEFAULT;
+ case SINGLE_TABLE_VALUE :
+ return SINGLE_TABLE;
+ case JOINED_VALUE :
+ return JOINED;
+ case TABLE_PER_CLASS_VALUE :
+ return TABLE_PER_CLASS;
+ }
+ 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 InheritanceType(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;
+ }
+
+ public static InheritanceType fromJavaAnnotationValue(Object javaAnnotationValue) {
+ if (javaAnnotationValue == null) {
+ return DEFAULT;
+ }
+ if (javaAnnotationValue.equals(JPA.INHERITANCE_TYPE__JOINED)) {
+ return JOINED;
+ }
+ if (javaAnnotationValue.equals(JPA.INHERITANCE_TYPE__SINGLE_TABLE)) {
+ return SINGLE_TABLE;
+ }
+ if (javaAnnotationValue.equals(JPA.INHERITANCE_TYPE__TABLE_PER_CLASS)) {
+ return TABLE_PER_CLASS;
+ }
+ return DEFAULT;
+ }
+
+ public String convertToJavaAnnotationValue() {
+ switch (this.getValue()) {
+ case DEFAULT_VALUE :
+ return null;
+ case JOINED_VALUE :
+ return JPA.INHERITANCE_TYPE__JOINED;
+ case SINGLE_TABLE_VALUE :
+ return JPA.INHERITANCE_TYPE__SINGLE_TABLE;
+ case TABLE_PER_CLASS_VALUE :
+ return JPA.INHERITANCE_TYPE__TABLE_PER_CLASS;
+ default :
+ throw new IllegalArgumentException("unknown inheritance type: " + this);
+ }
+ }
+
+ public boolean isSingleTable() {
+ return (this.getValue() == DEFAULT_VALUE) || (this.getValue() == SINGLE_TABLE_VALUE);
+ }
+} //InheritanceType
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/JpaCoreMappingsFactory.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/JpaCoreMappingsFactory.java
new file mode 100644
index 0000000000..aa2ac98da2
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/JpaCoreMappingsFactory.java
@@ -0,0 +1,373 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+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;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage
+ * @generated
+ */
+public class JpaCoreMappingsFactory extends EFactoryImpl
+{
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final JpaCoreMappingsFactory eINSTANCE = init();
+
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static JpaCoreMappingsFactory init() {
+ try {
+ JpaCoreMappingsFactory theJpaCoreMappingsFactory = (JpaCoreMappingsFactory) EPackage.Registry.INSTANCE.getEFactory("jpt.core.mappings.xmi");
+ if (theJpaCoreMappingsFactory != null) {
+ return theJpaCoreMappingsFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new JpaCoreMappingsFactory();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JpaCoreMappingsFactory() {
+ 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");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object createFromString(EDataType eDataType, String initialValue) {
+ switch (eDataType.getClassifierID()) {
+ case JpaCoreMappingsPackage.DEFAULT_EAGER_FETCH_TYPE :
+ return createDefaultEagerFetchTypeFromString(eDataType, initialValue);
+ case JpaCoreMappingsPackage.DEFAULT_LAZY_FETCH_TYPE :
+ return createDefaultLazyFetchTypeFromString(eDataType, initialValue);
+ case JpaCoreMappingsPackage.DEFAULT_FALSE_BOOLEAN :
+ return createDefaultFalseBooleanFromString(eDataType, initialValue);
+ case JpaCoreMappingsPackage.DEFAULT_TRUE_BOOLEAN :
+ return createDefaultTrueBooleanFromString(eDataType, initialValue);
+ case JpaCoreMappingsPackage.TEMPORAL_TYPE :
+ return createTemporalTypeFromString(eDataType, initialValue);
+ case JpaCoreMappingsPackage.INHERITANCE_TYPE :
+ return createInheritanceTypeFromString(eDataType, initialValue);
+ case JpaCoreMappingsPackage.DISCRIMINATOR_TYPE :
+ return createDiscriminatorTypeFromString(eDataType, initialValue);
+ case JpaCoreMappingsPackage.GENERATION_TYPE :
+ return createGenerationTypeFromString(eDataType, initialValue);
+ case JpaCoreMappingsPackage.ENUM_TYPE :
+ return createEnumTypeFromString(eDataType, initialValue);
+ case JpaCoreMappingsPackage.ORDERING_TYPE :
+ return createOrderingTypeFromString(eDataType, initialValue);
+ default :
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String convertToString(EDataType eDataType, Object instanceValue) {
+ switch (eDataType.getClassifierID()) {
+ case JpaCoreMappingsPackage.DEFAULT_EAGER_FETCH_TYPE :
+ return convertDefaultEagerFetchTypeToString(eDataType, instanceValue);
+ case JpaCoreMappingsPackage.DEFAULT_LAZY_FETCH_TYPE :
+ return convertDefaultLazyFetchTypeToString(eDataType, instanceValue);
+ case JpaCoreMappingsPackage.DEFAULT_FALSE_BOOLEAN :
+ return convertDefaultFalseBooleanToString(eDataType, instanceValue);
+ case JpaCoreMappingsPackage.DEFAULT_TRUE_BOOLEAN :
+ return convertDefaultTrueBooleanToString(eDataType, instanceValue);
+ case JpaCoreMappingsPackage.TEMPORAL_TYPE :
+ return convertTemporalTypeToString(eDataType, instanceValue);
+ case JpaCoreMappingsPackage.INHERITANCE_TYPE :
+ return convertInheritanceTypeToString(eDataType, instanceValue);
+ case JpaCoreMappingsPackage.DISCRIMINATOR_TYPE :
+ return convertDiscriminatorTypeToString(eDataType, instanceValue);
+ case JpaCoreMappingsPackage.GENERATION_TYPE :
+ return convertGenerationTypeToString(eDataType, instanceValue);
+ case JpaCoreMappingsPackage.ENUM_TYPE :
+ return convertEnumTypeToString(eDataType, instanceValue);
+ case JpaCoreMappingsPackage.ORDERING_TYPE :
+ return convertOrderingTypeToString(eDataType, instanceValue);
+ default :
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DefaultEagerFetchType createDefaultEagerFetchTypeFromString(EDataType eDataType, String initialValue) {
+ DefaultEagerFetchType result = DefaultEagerFetchType.get(initialValue);
+ if (result == null)
+ throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertDefaultEagerFetchTypeToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DefaultLazyFetchType createDefaultLazyFetchTypeFromString(EDataType eDataType, String initialValue) {
+ DefaultLazyFetchType result = DefaultLazyFetchType.get(initialValue);
+ if (result == null)
+ throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertDefaultLazyFetchTypeToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DefaultFalseBoolean createDefaultFalseBooleanFromString(EDataType eDataType, String initialValue) {
+ DefaultFalseBoolean result = DefaultFalseBoolean.get(initialValue);
+ if (result == null)
+ throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertDefaultFalseBooleanToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DefaultTrueBoolean createDefaultTrueBooleanFromString(EDataType eDataType, String initialValue) {
+ DefaultTrueBoolean result = DefaultTrueBoolean.get(initialValue);
+ if (result == null)
+ throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertDefaultTrueBooleanToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TemporalType createTemporalTypeFromString(EDataType eDataType, String initialValue) {
+ TemporalType result = TemporalType.get(initialValue);
+ if (result == null)
+ throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertTemporalTypeToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public InheritanceType createInheritanceTypeFromString(EDataType eDataType, String initialValue) {
+ InheritanceType result = InheritanceType.get(initialValue);
+ if (result == null)
+ throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertInheritanceTypeToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DiscriminatorType createDiscriminatorTypeFromString(EDataType eDataType, String initialValue) {
+ DiscriminatorType result = DiscriminatorType.get(initialValue);
+ if (result == null)
+ throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertDiscriminatorTypeToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public GenerationType createGenerationTypeFromString(EDataType eDataType, String initialValue) {
+ GenerationType result = GenerationType.get(initialValue);
+ if (result == null)
+ throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertGenerationTypeToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EnumType createEnumTypeFromString(EDataType eDataType, String initialValue) {
+ EnumType result = EnumType.get(initialValue);
+ if (result == null)
+ throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertEnumTypeToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public OrderingType createOrderingTypeFromString(EDataType eDataType, String initialValue) {
+ OrderingType result = OrderingType.get(initialValue);
+ if (result == null)
+ throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertOrderingTypeToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JpaCoreMappingsPackage getJpaCoreMappingsPackage() {
+ return (JpaCoreMappingsPackage) getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static JpaCoreMappingsPackage getPackage() {
+ return JpaCoreMappingsPackage.eINSTANCE;
+ }
+} //MappingsFactoryImpl
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/JpaCoreMappingsPackage.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/JpaCoreMappingsPackage.java
new file mode 100644
index 0000000000..6b1154f9bf
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/JpaCoreMappingsPackage.java
@@ -0,0 +1,8177 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2007 Oracle. All rights reserved. This program and
+ * the accompanying materials are made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+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.jem.java.JavaRefPackage;
+import org.eclipse.jpt.core.internal.JpaCorePackage;
+import org.eclipse.jpt.core.internal.content.java.JpaJavaPackage;
+import org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsPackage;
+import org.eclipse.jpt.core.internal.content.orm.OrmPackage;
+import org.eclipse.jpt.core.internal.content.persistence.PersistencePackage;
+
+/**
+ * <!-- 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.jpt.core.internal.mappings.JpaCoreMappingsFactory
+ * @model kind="package"
+ * @generated
+ */
+public class JpaCoreMappingsPackage extends EPackageImpl
+{
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNAME = "mappings";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNS_URI = "jpt.core.mappings.xmi";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String eNS_PREFIX = "jpt.core.mappings";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final JpaCoreMappingsPackage eINSTANCE = org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.IMappedSuperclass <em>IMapped Superclass</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IMappedSuperclass
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIMappedSuperclass()
+ * @generated
+ */
+ public static final int IMAPPED_SUPERCLASS = 0;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IMAPPED_SUPERCLASS__NAME = JpaCorePackage.ITYPE_MAPPING__NAME;
+
+ /**
+ * The feature id for the '<em><b>Table Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IMAPPED_SUPERCLASS__TABLE_NAME = JpaCorePackage.ITYPE_MAPPING__TABLE_NAME;
+
+ /**
+ * The number of structural features of the '<em>IMapped Superclass</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IMAPPED_SUPERCLASS_FEATURE_COUNT = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.IEntity <em>IEntity</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IEntity
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEntity()
+ * @generated
+ */
+ public static final int IENTITY = 1;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IENTITY__NAME = JpaCorePackage.ITYPE_MAPPING__NAME;
+
+ /**
+ * The feature id for the '<em><b>Table Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IENTITY__TABLE_NAME = JpaCorePackage.ITYPE_MAPPING__TABLE_NAME;
+
+ /**
+ * The feature id for the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IENTITY__SPECIFIED_NAME = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IENTITY__DEFAULT_NAME = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Table</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IENTITY__TABLE = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Primary Key Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IENTITY__PRIMARY_KEY_JOIN_COLUMNS = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Specified Primary Key Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IENTITY__SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Default Primary Key Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IENTITY__DEFAULT_PRIMARY_KEY_JOIN_COLUMNS = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Inheritance Strategy</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IENTITY__INHERITANCE_STRATEGY = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 6;
+
+ /**
+ * The feature id for the '<em><b>Default Discriminator Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IENTITY__DEFAULT_DISCRIMINATOR_VALUE = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 7;
+
+ /**
+ * The feature id for the '<em><b>Specified Discriminator Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IENTITY__SPECIFIED_DISCRIMINATOR_VALUE = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 8;
+
+ /**
+ * The feature id for the '<em><b>Discriminator Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IENTITY__DISCRIMINATOR_VALUE = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 9;
+
+ /**
+ * The feature id for the '<em><b>Discriminator Column</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IENTITY__DISCRIMINATOR_COLUMN = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 10;
+
+ /**
+ * The feature id for the '<em><b>Sequence Generator</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IENTITY__SEQUENCE_GENERATOR = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 11;
+
+ /**
+ * The feature id for the '<em><b>Table Generator</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IENTITY__TABLE_GENERATOR = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 12;
+
+ /**
+ * The feature id for the '<em><b>Attribute Overrides</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IENTITY__ATTRIBUTE_OVERRIDES = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 13;
+
+ /**
+ * The feature id for the '<em><b>Specified Attribute Overrides</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IENTITY__SPECIFIED_ATTRIBUTE_OVERRIDES = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 14;
+
+ /**
+ * The feature id for the '<em><b>Default Attribute Overrides</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IENTITY__DEFAULT_ATTRIBUTE_OVERRIDES = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 15;
+
+ /**
+ * The feature id for the '<em><b>Association Overrides</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IENTITY__ASSOCIATION_OVERRIDES = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 16;
+
+ /**
+ * The feature id for the '<em><b>Specified Association Overrides</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IENTITY__SPECIFIED_ASSOCIATION_OVERRIDES = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 17;
+
+ /**
+ * The feature id for the '<em><b>Default Association Overrides</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IENTITY__DEFAULT_ASSOCIATION_OVERRIDES = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 18;
+
+ /**
+ * The feature id for the '<em><b>Named Queries</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IENTITY__NAMED_QUERIES = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 19;
+
+ /**
+ * The feature id for the '<em><b>Named Native Queries</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IENTITY__NAMED_NATIVE_QUERIES = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 20;
+
+ /**
+ * The number of structural features of the '<em>IEntity</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IENTITY_FEATURE_COUNT = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 21;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.IEmbeddable <em>IEmbeddable</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IEmbeddable
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEmbeddable()
+ * @generated
+ */
+ public static final int IEMBEDDABLE = 2;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IEMBEDDABLE__NAME = JpaCorePackage.ITYPE_MAPPING__NAME;
+
+ /**
+ * The feature id for the '<em><b>Table Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IEMBEDDABLE__TABLE_NAME = JpaCorePackage.ITYPE_MAPPING__TABLE_NAME;
+
+ /**
+ * The number of structural features of the '<em>IEmbeddable</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IEMBEDDABLE_FEATURE_COUNT = JpaCorePackage.ITYPE_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.ITable <em>ITable</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.ITable
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITable()
+ * @generated
+ */
+ public static final int ITABLE = 3;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE__NAME = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE__SPECIFIED_NAME = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE__DEFAULT_NAME = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE__CATALOG = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Specified Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE__SPECIFIED_CATALOG = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Default Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE__DEFAULT_CATALOG = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE__SCHEMA = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 6;
+
+ /**
+ * The feature id for the '<em><b>Specified Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE__SPECIFIED_SCHEMA = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 7;
+
+ /**
+ * The feature id for the '<em><b>Default Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE__DEFAULT_SCHEMA = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 8;
+
+ /**
+ * The number of structural features of the '<em>ITable</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE_FEATURE_COUNT = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 9;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.INamedColumn <em>INamed Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.INamedColumn
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getINamedColumn()
+ * @generated
+ */
+ public static final int INAMED_COLUMN = 4;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int INAMED_COLUMN__NAME = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int INAMED_COLUMN__SPECIFIED_NAME = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int INAMED_COLUMN__DEFAULT_NAME = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Column Definition</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int INAMED_COLUMN__COLUMN_DEFINITION = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>INamed Column</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int INAMED_COLUMN_FEATURE_COUNT = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 4;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.IAbstractColumn <em>IAbstract Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IAbstractColumn
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIAbstractColumn()
+ * @generated
+ */
+ public static final int IABSTRACT_COLUMN = 5;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IABSTRACT_COLUMN__NAME = INAMED_COLUMN__NAME;
+
+ /**
+ * The feature id for the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IABSTRACT_COLUMN__SPECIFIED_NAME = INAMED_COLUMN__SPECIFIED_NAME;
+
+ /**
+ * The feature id for the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IABSTRACT_COLUMN__DEFAULT_NAME = INAMED_COLUMN__DEFAULT_NAME;
+
+ /**
+ * The feature id for the '<em><b>Column Definition</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IABSTRACT_COLUMN__COLUMN_DEFINITION = INAMED_COLUMN__COLUMN_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Unique</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IABSTRACT_COLUMN__UNIQUE = INAMED_COLUMN_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Nullable</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IABSTRACT_COLUMN__NULLABLE = INAMED_COLUMN_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Insertable</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IABSTRACT_COLUMN__INSERTABLE = INAMED_COLUMN_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Updatable</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IABSTRACT_COLUMN__UPDATABLE = INAMED_COLUMN_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IABSTRACT_COLUMN__TABLE = INAMED_COLUMN_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Specified Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IABSTRACT_COLUMN__SPECIFIED_TABLE = INAMED_COLUMN_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Default Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IABSTRACT_COLUMN__DEFAULT_TABLE = INAMED_COLUMN_FEATURE_COUNT + 6;
+
+ /**
+ * The number of structural features of the '<em>IAbstract Column</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IABSTRACT_COLUMN_FEATURE_COUNT = INAMED_COLUMN_FEATURE_COUNT + 7;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.IColumn <em>IColumn</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IColumn
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIColumn()
+ * @generated
+ */
+ public static final int ICOLUMN = 6;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ICOLUMN__NAME = IABSTRACT_COLUMN__NAME;
+
+ /**
+ * The feature id for the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ICOLUMN__SPECIFIED_NAME = IABSTRACT_COLUMN__SPECIFIED_NAME;
+
+ /**
+ * The feature id for the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ICOLUMN__DEFAULT_NAME = IABSTRACT_COLUMN__DEFAULT_NAME;
+
+ /**
+ * The feature id for the '<em><b>Column Definition</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ICOLUMN__COLUMN_DEFINITION = IABSTRACT_COLUMN__COLUMN_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Unique</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ICOLUMN__UNIQUE = IABSTRACT_COLUMN__UNIQUE;
+
+ /**
+ * The feature id for the '<em><b>Nullable</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ICOLUMN__NULLABLE = IABSTRACT_COLUMN__NULLABLE;
+
+ /**
+ * The feature id for the '<em><b>Insertable</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ICOLUMN__INSERTABLE = IABSTRACT_COLUMN__INSERTABLE;
+
+ /**
+ * The feature id for the '<em><b>Updatable</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ICOLUMN__UPDATABLE = IABSTRACT_COLUMN__UPDATABLE;
+
+ /**
+ * The feature id for the '<em><b>Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ICOLUMN__TABLE = IABSTRACT_COLUMN__TABLE;
+
+ /**
+ * The feature id for the '<em><b>Specified Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ICOLUMN__SPECIFIED_TABLE = IABSTRACT_COLUMN__SPECIFIED_TABLE;
+
+ /**
+ * The feature id for the '<em><b>Default Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ICOLUMN__DEFAULT_TABLE = IABSTRACT_COLUMN__DEFAULT_TABLE;
+
+ /**
+ * The feature id for the '<em><b>Length</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ICOLUMN__LENGTH = IABSTRACT_COLUMN_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Precision</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ICOLUMN__PRECISION = IABSTRACT_COLUMN_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Scale</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ICOLUMN__SCALE = IABSTRACT_COLUMN_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>IColumn</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ICOLUMN_FEATURE_COUNT = IABSTRACT_COLUMN_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.IColumnMapping <em>IColumn Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IColumnMapping
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIColumnMapping()
+ * @generated
+ */
+ public static final int ICOLUMN_MAPPING = 7;
+
+ /**
+ * The number of structural features of the '<em>IColumn Mapping</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ICOLUMN_MAPPING_FEATURE_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.IBasic <em>IBasic</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IBasic
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIBasic()
+ * @generated
+ */
+ public static final int IBASIC = 8;
+
+ /**
+ * The feature id for the '<em><b>Fetch</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IBASIC__FETCH = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Optional</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IBASIC__OPTIONAL = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Column</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IBASIC__COLUMN = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Lob</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IBASIC__LOB = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Temporal</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IBASIC__TEMPORAL = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Enumerated</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IBASIC__ENUMERATED = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 5;
+
+ /**
+ * The number of structural features of the '<em>IBasic</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IBASIC_FEATURE_COUNT = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 6;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.IId <em>IId</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IId
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIId()
+ * @generated
+ */
+ public static final int IID = 9;
+
+ /**
+ * The feature id for the '<em><b>Column</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IID__COLUMN = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Generated Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IID__GENERATED_VALUE = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Temporal</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IID__TEMPORAL = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Table Generator</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IID__TABLE_GENERATOR = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Sequence Generator</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IID__SEQUENCE_GENERATOR = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 4;
+
+ /**
+ * The number of structural features of the '<em>IId</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IID_FEATURE_COUNT = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 5;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.ITransient <em>ITransient</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.ITransient
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITransient()
+ * @generated
+ */
+ public static final int ITRANSIENT = 10;
+
+ /**
+ * The number of structural features of the '<em>ITransient</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITRANSIENT_FEATURE_COUNT = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.IVersion <em>IVersion</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IVersion
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIVersion()
+ * @generated
+ */
+ public static final int IVERSION = 11;
+
+ /**
+ * The feature id for the '<em><b>Column</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IVERSION__COLUMN = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Temporal</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IVERSION__TEMPORAL = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>IVersion</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IVERSION_FEATURE_COUNT = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.IEmbeddedId <em>IEmbedded Id</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IEmbeddedId
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEmbeddedId()
+ * @generated
+ */
+ public static final int IEMBEDDED_ID = 12;
+
+ /**
+ * The number of structural features of the '<em>IEmbedded Id</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IEMBEDDED_ID_FEATURE_COUNT = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.IEmbedded <em>IEmbedded</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IEmbedded
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEmbedded()
+ * @generated
+ */
+ public static final int IEMBEDDED = 13;
+
+ /**
+ * The feature id for the '<em><b>Attribute Overrides</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IEMBEDDED__ATTRIBUTE_OVERRIDES = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Specified Attribute Overrides</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IEMBEDDED__SPECIFIED_ATTRIBUTE_OVERRIDES = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Default Attribute Overrides</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IEMBEDDED__DEFAULT_ATTRIBUTE_OVERRIDES = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>IEmbedded</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IEMBEDDED_FEATURE_COUNT = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.IRelationshipMapping <em>IRelationship Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IRelationshipMapping
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIRelationshipMapping()
+ * @generated
+ */
+ public static final int IRELATIONSHIP_MAPPING = 14;
+
+ /**
+ * The feature id for the '<em><b>Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IRELATIONSHIP_MAPPING__TARGET_ENTITY = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Specified Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IRELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Default Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IRELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Resolved Target Entity</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IRELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>IRelationship Mapping</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IRELATIONSHIP_MAPPING_FEATURE_COUNT = JpaCorePackage.IATTRIBUTE_MAPPING_FEATURE_COUNT + 4;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.INonOwningMapping <em>INon Owning Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.INonOwningMapping
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getINonOwningMapping()
+ * @generated
+ */
+ public static final int INON_OWNING_MAPPING = 15;
+
+ /**
+ * The feature id for the '<em><b>Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int INON_OWNING_MAPPING__TARGET_ENTITY = IRELATIONSHIP_MAPPING__TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Specified Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int INON_OWNING_MAPPING__SPECIFIED_TARGET_ENTITY = IRELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Default Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int INON_OWNING_MAPPING__DEFAULT_TARGET_ENTITY = IRELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Resolved Target Entity</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int INON_OWNING_MAPPING__RESOLVED_TARGET_ENTITY = IRELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Mapped By</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int INON_OWNING_MAPPING__MAPPED_BY = IRELATIONSHIP_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>INon Owning Mapping</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int INON_OWNING_MAPPING_FEATURE_COUNT = IRELATIONSHIP_MAPPING_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping <em>IMulti Relationship Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIMultiRelationshipMapping()
+ * @generated
+ */
+ public static final int IMULTI_RELATIONSHIP_MAPPING = 16;
+
+ /**
+ * The feature id for the '<em><b>Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IMULTI_RELATIONSHIP_MAPPING__TARGET_ENTITY = INON_OWNING_MAPPING__TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Specified Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IMULTI_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY = INON_OWNING_MAPPING__SPECIFIED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Default Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IMULTI_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY = INON_OWNING_MAPPING__DEFAULT_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Resolved Target Entity</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IMULTI_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY = INON_OWNING_MAPPING__RESOLVED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Mapped By</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IMULTI_RELATIONSHIP_MAPPING__MAPPED_BY = INON_OWNING_MAPPING__MAPPED_BY;
+
+ /**
+ * The feature id for the '<em><b>Fetch</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IMULTI_RELATIONSHIP_MAPPING__FETCH = INON_OWNING_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Join Table</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IMULTI_RELATIONSHIP_MAPPING__JOIN_TABLE = INON_OWNING_MAPPING_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Order By</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IMULTI_RELATIONSHIP_MAPPING__ORDER_BY = INON_OWNING_MAPPING_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>IMulti Relationship Mapping</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IMULTI_RELATIONSHIP_MAPPING_FEATURE_COUNT = INON_OWNING_MAPPING_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.IOneToMany <em>IOne To Many</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IOneToMany
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIOneToMany()
+ * @generated
+ */
+ public static final int IONE_TO_MANY = 17;
+
+ /**
+ * The feature id for the '<em><b>Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IONE_TO_MANY__TARGET_ENTITY = IMULTI_RELATIONSHIP_MAPPING__TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Specified Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IONE_TO_MANY__SPECIFIED_TARGET_ENTITY = IMULTI_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Default Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IONE_TO_MANY__DEFAULT_TARGET_ENTITY = IMULTI_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Resolved Target Entity</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IONE_TO_MANY__RESOLVED_TARGET_ENTITY = IMULTI_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Mapped By</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IONE_TO_MANY__MAPPED_BY = IMULTI_RELATIONSHIP_MAPPING__MAPPED_BY;
+
+ /**
+ * The feature id for the '<em><b>Fetch</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IONE_TO_MANY__FETCH = IMULTI_RELATIONSHIP_MAPPING__FETCH;
+
+ /**
+ * The feature id for the '<em><b>Join Table</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IONE_TO_MANY__JOIN_TABLE = IMULTI_RELATIONSHIP_MAPPING__JOIN_TABLE;
+
+ /**
+ * The feature id for the '<em><b>Order By</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IONE_TO_MANY__ORDER_BY = IMULTI_RELATIONSHIP_MAPPING__ORDER_BY;
+
+ /**
+ * The number of structural features of the '<em>IOne To Many</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IONE_TO_MANY_FEATURE_COUNT = IMULTI_RELATIONSHIP_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.IManyToMany <em>IMany To Many</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IManyToMany
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIManyToMany()
+ * @generated
+ */
+ public static final int IMANY_TO_MANY = 18;
+
+ /**
+ * The feature id for the '<em><b>Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IMANY_TO_MANY__TARGET_ENTITY = IMULTI_RELATIONSHIP_MAPPING__TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Specified Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IMANY_TO_MANY__SPECIFIED_TARGET_ENTITY = IMULTI_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Default Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IMANY_TO_MANY__DEFAULT_TARGET_ENTITY = IMULTI_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Resolved Target Entity</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IMANY_TO_MANY__RESOLVED_TARGET_ENTITY = IMULTI_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Mapped By</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IMANY_TO_MANY__MAPPED_BY = IMULTI_RELATIONSHIP_MAPPING__MAPPED_BY;
+
+ /**
+ * The feature id for the '<em><b>Fetch</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IMANY_TO_MANY__FETCH = IMULTI_RELATIONSHIP_MAPPING__FETCH;
+
+ /**
+ * The feature id for the '<em><b>Join Table</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IMANY_TO_MANY__JOIN_TABLE = IMULTI_RELATIONSHIP_MAPPING__JOIN_TABLE;
+
+ /**
+ * The feature id for the '<em><b>Order By</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IMANY_TO_MANY__ORDER_BY = IMULTI_RELATIONSHIP_MAPPING__ORDER_BY;
+
+ /**
+ * The number of structural features of the '<em>IMany To Many</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IMANY_TO_MANY_FEATURE_COUNT = IMULTI_RELATIONSHIP_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping <em>ISingle Relationship Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getISingleRelationshipMapping()
+ * @generated
+ */
+ public static final int ISINGLE_RELATIONSHIP_MAPPING = 19;
+
+ /**
+ * The feature id for the '<em><b>Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ISINGLE_RELATIONSHIP_MAPPING__TARGET_ENTITY = IRELATIONSHIP_MAPPING__TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Specified Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ISINGLE_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY = IRELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Default Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ISINGLE_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY = IRELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Resolved Target Entity</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ISINGLE_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY = IRELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Fetch</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ISINGLE_RELATIONSHIP_MAPPING__FETCH = IRELATIONSHIP_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ISINGLE_RELATIONSHIP_MAPPING__JOIN_COLUMNS = IRELATIONSHIP_MAPPING_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Specified Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ISINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS = IRELATIONSHIP_MAPPING_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Default Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ISINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS = IRELATIONSHIP_MAPPING_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>ISingle Relationship Mapping</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ISINGLE_RELATIONSHIP_MAPPING_FEATURE_COUNT = IRELATIONSHIP_MAPPING_FEATURE_COUNT + 4;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.IManyToOne <em>IMany To One</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IManyToOne
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIManyToOne()
+ * @generated
+ */
+ public static final int IMANY_TO_ONE = 20;
+
+ /**
+ * The feature id for the '<em><b>Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IMANY_TO_ONE__TARGET_ENTITY = ISINGLE_RELATIONSHIP_MAPPING__TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Specified Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IMANY_TO_ONE__SPECIFIED_TARGET_ENTITY = ISINGLE_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Default Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IMANY_TO_ONE__DEFAULT_TARGET_ENTITY = ISINGLE_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Resolved Target Entity</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IMANY_TO_ONE__RESOLVED_TARGET_ENTITY = ISINGLE_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Fetch</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IMANY_TO_ONE__FETCH = ISINGLE_RELATIONSHIP_MAPPING__FETCH;
+
+ /**
+ * The feature id for the '<em><b>Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IMANY_TO_ONE__JOIN_COLUMNS = ISINGLE_RELATIONSHIP_MAPPING__JOIN_COLUMNS;
+
+ /**
+ * The feature id for the '<em><b>Specified Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IMANY_TO_ONE__SPECIFIED_JOIN_COLUMNS = ISINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS;
+
+ /**
+ * The feature id for the '<em><b>Default Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IMANY_TO_ONE__DEFAULT_JOIN_COLUMNS = ISINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS;
+
+ /**
+ * The number of structural features of the '<em>IMany To One</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IMANY_TO_ONE_FEATURE_COUNT = ISINGLE_RELATIONSHIP_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.IOneToOne <em>IOne To One</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IOneToOne
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIOneToOne()
+ * @generated
+ */
+ public static final int IONE_TO_ONE = 21;
+
+ /**
+ * The feature id for the '<em><b>Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IONE_TO_ONE__TARGET_ENTITY = ISINGLE_RELATIONSHIP_MAPPING__TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Specified Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IONE_TO_ONE__SPECIFIED_TARGET_ENTITY = ISINGLE_RELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Default Target Entity</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IONE_TO_ONE__DEFAULT_TARGET_ENTITY = ISINGLE_RELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Resolved Target Entity</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IONE_TO_ONE__RESOLVED_TARGET_ENTITY = ISINGLE_RELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Fetch</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IONE_TO_ONE__FETCH = ISINGLE_RELATIONSHIP_MAPPING__FETCH;
+
+ /**
+ * The feature id for the '<em><b>Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IONE_TO_ONE__JOIN_COLUMNS = ISINGLE_RELATIONSHIP_MAPPING__JOIN_COLUMNS;
+
+ /**
+ * The feature id for the '<em><b>Specified Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IONE_TO_ONE__SPECIFIED_JOIN_COLUMNS = ISINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS;
+
+ /**
+ * The feature id for the '<em><b>Default Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IONE_TO_ONE__DEFAULT_JOIN_COLUMNS = ISINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS;
+
+ /**
+ * The feature id for the '<em><b>Mapped By</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IONE_TO_ONE__MAPPED_BY = ISINGLE_RELATIONSHIP_MAPPING_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>IOne To One</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IONE_TO_ONE_FEATURE_COUNT = ISINGLE_RELATIONSHIP_MAPPING_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.IJoinTable <em>IJoin Table</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IJoinTable
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIJoinTable()
+ * @generated
+ */
+ public static final int IJOIN_TABLE = 22;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJOIN_TABLE__NAME = ITABLE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJOIN_TABLE__SPECIFIED_NAME = ITABLE__SPECIFIED_NAME;
+
+ /**
+ * The feature id for the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJOIN_TABLE__DEFAULT_NAME = ITABLE__DEFAULT_NAME;
+
+ /**
+ * The feature id for the '<em><b>Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJOIN_TABLE__CATALOG = ITABLE__CATALOG;
+
+ /**
+ * The feature id for the '<em><b>Specified Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJOIN_TABLE__SPECIFIED_CATALOG = ITABLE__SPECIFIED_CATALOG;
+
+ /**
+ * The feature id for the '<em><b>Default Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJOIN_TABLE__DEFAULT_CATALOG = ITABLE__DEFAULT_CATALOG;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJOIN_TABLE__SCHEMA = ITABLE__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Specified Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJOIN_TABLE__SPECIFIED_SCHEMA = ITABLE__SPECIFIED_SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Default Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJOIN_TABLE__DEFAULT_SCHEMA = ITABLE__DEFAULT_SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJOIN_TABLE__JOIN_COLUMNS = ITABLE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Specified Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJOIN_TABLE__SPECIFIED_JOIN_COLUMNS = ITABLE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Default Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJOIN_TABLE__DEFAULT_JOIN_COLUMNS = ITABLE_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Inverse Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJOIN_TABLE__INVERSE_JOIN_COLUMNS = ITABLE_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Specified Inverse Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJOIN_TABLE__SPECIFIED_INVERSE_JOIN_COLUMNS = ITABLE_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Default Inverse Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJOIN_TABLE__DEFAULT_INVERSE_JOIN_COLUMNS = ITABLE_FEATURE_COUNT + 5;
+
+ /**
+ * The number of structural features of the '<em>IJoin Table</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJOIN_TABLE_FEATURE_COUNT = ITABLE_FEATURE_COUNT + 6;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn <em>IAbstract Join Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIAbstractJoinColumn()
+ * @generated
+ */
+ public static final int IABSTRACT_JOIN_COLUMN = 23;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IABSTRACT_JOIN_COLUMN__NAME = INAMED_COLUMN__NAME;
+
+ /**
+ * The feature id for the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IABSTRACT_JOIN_COLUMN__SPECIFIED_NAME = INAMED_COLUMN__SPECIFIED_NAME;
+
+ /**
+ * The feature id for the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IABSTRACT_JOIN_COLUMN__DEFAULT_NAME = INAMED_COLUMN__DEFAULT_NAME;
+
+ /**
+ * The feature id for the '<em><b>Column Definition</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IABSTRACT_JOIN_COLUMN__COLUMN_DEFINITION = INAMED_COLUMN__COLUMN_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IABSTRACT_JOIN_COLUMN__REFERENCED_COLUMN_NAME = INAMED_COLUMN_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Specified Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IABSTRACT_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME = INAMED_COLUMN_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Default Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IABSTRACT_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME = INAMED_COLUMN_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>IAbstract Join Column</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IABSTRACT_JOIN_COLUMN_FEATURE_COUNT = INAMED_COLUMN_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.IJoinColumn <em>IJoin Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IJoinColumn
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIJoinColumn()
+ * @generated
+ */
+ public static final int IJOIN_COLUMN = 24;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJOIN_COLUMN__NAME = IABSTRACT_COLUMN__NAME;
+
+ /**
+ * The feature id for the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJOIN_COLUMN__SPECIFIED_NAME = IABSTRACT_COLUMN__SPECIFIED_NAME;
+
+ /**
+ * The feature id for the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJOIN_COLUMN__DEFAULT_NAME = IABSTRACT_COLUMN__DEFAULT_NAME;
+
+ /**
+ * The feature id for the '<em><b>Column Definition</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJOIN_COLUMN__COLUMN_DEFINITION = IABSTRACT_COLUMN__COLUMN_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Unique</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJOIN_COLUMN__UNIQUE = IABSTRACT_COLUMN__UNIQUE;
+
+ /**
+ * The feature id for the '<em><b>Nullable</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJOIN_COLUMN__NULLABLE = IABSTRACT_COLUMN__NULLABLE;
+
+ /**
+ * The feature id for the '<em><b>Insertable</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJOIN_COLUMN__INSERTABLE = IABSTRACT_COLUMN__INSERTABLE;
+
+ /**
+ * The feature id for the '<em><b>Updatable</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJOIN_COLUMN__UPDATABLE = IABSTRACT_COLUMN__UPDATABLE;
+
+ /**
+ * The feature id for the '<em><b>Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJOIN_COLUMN__TABLE = IABSTRACT_COLUMN__TABLE;
+
+ /**
+ * The feature id for the '<em><b>Specified Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJOIN_COLUMN__SPECIFIED_TABLE = IABSTRACT_COLUMN__SPECIFIED_TABLE;
+
+ /**
+ * The feature id for the '<em><b>Default Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJOIN_COLUMN__DEFAULT_TABLE = IABSTRACT_COLUMN__DEFAULT_TABLE;
+
+ /**
+ * The feature id for the '<em><b>Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJOIN_COLUMN__REFERENCED_COLUMN_NAME = IABSTRACT_COLUMN_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Specified Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME = IABSTRACT_COLUMN_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Default Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME = IABSTRACT_COLUMN_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>IJoin Column</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IJOIN_COLUMN_FEATURE_COUNT = IABSTRACT_COLUMN_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.IOverride <em>IOverride</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IOverride
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIOverride()
+ * @generated
+ */
+ public static final int IOVERRIDE = 25;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IOVERRIDE__NAME = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>IOverride</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IOVERRIDE_FEATURE_COUNT = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride <em>IAttribute Override</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IAttributeOverride
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIAttributeOverride()
+ * @generated
+ */
+ public static final int IATTRIBUTE_OVERRIDE = 26;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IATTRIBUTE_OVERRIDE__NAME = IOVERRIDE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Column</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IATTRIBUTE_OVERRIDE__COLUMN = IOVERRIDE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>IAttribute Override</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IATTRIBUTE_OVERRIDE_FEATURE_COUNT = IOVERRIDE_FEATURE_COUNT + 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.IAssociationOverride <em>IAssociation Override</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IAssociationOverride
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIAssociationOverride()
+ * @generated
+ */
+ public static final int IASSOCIATION_OVERRIDE = 27;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IASSOCIATION_OVERRIDE__NAME = IOVERRIDE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IASSOCIATION_OVERRIDE__JOIN_COLUMNS = IOVERRIDE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Specified Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IASSOCIATION_OVERRIDE__SPECIFIED_JOIN_COLUMNS = IOVERRIDE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Default Join Columns</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IASSOCIATION_OVERRIDE__DEFAULT_JOIN_COLUMNS = IOVERRIDE_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>IAssociation Override</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IASSOCIATION_OVERRIDE_FEATURE_COUNT = IOVERRIDE_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn <em>IDiscriminator Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIDiscriminatorColumn()
+ * @generated
+ */
+ public static final int IDISCRIMINATOR_COLUMN = 28;
+
+ /**
+ * The feature id for the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IDISCRIMINATOR_COLUMN__DEFAULT_NAME = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IDISCRIMINATOR_COLUMN__SPECIFIED_NAME = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IDISCRIMINATOR_COLUMN__NAME = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Discriminator Type</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IDISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Column Definition</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IDISCRIMINATOR_COLUMN__COLUMN_DEFINITION = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Default Length</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IDISCRIMINATOR_COLUMN__DEFAULT_LENGTH = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Specified Length</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IDISCRIMINATOR_COLUMN__SPECIFIED_LENGTH = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 6;
+
+ /**
+ * The feature id for the '<em><b>Length</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IDISCRIMINATOR_COLUMN__LENGTH = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 7;
+
+ /**
+ * The number of structural features of the '<em>IDiscriminator Column</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IDISCRIMINATOR_COLUMN_FEATURE_COUNT = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 8;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.ISecondaryTable <em>ISecondary Table</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.ISecondaryTable
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getISecondaryTable()
+ * @generated
+ */
+ public static final int ISECONDARY_TABLE = 29;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ISECONDARY_TABLE__NAME = ITABLE__NAME;
+
+ /**
+ * The feature id for the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ISECONDARY_TABLE__SPECIFIED_NAME = ITABLE__SPECIFIED_NAME;
+
+ /**
+ * The feature id for the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ISECONDARY_TABLE__DEFAULT_NAME = ITABLE__DEFAULT_NAME;
+
+ /**
+ * The feature id for the '<em><b>Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ISECONDARY_TABLE__CATALOG = ITABLE__CATALOG;
+
+ /**
+ * The feature id for the '<em><b>Specified Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ISECONDARY_TABLE__SPECIFIED_CATALOG = ITABLE__SPECIFIED_CATALOG;
+
+ /**
+ * The feature id for the '<em><b>Default Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ISECONDARY_TABLE__DEFAULT_CATALOG = ITABLE__DEFAULT_CATALOG;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ISECONDARY_TABLE__SCHEMA = ITABLE__SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Specified Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ISECONDARY_TABLE__SPECIFIED_SCHEMA = ITABLE__SPECIFIED_SCHEMA;
+
+ /**
+ * The feature id for the '<em><b>Default Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ISECONDARY_TABLE__DEFAULT_SCHEMA = ITABLE__DEFAULT_SCHEMA;
+
+ /**
+ * The number of structural features of the '<em>ISecondary Table</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ISECONDARY_TABLE_FEATURE_COUNT = ITABLE_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn <em>IPrimary Key Join Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIPrimaryKeyJoinColumn()
+ * @generated
+ */
+ public static final int IPRIMARY_KEY_JOIN_COLUMN = 30;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IPRIMARY_KEY_JOIN_COLUMN__NAME = IABSTRACT_JOIN_COLUMN__NAME;
+
+ /**
+ * The feature id for the '<em><b>Specified Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IPRIMARY_KEY_JOIN_COLUMN__SPECIFIED_NAME = IABSTRACT_JOIN_COLUMN__SPECIFIED_NAME;
+
+ /**
+ * The feature id for the '<em><b>Default Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IPRIMARY_KEY_JOIN_COLUMN__DEFAULT_NAME = IABSTRACT_JOIN_COLUMN__DEFAULT_NAME;
+
+ /**
+ * The feature id for the '<em><b>Column Definition</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IPRIMARY_KEY_JOIN_COLUMN__COLUMN_DEFINITION = IABSTRACT_JOIN_COLUMN__COLUMN_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IPRIMARY_KEY_JOIN_COLUMN__REFERENCED_COLUMN_NAME = IABSTRACT_JOIN_COLUMN__REFERENCED_COLUMN_NAME;
+
+ /**
+ * The feature id for the '<em><b>Specified Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IPRIMARY_KEY_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME = IABSTRACT_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME;
+
+ /**
+ * The feature id for the '<em><b>Default Referenced Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IPRIMARY_KEY_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME = IABSTRACT_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME;
+
+ /**
+ * The number of structural features of the '<em>IPrimary Key Join Column</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IPRIMARY_KEY_JOIN_COLUMN_FEATURE_COUNT = IABSTRACT_JOIN_COLUMN_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.IGenerator <em>IGenerator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IGenerator
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIGenerator()
+ * @generated
+ */
+ public static final int IGENERATOR = 31;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IGENERATOR__NAME = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Initial Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IGENERATOR__INITIAL_VALUE = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Specified Initial Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IGENERATOR__SPECIFIED_INITIAL_VALUE = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Default Initial Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IGENERATOR__DEFAULT_INITIAL_VALUE = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Allocation Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IGENERATOR__ALLOCATION_SIZE = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Specified Allocation Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IGENERATOR__SPECIFIED_ALLOCATION_SIZE = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Default Allocation Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IGENERATOR__DEFAULT_ALLOCATION_SIZE = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 6;
+
+ /**
+ * The number of structural features of the '<em>IGenerator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IGENERATOR_FEATURE_COUNT = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 7;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator <em>ITable Generator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.ITableGenerator
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITableGenerator()
+ * @generated
+ */
+ public static final int ITABLE_GENERATOR = 32;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE_GENERATOR__NAME = IGENERATOR__NAME;
+
+ /**
+ * The feature id for the '<em><b>Initial Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE_GENERATOR__INITIAL_VALUE = IGENERATOR__INITIAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Specified Initial Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE_GENERATOR__SPECIFIED_INITIAL_VALUE = IGENERATOR__SPECIFIED_INITIAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Default Initial Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE_GENERATOR__DEFAULT_INITIAL_VALUE = IGENERATOR__DEFAULT_INITIAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Allocation Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE_GENERATOR__ALLOCATION_SIZE = IGENERATOR__ALLOCATION_SIZE;
+
+ /**
+ * The feature id for the '<em><b>Specified Allocation Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE_GENERATOR__SPECIFIED_ALLOCATION_SIZE = IGENERATOR__SPECIFIED_ALLOCATION_SIZE;
+
+ /**
+ * The feature id for the '<em><b>Default Allocation Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE_GENERATOR__DEFAULT_ALLOCATION_SIZE = IGENERATOR__DEFAULT_ALLOCATION_SIZE;
+
+ /**
+ * The feature id for the '<em><b>Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE_GENERATOR__TABLE = IGENERATOR_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Specified Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE_GENERATOR__SPECIFIED_TABLE = IGENERATOR_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Default Table</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE_GENERATOR__DEFAULT_TABLE = IGENERATOR_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE_GENERATOR__CATALOG = IGENERATOR_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Specified Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE_GENERATOR__SPECIFIED_CATALOG = IGENERATOR_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Default Catalog</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE_GENERATOR__DEFAULT_CATALOG = IGENERATOR_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE_GENERATOR__SCHEMA = IGENERATOR_FEATURE_COUNT + 6;
+
+ /**
+ * The feature id for the '<em><b>Specified Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE_GENERATOR__SPECIFIED_SCHEMA = IGENERATOR_FEATURE_COUNT + 7;
+
+ /**
+ * The feature id for the '<em><b>Default Schema</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE_GENERATOR__DEFAULT_SCHEMA = IGENERATOR_FEATURE_COUNT + 8;
+
+ /**
+ * The feature id for the '<em><b>Pk Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE_GENERATOR__PK_COLUMN_NAME = IGENERATOR_FEATURE_COUNT + 9;
+
+ /**
+ * The feature id for the '<em><b>Specified Pk Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE_GENERATOR__SPECIFIED_PK_COLUMN_NAME = IGENERATOR_FEATURE_COUNT + 10;
+
+ /**
+ * The feature id for the '<em><b>Default Pk Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE_GENERATOR__DEFAULT_PK_COLUMN_NAME = IGENERATOR_FEATURE_COUNT + 11;
+
+ /**
+ * The feature id for the '<em><b>Value Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE_GENERATOR__VALUE_COLUMN_NAME = IGENERATOR_FEATURE_COUNT + 12;
+
+ /**
+ * The feature id for the '<em><b>Specified Value Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE_GENERATOR__SPECIFIED_VALUE_COLUMN_NAME = IGENERATOR_FEATURE_COUNT + 13;
+
+ /**
+ * The feature id for the '<em><b>Default Value Column Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE_GENERATOR__DEFAULT_VALUE_COLUMN_NAME = IGENERATOR_FEATURE_COUNT + 14;
+
+ /**
+ * The feature id for the '<em><b>Pk Column Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE_GENERATOR__PK_COLUMN_VALUE = IGENERATOR_FEATURE_COUNT + 15;
+
+ /**
+ * The feature id for the '<em><b>Specified Pk Column Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE_GENERATOR__SPECIFIED_PK_COLUMN_VALUE = IGENERATOR_FEATURE_COUNT + 16;
+
+ /**
+ * The feature id for the '<em><b>Default Pk Column Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE_GENERATOR__DEFAULT_PK_COLUMN_VALUE = IGENERATOR_FEATURE_COUNT + 17;
+
+ /**
+ * The number of structural features of the '<em>ITable Generator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ITABLE_GENERATOR_FEATURE_COUNT = IGENERATOR_FEATURE_COUNT + 18;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.ISequenceGenerator <em>ISequence Generator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.ISequenceGenerator
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getISequenceGenerator()
+ * @generated
+ */
+ public static final int ISEQUENCE_GENERATOR = 33;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ISEQUENCE_GENERATOR__NAME = IGENERATOR__NAME;
+
+ /**
+ * The feature id for the '<em><b>Initial Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ISEQUENCE_GENERATOR__INITIAL_VALUE = IGENERATOR__INITIAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Specified Initial Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ISEQUENCE_GENERATOR__SPECIFIED_INITIAL_VALUE = IGENERATOR__SPECIFIED_INITIAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Default Initial Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ISEQUENCE_GENERATOR__DEFAULT_INITIAL_VALUE = IGENERATOR__DEFAULT_INITIAL_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Allocation Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ISEQUENCE_GENERATOR__ALLOCATION_SIZE = IGENERATOR__ALLOCATION_SIZE;
+
+ /**
+ * The feature id for the '<em><b>Specified Allocation Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ISEQUENCE_GENERATOR__SPECIFIED_ALLOCATION_SIZE = IGENERATOR__SPECIFIED_ALLOCATION_SIZE;
+
+ /**
+ * The feature id for the '<em><b>Default Allocation Size</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ISEQUENCE_GENERATOR__DEFAULT_ALLOCATION_SIZE = IGENERATOR__DEFAULT_ALLOCATION_SIZE;
+
+ /**
+ * The feature id for the '<em><b>Sequence Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ISEQUENCE_GENERATOR__SEQUENCE_NAME = IGENERATOR_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Specified Sequence Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ISEQUENCE_GENERATOR__SPECIFIED_SEQUENCE_NAME = IGENERATOR_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Default Sequence Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ISEQUENCE_GENERATOR__DEFAULT_SEQUENCE_NAME = IGENERATOR_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>ISequence Generator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int ISEQUENCE_GENERATOR_FEATURE_COUNT = IGENERATOR_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.IGeneratedValue <em>IGenerated Value</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IGeneratedValue
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIGeneratedValue()
+ * @generated
+ */
+ public static final int IGENERATED_VALUE = 34;
+
+ /**
+ * The feature id for the '<em><b>Strategy</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IGENERATED_VALUE__STRATEGY = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Generator</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IGENERATED_VALUE__GENERATOR = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>IGenerated Value</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IGENERATED_VALUE_FEATURE_COUNT = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.IOrderBy <em>IOrder By</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IOrderBy
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIOrderBy()
+ * @generated
+ */
+ public static final int IORDER_BY = 35;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IORDER_BY__VALUE = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IORDER_BY__TYPE = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>IOrder By</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IORDER_BY_FEATURE_COUNT = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.IQuery <em>IQuery</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IQuery
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIQuery()
+ * @generated
+ */
+ public static final int IQUERY = 36;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IQUERY__NAME = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Query</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IQUERY__QUERY = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Hints</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IQUERY__HINTS = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>IQuery</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IQUERY_FEATURE_COUNT = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.INamedQuery <em>INamed Query</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.INamedQuery
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getINamedQuery()
+ * @generated
+ */
+ public static final int INAMED_QUERY = 37;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int INAMED_QUERY__NAME = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Query</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int INAMED_QUERY__QUERY = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Hints</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int INAMED_QUERY__HINTS = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>INamed Query</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int INAMED_QUERY_FEATURE_COUNT = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 3;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.INamedNativeQuery <em>INamed Native Query</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.INamedNativeQuery
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getINamedNativeQuery()
+ * @generated
+ */
+ public static final int INAMED_NATIVE_QUERY = 38;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int INAMED_NATIVE_QUERY__NAME = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Query</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int INAMED_NATIVE_QUERY__QUERY = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Hints</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int INAMED_NATIVE_QUERY__HINTS = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Result Class</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int INAMED_NATIVE_QUERY__RESULT_CLASS = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Result Set Mapping</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int INAMED_NATIVE_QUERY__RESULT_SET_MAPPING = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 4;
+
+ /**
+ * The number of structural features of the '<em>INamed Native Query</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int INAMED_NATIVE_QUERY_FEATURE_COUNT = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 5;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.IQueryHint <em>IQuery Hint</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IQueryHint
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIQueryHint()
+ * @generated
+ */
+ public static final int IQUERY_HINT = 39;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IQUERY_HINT__NAME = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IQUERY_HINT__VALUE = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>IQuery Hint</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ public static final int IQUERY_HINT_FEATURE_COUNT = JpaCorePackage.IJPA_SOURCE_OBJECT_FEATURE_COUNT + 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType <em>Default Eager Fetch Type</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getDefaultEagerFetchType()
+ * @generated
+ */
+ public static final int DEFAULT_EAGER_FETCH_TYPE = 40;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.DefaultLazyFetchType <em>Default Lazy Fetch Type</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultLazyFetchType
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getDefaultLazyFetchType()
+ * @generated
+ */
+ public static final int DEFAULT_LAZY_FETCH_TYPE = 41;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean <em>Default False Boolean</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getDefaultFalseBoolean()
+ * @generated
+ */
+ public static final int DEFAULT_FALSE_BOOLEAN = 42;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean <em>Default True Boolean</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getDefaultTrueBoolean()
+ * @generated
+ */
+ public static final int DEFAULT_TRUE_BOOLEAN = 43;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.TemporalType <em>Temporal Type</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.TemporalType
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getTemporalType()
+ * @generated
+ */
+ public static final int TEMPORAL_TYPE = 44;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.InheritanceType <em>Inheritance Type</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.InheritanceType
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getInheritanceType()
+ * @generated
+ */
+ public static final int INHERITANCE_TYPE = 45;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.DiscriminatorType <em>Discriminator Type</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.DiscriminatorType
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getDiscriminatorType()
+ * @generated
+ */
+ public static final int DISCRIMINATOR_TYPE = 46;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.GenerationType <em>Generation Type</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.GenerationType
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getGenerationType()
+ * @generated
+ */
+ public static final int GENERATION_TYPE = 47;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.EnumType <em>Enum Type</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.EnumType
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getEnumType()
+ * @generated
+ */
+ public static final int ENUM_TYPE = 48;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.jpt.core.internal.mappings.OrderingType <em>Ordering Type</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.OrderingType
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getOrderingType()
+ * @generated
+ */
+ public static final int ORDERING_TYPE = 49;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iMappedSuperclassEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iEntityEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iEmbeddableEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iTableEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iNamedColumnEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iAbstractColumnEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iColumnEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iColumnMappingEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iBasicEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iIdEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iTransientEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iVersionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iEmbeddedIdEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iEmbeddedEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iRelationshipMappingEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iNonOwningMappingEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iMultiRelationshipMappingEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iOneToManyEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iManyToManyEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iSingleRelationshipMappingEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iManyToOneEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iOneToOneEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iJoinTableEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iAbstractJoinColumnEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iJoinColumnEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iOverrideEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iAttributeOverrideEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iAssociationOverrideEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iDiscriminatorColumnEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iSecondaryTableEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iPrimaryKeyJoinColumnEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iGeneratorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iTableGeneratorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iSequenceGeneratorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iGeneratedValueEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iOrderByEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iQueryEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iNamedQueryEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iNamedNativeQueryEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass iQueryHintEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum defaultEagerFetchTypeEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum defaultLazyFetchTypeEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum defaultFalseBooleanEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum defaultTrueBooleanEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum temporalTypeEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum inheritanceTypeEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum discriminatorTypeEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum generationTypeEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum enumTypeEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum orderingTypeEEnum = 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.jpt.core.internal.mappings.JpaCoreMappingsPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private JpaCoreMappingsPackage() {
+ super(eNS_URI, JpaCoreMappingsFactory.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. Simple
+ * dependencies are satisfied by calling this method on all
+ * dependent packages before doing anything else. This method drives
+ * initialization for interdependent packages directly, in parallel
+ * with this package, itself.
+ * <p>Of this package and its interdependencies, all packages which
+ * have not yet been registered by their URI values are first created
+ * and registered. The packages are then initialized in two steps:
+ * meta-model objects for all of the packages are created before any
+ * are initialized, since one package's meta-model objects may refer to
+ * those of another.
+ * <p>Invocation of this method will not affect any packages that have
+ * already been initialized.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static JpaCoreMappingsPackage init() {
+ if (isInited)
+ return (JpaCoreMappingsPackage) EPackage.Registry.INSTANCE.getEPackage(JpaCoreMappingsPackage.eNS_URI);
+ // Obtain or create and register package
+ JpaCoreMappingsPackage theJpaCoreMappingsPackage = (JpaCoreMappingsPackage) (EPackage.Registry.INSTANCE.getEPackage(eNS_URI) instanceof JpaCoreMappingsPackage ? EPackage.Registry.INSTANCE.getEPackage(eNS_URI) : new JpaCoreMappingsPackage());
+ isInited = true;
+ // Initialize simple dependencies
+ EcorePackage.eINSTANCE.eClass();
+ JavaRefPackage.eINSTANCE.eClass();
+ // Obtain or create and register interdependencies
+ JpaCorePackage theJpaCorePackage = (JpaCorePackage) (EPackage.Registry.INSTANCE.getEPackage(JpaCorePackage.eNS_URI) instanceof JpaCorePackage ? EPackage.Registry.INSTANCE.getEPackage(JpaCorePackage.eNS_URI) : JpaCorePackage.eINSTANCE);
+ JpaJavaPackage theJpaJavaPackage = (JpaJavaPackage) (EPackage.Registry.INSTANCE.getEPackage(JpaJavaPackage.eNS_URI) instanceof JpaJavaPackage ? EPackage.Registry.INSTANCE.getEPackage(JpaJavaPackage.eNS_URI) : JpaJavaPackage.eINSTANCE);
+ JpaJavaMappingsPackage theJpaJavaMappingsPackage = (JpaJavaMappingsPackage) (EPackage.Registry.INSTANCE.getEPackage(JpaJavaMappingsPackage.eNS_URI) instanceof JpaJavaMappingsPackage ? EPackage.Registry.INSTANCE.getEPackage(JpaJavaMappingsPackage.eNS_URI) : JpaJavaMappingsPackage.eINSTANCE);
+ OrmPackage theOrmPackage = (OrmPackage) (EPackage.Registry.INSTANCE.getEPackage(OrmPackage.eNS_URI) instanceof OrmPackage ? EPackage.Registry.INSTANCE.getEPackage(OrmPackage.eNS_URI) : OrmPackage.eINSTANCE);
+ PersistencePackage thePersistencePackage = (PersistencePackage) (EPackage.Registry.INSTANCE.getEPackage(PersistencePackage.eNS_URI) instanceof PersistencePackage ? EPackage.Registry.INSTANCE.getEPackage(PersistencePackage.eNS_URI) : PersistencePackage.eINSTANCE);
+ // Create package meta-data objects
+ theJpaCoreMappingsPackage.createPackageContents();
+ theJpaCorePackage.createPackageContents();
+ theJpaJavaPackage.createPackageContents();
+ theJpaJavaMappingsPackage.createPackageContents();
+ theOrmPackage.createPackageContents();
+ thePersistencePackage.createPackageContents();
+ // Initialize created meta-data
+ theJpaCoreMappingsPackage.initializePackageContents();
+ theJpaCorePackage.initializePackageContents();
+ theJpaJavaPackage.initializePackageContents();
+ theJpaJavaMappingsPackage.initializePackageContents();
+ theOrmPackage.initializePackageContents();
+ thePersistencePackage.initializePackageContents();
+ // Mark meta-data to indicate it can't be changed
+ theJpaCoreMappingsPackage.freeze();
+ return theJpaCoreMappingsPackage;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.IMappedSuperclass <em>IMapped Superclass</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IMapped Superclass</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IMappedSuperclass
+ * @generated
+ */
+ public EClass getIMappedSuperclass() {
+ return iMappedSuperclassEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.IEntity <em>IEntity</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IEntity</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IEntity
+ * @generated
+ */
+ public EClass getIEntity() {
+ return iEntityEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IEntity#getSpecifiedName <em>Specified Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Specified Name</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IEntity#getSpecifiedName()
+ * @see #getIEntity()
+ * @generated
+ */
+ public EAttribute getIEntity_SpecifiedName() {
+ return (EAttribute) iEntityEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IEntity#getDefaultName <em>Default Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Default Name</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IEntity#getDefaultName()
+ * @see #getIEntity()
+ * @generated
+ */
+ public EAttribute getIEntity_DefaultName() {
+ return (EAttribute) iEntityEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.jpt.core.internal.mappings.IEntity#getTable <em>Table</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Table</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IEntity#getTable()
+ * @see #getIEntity()
+ * @generated
+ */
+ public EReference getIEntity_Table() {
+ return (EReference) iEntityEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IEntity#getInheritanceStrategy <em>Inheritance Strategy</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Inheritance Strategy</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IEntity#getInheritanceStrategy()
+ * @see #getIEntity()
+ * @generated
+ */
+ public EAttribute getIEntity_InheritanceStrategy() {
+ return (EAttribute) iEntityEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.jpt.core.internal.mappings.IEntity#getDiscriminatorColumn <em>Discriminator Column</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Discriminator Column</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IEntity#getDiscriminatorColumn()
+ * @see #getIEntity()
+ * @generated
+ */
+ public EReference getIEntity_DiscriminatorColumn() {
+ return (EReference) iEntityEClass.getEStructuralFeatures().get(10);
+ }
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.jpt.core.internal.mappings.IEntity#getSequenceGenerator <em>Sequence Generator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Sequence Generator</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IEntity#getSequenceGenerator()
+ * @see #getIEntity()
+ * @generated
+ */
+ public EReference getIEntity_SequenceGenerator() {
+ return (EReference) iEntityEClass.getEStructuralFeatures().get(11);
+ }
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.jpt.core.internal.mappings.IEntity#getTableGenerator <em>Table Generator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Table Generator</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IEntity#getTableGenerator()
+ * @see #getIEntity()
+ * @generated
+ */
+ public EReference getIEntity_TableGenerator() {
+ return (EReference) iEntityEClass.getEStructuralFeatures().get(12);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IEntity#getDefaultDiscriminatorValue <em>Default Discriminator Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Default Discriminator Value</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IEntity#getDefaultDiscriminatorValue()
+ * @see #getIEntity()
+ * @generated
+ */
+ public EAttribute getIEntity_DefaultDiscriminatorValue() {
+ return (EAttribute) iEntityEClass.getEStructuralFeatures().get(7);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IEntity#getSpecifiedDiscriminatorValue <em>Specified Discriminator Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Specified Discriminator Value</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IEntity#getSpecifiedDiscriminatorValue()
+ * @see #getIEntity()
+ * @generated
+ */
+ public EAttribute getIEntity_SpecifiedDiscriminatorValue() {
+ return (EAttribute) iEntityEClass.getEStructuralFeatures().get(8);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IEntity#getDiscriminatorValue <em>Discriminator Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Discriminator Value</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IEntity#getDiscriminatorValue()
+ * @see #getIEntity()
+ * @generated
+ */
+ public EAttribute getIEntity_DiscriminatorValue() {
+ return (EAttribute) iEntityEClass.getEStructuralFeatures().get(9);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.mappings.IEntity#getPrimaryKeyJoinColumns <em>Primary Key Join Columns</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Primary Key Join Columns</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IEntity#getPrimaryKeyJoinColumns()
+ * @see #getIEntity()
+ * @generated
+ */
+ public EReference getIEntity_PrimaryKeyJoinColumns() {
+ return (EReference) iEntityEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.mappings.IEntity#getSpecifiedPrimaryKeyJoinColumns <em>Specified Primary Key Join Columns</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Specified Primary Key Join Columns</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IEntity#getSpecifiedPrimaryKeyJoinColumns()
+ * @see #getIEntity()
+ * @generated
+ */
+ public EReference getIEntity_SpecifiedPrimaryKeyJoinColumns() {
+ return (EReference) iEntityEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.mappings.IEntity#getDefaultPrimaryKeyJoinColumns <em>Default Primary Key Join Columns</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Default Primary Key Join Columns</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IEntity#getDefaultPrimaryKeyJoinColumns()
+ * @see #getIEntity()
+ * @generated
+ */
+ public EReference getIEntity_DefaultPrimaryKeyJoinColumns() {
+ return (EReference) iEntityEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.mappings.IEntity#getAttributeOverrides <em>Attribute Overrides</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Attribute Overrides</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IEntity#getAttributeOverrides()
+ * @see #getIEntity()
+ * @generated
+ */
+ public EReference getIEntity_AttributeOverrides() {
+ return (EReference) iEntityEClass.getEStructuralFeatures().get(13);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.mappings.IEntity#getSpecifiedAttributeOverrides <em>Specified Attribute Overrides</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Specified Attribute Overrides</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IEntity#getSpecifiedAttributeOverrides()
+ * @see #getIEntity()
+ * @generated
+ */
+ public EReference getIEntity_SpecifiedAttributeOverrides() {
+ return (EReference) iEntityEClass.getEStructuralFeatures().get(14);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.mappings.IEntity#getDefaultAttributeOverrides <em>Default Attribute Overrides</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Default Attribute Overrides</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IEntity#getDefaultAttributeOverrides()
+ * @see #getIEntity()
+ * @generated
+ */
+ public EReference getIEntity_DefaultAttributeOverrides() {
+ return (EReference) iEntityEClass.getEStructuralFeatures().get(15);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.mappings.IEntity#getAssociationOverrides <em>Association Overrides</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Association Overrides</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IEntity#getAssociationOverrides()
+ * @see #getIEntity()
+ * @generated
+ */
+ public EReference getIEntity_AssociationOverrides() {
+ return (EReference) iEntityEClass.getEStructuralFeatures().get(16);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.mappings.IEntity#getSpecifiedAssociationOverrides <em>Specified Association Overrides</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Specified Association Overrides</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IEntity#getSpecifiedAssociationOverrides()
+ * @see #getIEntity()
+ * @generated
+ */
+ public EReference getIEntity_SpecifiedAssociationOverrides() {
+ return (EReference) iEntityEClass.getEStructuralFeatures().get(17);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.mappings.IEntity#getDefaultAssociationOverrides <em>Default Association Overrides</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Default Association Overrides</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IEntity#getDefaultAssociationOverrides()
+ * @see #getIEntity()
+ * @generated
+ */
+ public EReference getIEntity_DefaultAssociationOverrides() {
+ return (EReference) iEntityEClass.getEStructuralFeatures().get(18);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.mappings.IEntity#getNamedQueries <em>Named Queries</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Named Queries</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IEntity#getNamedQueries()
+ * @see #getIEntity()
+ * @generated
+ */
+ public EReference getIEntity_NamedQueries() {
+ return (EReference) iEntityEClass.getEStructuralFeatures().get(19);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.mappings.IEntity#getNamedNativeQueries <em>Named Native Queries</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Named Native Queries</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IEntity#getNamedNativeQueries()
+ * @see #getIEntity()
+ * @generated
+ */
+ public EReference getIEntity_NamedNativeQueries() {
+ return (EReference) iEntityEClass.getEStructuralFeatures().get(20);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.IEmbeddable <em>IEmbeddable</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IEmbeddable</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IEmbeddable
+ * @generated
+ */
+ public EClass getIEmbeddable() {
+ return iEmbeddableEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.ITable <em>ITable</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>ITable</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ITable
+ * @generated
+ */
+ public EClass getITable() {
+ return iTableEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.ITable#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ITable#getName()
+ * @see #getITable()
+ * @generated
+ */
+ public EAttribute getITable_Name() {
+ return (EAttribute) iTableEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.ITable#getSpecifiedName <em>Specified Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Specified Name</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ITable#getSpecifiedName()
+ * @see #getITable()
+ * @generated
+ */
+ public EAttribute getITable_SpecifiedName() {
+ return (EAttribute) iTableEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.ITable#getDefaultName <em>Default Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Default Name</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ITable#getDefaultName()
+ * @see #getITable()
+ * @generated
+ */
+ public EAttribute getITable_DefaultName() {
+ return (EAttribute) iTableEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.ITable#getCatalog <em>Catalog</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Catalog</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ITable#getCatalog()
+ * @see #getITable()
+ * @generated
+ */
+ public EAttribute getITable_Catalog() {
+ return (EAttribute) iTableEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.ITable#getSpecifiedCatalog <em>Specified Catalog</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Specified Catalog</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ITable#getSpecifiedCatalog()
+ * @see #getITable()
+ * @generated
+ */
+ public EAttribute getITable_SpecifiedCatalog() {
+ return (EAttribute) iTableEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.ITable#getDefaultCatalog <em>Default Catalog</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Default Catalog</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ITable#getDefaultCatalog()
+ * @see #getITable()
+ * @generated
+ */
+ public EAttribute getITable_DefaultCatalog() {
+ return (EAttribute) iTableEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.ITable#getSchema <em>Schema</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Schema</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ITable#getSchema()
+ * @see #getITable()
+ * @generated
+ */
+ public EAttribute getITable_Schema() {
+ return (EAttribute) iTableEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.ITable#getSpecifiedSchema <em>Specified Schema</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Specified Schema</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ITable#getSpecifiedSchema()
+ * @see #getITable()
+ * @generated
+ */
+ public EAttribute getITable_SpecifiedSchema() {
+ return (EAttribute) iTableEClass.getEStructuralFeatures().get(7);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.ITable#getDefaultSchema <em>Default Schema</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Default Schema</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ITable#getDefaultSchema()
+ * @see #getITable()
+ * @generated
+ */
+ public EAttribute getITable_DefaultSchema() {
+ return (EAttribute) iTableEClass.getEStructuralFeatures().get(8);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.INamedColumn <em>INamed Column</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>INamed Column</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.INamedColumn
+ * @generated
+ */
+ public EClass getINamedColumn() {
+ return iNamedColumnEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.INamedColumn#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.INamedColumn#getName()
+ * @see #getINamedColumn()
+ * @generated
+ */
+ public EAttribute getINamedColumn_Name() {
+ return (EAttribute) iNamedColumnEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.INamedColumn#getSpecifiedName <em>Specified Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Specified Name</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.INamedColumn#getSpecifiedName()
+ * @see #getINamedColumn()
+ * @generated
+ */
+ public EAttribute getINamedColumn_SpecifiedName() {
+ return (EAttribute) iNamedColumnEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.INamedColumn#getDefaultName <em>Default Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Default Name</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.INamedColumn#getDefaultName()
+ * @see #getINamedColumn()
+ * @generated
+ */
+ public EAttribute getINamedColumn_DefaultName() {
+ return (EAttribute) iNamedColumnEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.INamedColumn#getColumnDefinition <em>Column Definition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Column Definition</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.INamedColumn#getColumnDefinition()
+ * @see #getINamedColumn()
+ * @generated
+ */
+ public EAttribute getINamedColumn_ColumnDefinition() {
+ return (EAttribute) iNamedColumnEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.IAbstractColumn <em>IAbstract Column</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IAbstract Column</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IAbstractColumn
+ * @generated
+ */
+ public EClass getIAbstractColumn() {
+ return iAbstractColumnEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IAbstractColumn#getUnique <em>Unique</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Unique</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IAbstractColumn#getUnique()
+ * @see #getIAbstractColumn()
+ * @generated
+ */
+ public EAttribute getIAbstractColumn_Unique() {
+ return (EAttribute) iAbstractColumnEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IAbstractColumn#getNullable <em>Nullable</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Nullable</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IAbstractColumn#getNullable()
+ * @see #getIAbstractColumn()
+ * @generated
+ */
+ public EAttribute getIAbstractColumn_Nullable() {
+ return (EAttribute) iAbstractColumnEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IAbstractColumn#getInsertable <em>Insertable</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Insertable</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IAbstractColumn#getInsertable()
+ * @see #getIAbstractColumn()
+ * @generated
+ */
+ public EAttribute getIAbstractColumn_Insertable() {
+ return (EAttribute) iAbstractColumnEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IAbstractColumn#getUpdatable <em>Updatable</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Updatable</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IAbstractColumn#getUpdatable()
+ * @see #getIAbstractColumn()
+ * @generated
+ */
+ public EAttribute getIAbstractColumn_Updatable() {
+ return (EAttribute) iAbstractColumnEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IAbstractColumn#getTable <em>Table</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Table</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IAbstractColumn#getTable()
+ * @see #getIAbstractColumn()
+ * @generated
+ */
+ public EAttribute getIAbstractColumn_Table() {
+ return (EAttribute) iAbstractColumnEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IAbstractColumn#getSpecifiedTable <em>Specified Table</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Specified Table</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IAbstractColumn#getSpecifiedTable()
+ * @see #getIAbstractColumn()
+ * @generated
+ */
+ public EAttribute getIAbstractColumn_SpecifiedTable() {
+ return (EAttribute) iAbstractColumnEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IAbstractColumn#getDefaultTable <em>Default Table</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Default Table</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IAbstractColumn#getDefaultTable()
+ * @see #getIAbstractColumn()
+ * @generated
+ */
+ public EAttribute getIAbstractColumn_DefaultTable() {
+ return (EAttribute) iAbstractColumnEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.IColumn <em>IColumn</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IColumn</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IColumn
+ * @generated
+ */
+ public EClass getIColumn() {
+ return iColumnEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IColumn#getLength <em>Length</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Length</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IColumn#getLength()
+ * @see #getIColumn()
+ * @generated
+ */
+ public EAttribute getIColumn_Length() {
+ return (EAttribute) iColumnEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IColumn#getPrecision <em>Precision</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Precision</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IColumn#getPrecision()
+ * @see #getIColumn()
+ * @generated
+ */
+ public EAttribute getIColumn_Precision() {
+ return (EAttribute) iColumnEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IColumn#getScale <em>Scale</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Scale</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IColumn#getScale()
+ * @see #getIColumn()
+ * @generated
+ */
+ public EAttribute getIColumn_Scale() {
+ return (EAttribute) iColumnEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.IColumnMapping <em>IColumn Mapping</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IColumn Mapping</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IColumnMapping
+ * @generated
+ */
+ public EClass getIColumnMapping() {
+ return iColumnMappingEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.IBasic <em>IBasic</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IBasic</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IBasic
+ * @generated
+ */
+ public EClass getIBasic() {
+ return iBasicEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IBasic#getFetch <em>Fetch</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Fetch</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IBasic#getFetch()
+ * @see #getIBasic()
+ * @generated
+ */
+ public EAttribute getIBasic_Fetch() {
+ return (EAttribute) iBasicEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IBasic#getOptional <em>Optional</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Optional</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IBasic#getOptional()
+ * @see #getIBasic()
+ * @generated
+ */
+ public EAttribute getIBasic_Optional() {
+ return (EAttribute) iBasicEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.jpt.core.internal.mappings.IBasic#getColumn <em>Column</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Column</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IBasic#getColumn()
+ * @see #getIBasic()
+ * @generated
+ */
+ public EReference getIBasic_Column() {
+ return (EReference) iBasicEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IBasic#isLob <em>Lob</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Lob</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IBasic#isLob()
+ * @see #getIBasic()
+ * @generated
+ */
+ public EAttribute getIBasic_Lob() {
+ return (EAttribute) iBasicEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IBasic#getTemporal <em>Temporal</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Temporal</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IBasic#getTemporal()
+ * @see #getIBasic()
+ * @generated
+ */
+ public EAttribute getIBasic_Temporal() {
+ return (EAttribute) iBasicEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IBasic#getEnumerated <em>Enumerated</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Enumerated</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IBasic#getEnumerated()
+ * @see #getIBasic()
+ * @generated
+ */
+ public EAttribute getIBasic_Enumerated() {
+ return (EAttribute) iBasicEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.IId <em>IId</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IId</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IId
+ * @generated
+ */
+ public EClass getIId() {
+ return iIdEClass;
+ }
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.jpt.core.internal.mappings.IId#getColumn <em>Column</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Column</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IId#getColumn()
+ * @see #getIId()
+ * @generated
+ */
+ public EReference getIId_Column() {
+ return (EReference) iIdEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.jpt.core.internal.mappings.IId#getGeneratedValue <em>Generated Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Generated Value</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IId#getGeneratedValue()
+ * @see #getIId()
+ * @generated
+ */
+ public EReference getIId_GeneratedValue() {
+ return (EReference) iIdEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IId#getTemporal <em>Temporal</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Temporal</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IId#getTemporal()
+ * @see #getIId()
+ * @generated
+ */
+ public EAttribute getIId_Temporal() {
+ return (EAttribute) iIdEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.jpt.core.internal.mappings.IId#getTableGenerator <em>Table Generator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Table Generator</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IId#getTableGenerator()
+ * @see #getIId()
+ * @generated
+ */
+ public EReference getIId_TableGenerator() {
+ return (EReference) iIdEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.jpt.core.internal.mappings.IId#getSequenceGenerator <em>Sequence Generator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Sequence Generator</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IId#getSequenceGenerator()
+ * @see #getIId()
+ * @generated
+ */
+ public EReference getIId_SequenceGenerator() {
+ return (EReference) iIdEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.ITransient <em>ITransient</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>ITransient</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ITransient
+ * @generated
+ */
+ public EClass getITransient() {
+ return iTransientEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.IVersion <em>IVersion</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IVersion</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IVersion
+ * @generated
+ */
+ public EClass getIVersion() {
+ return iVersionEClass;
+ }
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.jpt.core.internal.mappings.IVersion#getColumn <em>Column</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Column</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IVersion#getColumn()
+ * @see #getIVersion()
+ * @generated
+ */
+ public EReference getIVersion_Column() {
+ return (EReference) iVersionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IVersion#getTemporal <em>Temporal</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Temporal</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IVersion#getTemporal()
+ * @see #getIVersion()
+ * @generated
+ */
+ public EAttribute getIVersion_Temporal() {
+ return (EAttribute) iVersionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.IEmbeddedId <em>IEmbedded Id</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IEmbedded Id</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IEmbeddedId
+ * @generated
+ */
+ public EClass getIEmbeddedId() {
+ return iEmbeddedIdEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.IEmbedded <em>IEmbedded</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IEmbedded</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IEmbedded
+ * @generated
+ */
+ public EClass getIEmbedded() {
+ return iEmbeddedEClass;
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.mappings.IEmbedded#getAttributeOverrides <em>Attribute Overrides</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Attribute Overrides</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IEmbedded#getAttributeOverrides()
+ * @see #getIEmbedded()
+ * @generated
+ */
+ public EReference getIEmbedded_AttributeOverrides() {
+ return (EReference) iEmbeddedEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.mappings.IEmbedded#getSpecifiedAttributeOverrides <em>Specified Attribute Overrides</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Specified Attribute Overrides</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IEmbedded#getSpecifiedAttributeOverrides()
+ * @see #getIEmbedded()
+ * @generated
+ */
+ public EReference getIEmbedded_SpecifiedAttributeOverrides() {
+ return (EReference) iEmbeddedEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.mappings.IEmbedded#getDefaultAttributeOverrides <em>Default Attribute Overrides</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Default Attribute Overrides</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IEmbedded#getDefaultAttributeOverrides()
+ * @see #getIEmbedded()
+ * @generated
+ */
+ public EReference getIEmbedded_DefaultAttributeOverrides() {
+ return (EReference) iEmbeddedEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.IRelationshipMapping <em>IRelationship Mapping</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IRelationship Mapping</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IRelationshipMapping
+ * @generated
+ */
+ public EClass getIRelationshipMapping() {
+ return iRelationshipMappingEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IRelationshipMapping#getTargetEntity <em>Target Entity</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Target Entity</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IRelationshipMapping#getTargetEntity()
+ * @see #getIRelationshipMapping()
+ * @generated
+ */
+ public EAttribute getIRelationshipMapping_TargetEntity() {
+ return (EAttribute) iRelationshipMappingEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IRelationshipMapping#getSpecifiedTargetEntity <em>Specified Target Entity</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Specified Target Entity</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IRelationshipMapping#getSpecifiedTargetEntity()
+ * @see #getIRelationshipMapping()
+ * @generated
+ */
+ public EAttribute getIRelationshipMapping_SpecifiedTargetEntity() {
+ return (EAttribute) iRelationshipMappingEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IRelationshipMapping#getDefaultTargetEntity <em>Default Target Entity</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Default Target Entity</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IRelationshipMapping#getDefaultTargetEntity()
+ * @see #getIRelationshipMapping()
+ * @generated
+ */
+ public EAttribute getIRelationshipMapping_DefaultTargetEntity() {
+ return (EAttribute) iRelationshipMappingEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.jpt.core.internal.mappings.IRelationshipMapping#getResolvedTargetEntity <em>Resolved Target Entity</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Resolved Target Entity</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IRelationshipMapping#getResolvedTargetEntity()
+ * @see #getIRelationshipMapping()
+ * @generated
+ */
+ public EReference getIRelationshipMapping_ResolvedTargetEntity() {
+ return (EReference) iRelationshipMappingEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.INonOwningMapping <em>INon Owning Mapping</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>INon Owning Mapping</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.INonOwningMapping
+ * @generated
+ */
+ public EClass getINonOwningMapping() {
+ return iNonOwningMappingEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.INonOwningMapping#getMappedBy <em>Mapped By</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Mapped By</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.INonOwningMapping#getMappedBy()
+ * @see #getINonOwningMapping()
+ * @generated
+ */
+ public EAttribute getINonOwningMapping_MappedBy() {
+ return (EAttribute) iNonOwningMappingEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping <em>IMulti Relationship Mapping</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IMulti Relationship Mapping</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping
+ * @generated
+ */
+ public EClass getIMultiRelationshipMapping() {
+ return iMultiRelationshipMappingEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping#getFetch <em>Fetch</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Fetch</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping#getFetch()
+ * @see #getIMultiRelationshipMapping()
+ * @generated
+ */
+ public EAttribute getIMultiRelationshipMapping_Fetch() {
+ return (EAttribute) iMultiRelationshipMappingEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping#getJoinTable <em>Join Table</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Join Table</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping#getJoinTable()
+ * @see #getIMultiRelationshipMapping()
+ * @generated
+ */
+ public EReference getIMultiRelationshipMapping_JoinTable() {
+ return (EReference) iMultiRelationshipMappingEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping#getOrderBy <em>Order By</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Order By</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping#getOrderBy()
+ * @see #getIMultiRelationshipMapping()
+ * @generated
+ */
+ public EReference getIMultiRelationshipMapping_OrderBy() {
+ return (EReference) iMultiRelationshipMappingEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.IOneToMany <em>IOne To Many</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IOne To Many</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IOneToMany
+ * @generated
+ */
+ public EClass getIOneToMany() {
+ return iOneToManyEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.IManyToMany <em>IMany To Many</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IMany To Many</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IManyToMany
+ * @generated
+ */
+ public EClass getIManyToMany() {
+ return iManyToManyEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping <em>ISingle Relationship Mapping</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>ISingle Relationship Mapping</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping
+ * @generated
+ */
+ public EClass getISingleRelationshipMapping() {
+ return iSingleRelationshipMappingEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping#getFetch <em>Fetch</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Fetch</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping#getFetch()
+ * @see #getISingleRelationshipMapping()
+ * @generated
+ */
+ public EAttribute getISingleRelationshipMapping_Fetch() {
+ return (EAttribute) iSingleRelationshipMappingEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping#getJoinColumns <em>Join Columns</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Join Columns</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping#getJoinColumns()
+ * @see #getISingleRelationshipMapping()
+ * @generated
+ */
+ public EReference getISingleRelationshipMapping_JoinColumns() {
+ return (EReference) iSingleRelationshipMappingEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping#getSpecifiedJoinColumns <em>Specified Join Columns</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Specified Join Columns</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping#getSpecifiedJoinColumns()
+ * @see #getISingleRelationshipMapping()
+ * @generated
+ */
+ public EReference getISingleRelationshipMapping_SpecifiedJoinColumns() {
+ return (EReference) iSingleRelationshipMappingEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping#getDefaultJoinColumns <em>Default Join Columns</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Default Join Columns</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping#getDefaultJoinColumns()
+ * @see #getISingleRelationshipMapping()
+ * @generated
+ */
+ public EReference getISingleRelationshipMapping_DefaultJoinColumns() {
+ return (EReference) iSingleRelationshipMappingEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.IManyToOne <em>IMany To One</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IMany To One</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IManyToOne
+ * @generated
+ */
+ public EClass getIManyToOne() {
+ return iManyToOneEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.IOneToOne <em>IOne To One</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IOne To One</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IOneToOne
+ * @generated
+ */
+ public EClass getIOneToOne() {
+ return iOneToOneEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.IJoinTable <em>IJoin Table</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IJoin Table</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IJoinTable
+ * @generated
+ */
+ public EClass getIJoinTable() {
+ return iJoinTableEClass;
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.mappings.IJoinTable#getJoinColumns <em>Join Columns</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Join Columns</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IJoinTable#getJoinColumns()
+ * @see #getIJoinTable()
+ * @generated
+ */
+ public EReference getIJoinTable_JoinColumns() {
+ return (EReference) iJoinTableEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.mappings.IJoinTable#getSpecifiedJoinColumns <em>Specified Join Columns</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Specified Join Columns</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IJoinTable#getSpecifiedJoinColumns()
+ * @see #getIJoinTable()
+ * @generated
+ */
+ public EReference getIJoinTable_SpecifiedJoinColumns() {
+ return (EReference) iJoinTableEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.mappings.IJoinTable#getDefaultJoinColumns <em>Default Join Columns</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Default Join Columns</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IJoinTable#getDefaultJoinColumns()
+ * @see #getIJoinTable()
+ * @generated
+ */
+ public EReference getIJoinTable_DefaultJoinColumns() {
+ return (EReference) iJoinTableEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.mappings.IJoinTable#getInverseJoinColumns <em>Inverse Join Columns</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Inverse Join Columns</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IJoinTable#getInverseJoinColumns()
+ * @see #getIJoinTable()
+ * @generated
+ */
+ public EReference getIJoinTable_InverseJoinColumns() {
+ return (EReference) iJoinTableEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.mappings.IJoinTable#getSpecifiedInverseJoinColumns <em>Specified Inverse Join Columns</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Specified Inverse Join Columns</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IJoinTable#getSpecifiedInverseJoinColumns()
+ * @see #getIJoinTable()
+ * @generated
+ */
+ public EReference getIJoinTable_SpecifiedInverseJoinColumns() {
+ return (EReference) iJoinTableEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.mappings.IJoinTable#getDefaultInverseJoinColumns <em>Default Inverse Join Columns</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Default Inverse Join Columns</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IJoinTable#getDefaultInverseJoinColumns()
+ * @see #getIJoinTable()
+ * @generated
+ */
+ public EReference getIJoinTable_DefaultInverseJoinColumns() {
+ return (EReference) iJoinTableEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn <em>IAbstract Join Column</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IAbstract Join Column</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn
+ * @generated
+ */
+ public EClass getIAbstractJoinColumn() {
+ return iAbstractJoinColumnEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn#getReferencedColumnName <em>Referenced Column Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Referenced Column Name</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn#getReferencedColumnName()
+ * @see #getIAbstractJoinColumn()
+ * @generated
+ */
+ public EAttribute getIAbstractJoinColumn_ReferencedColumnName() {
+ return (EAttribute) iAbstractJoinColumnEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn#getSpecifiedReferencedColumnName <em>Specified Referenced Column Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Specified Referenced Column Name</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn#getSpecifiedReferencedColumnName()
+ * @see #getIAbstractJoinColumn()
+ * @generated
+ */
+ public EAttribute getIAbstractJoinColumn_SpecifiedReferencedColumnName() {
+ return (EAttribute) iAbstractJoinColumnEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn#getDefaultReferencedColumnName <em>Default Referenced Column Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Default Referenced Column Name</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn#getDefaultReferencedColumnName()
+ * @see #getIAbstractJoinColumn()
+ * @generated
+ */
+ public EAttribute getIAbstractJoinColumn_DefaultReferencedColumnName() {
+ return (EAttribute) iAbstractJoinColumnEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.IJoinColumn <em>IJoin Column</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IJoin Column</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IJoinColumn
+ * @generated
+ */
+ public EClass getIJoinColumn() {
+ return iJoinColumnEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.IOverride <em>IOverride</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IOverride</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IOverride
+ * @generated
+ */
+ public EClass getIOverride() {
+ return iOverrideEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IOverride#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IOverride#getName()
+ * @see #getIOverride()
+ * @generated
+ */
+ public EAttribute getIOverride_Name() {
+ return (EAttribute) iOverrideEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride <em>IAttribute Override</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IAttribute Override</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IAttributeOverride
+ * @generated
+ */
+ public EClass getIAttributeOverride() {
+ return iAttributeOverrideEClass;
+ }
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride#getColumn <em>Column</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Column</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IAttributeOverride#getColumn()
+ * @see #getIAttributeOverride()
+ * @generated
+ */
+ public EReference getIAttributeOverride_Column() {
+ return (EReference) iAttributeOverrideEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.IAssociationOverride <em>IAssociation Override</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IAssociation Override</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IAssociationOverride
+ * @generated
+ */
+ public EClass getIAssociationOverride() {
+ return iAssociationOverrideEClass;
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.mappings.IAssociationOverride#getJoinColumns <em>Join Columns</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Join Columns</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IAssociationOverride#getJoinColumns()
+ * @see #getIAssociationOverride()
+ * @generated
+ */
+ public EReference getIAssociationOverride_JoinColumns() {
+ return (EReference) iAssociationOverrideEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.mappings.IAssociationOverride#getSpecifiedJoinColumns <em>Specified Join Columns</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Specified Join Columns</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IAssociationOverride#getSpecifiedJoinColumns()
+ * @see #getIAssociationOverride()
+ * @generated
+ */
+ public EReference getIAssociationOverride_SpecifiedJoinColumns() {
+ return (EReference) iAssociationOverrideEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.mappings.IAssociationOverride#getDefaultJoinColumns <em>Default Join Columns</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Default Join Columns</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IAssociationOverride#getDefaultJoinColumns()
+ * @see #getIAssociationOverride()
+ * @generated
+ */
+ public EReference getIAssociationOverride_DefaultJoinColumns() {
+ return (EReference) iAssociationOverrideEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn <em>IDiscriminator Column</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IDiscriminator Column</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn
+ * @generated
+ */
+ public EClass getIDiscriminatorColumn() {
+ return iDiscriminatorColumnEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getDefaultName <em>Default Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Default Name</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getDefaultName()
+ * @see #getIDiscriminatorColumn()
+ * @generated
+ */
+ public EAttribute getIDiscriminatorColumn_DefaultName() {
+ return (EAttribute) iDiscriminatorColumnEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getSpecifiedName <em>Specified Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Specified Name</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getSpecifiedName()
+ * @see #getIDiscriminatorColumn()
+ * @generated
+ */
+ public EAttribute getIDiscriminatorColumn_SpecifiedName() {
+ return (EAttribute) iDiscriminatorColumnEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getName()
+ * @see #getIDiscriminatorColumn()
+ * @generated
+ */
+ public EAttribute getIDiscriminatorColumn_Name() {
+ return (EAttribute) iDiscriminatorColumnEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getDiscriminatorType <em>Discriminator Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Discriminator Type</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getDiscriminatorType()
+ * @see #getIDiscriminatorColumn()
+ * @generated
+ */
+ public EAttribute getIDiscriminatorColumn_DiscriminatorType() {
+ return (EAttribute) iDiscriminatorColumnEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getColumnDefinition <em>Column Definition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Column Definition</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getColumnDefinition()
+ * @see #getIDiscriminatorColumn()
+ * @generated
+ */
+ public EAttribute getIDiscriminatorColumn_ColumnDefinition() {
+ return (EAttribute) iDiscriminatorColumnEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getDefaultLength <em>Default Length</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Default Length</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getDefaultLength()
+ * @see #getIDiscriminatorColumn()
+ * @generated
+ */
+ public EAttribute getIDiscriminatorColumn_DefaultLength() {
+ return (EAttribute) iDiscriminatorColumnEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getSpecifiedLength <em>Specified Length</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Specified Length</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getSpecifiedLength()
+ * @see #getIDiscriminatorColumn()
+ * @generated
+ */
+ public EAttribute getIDiscriminatorColumn_SpecifiedLength() {
+ return (EAttribute) iDiscriminatorColumnEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getLength <em>Length</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Length</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn#getLength()
+ * @see #getIDiscriminatorColumn()
+ * @generated
+ */
+ public EAttribute getIDiscriminatorColumn_Length() {
+ return (EAttribute) iDiscriminatorColumnEClass.getEStructuralFeatures().get(7);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.ISecondaryTable <em>ISecondary Table</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>ISecondary Table</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ISecondaryTable
+ * @generated
+ */
+ public EClass getISecondaryTable() {
+ return iSecondaryTableEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn <em>IPrimary Key Join Column</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IPrimary Key Join Column</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn
+ * @generated
+ */
+ public EClass getIPrimaryKeyJoinColumn() {
+ return iPrimaryKeyJoinColumnEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.IGenerator <em>IGenerator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IGenerator</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IGenerator
+ * @generated
+ */
+ public EClass getIGenerator() {
+ return iGeneratorEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IGenerator#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IGenerator#getName()
+ * @see #getIGenerator()
+ * @generated
+ */
+ public EAttribute getIGenerator_Name() {
+ return (EAttribute) iGeneratorEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IGenerator#getInitialValue <em>Initial Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Initial Value</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IGenerator#getInitialValue()
+ * @see #getIGenerator()
+ * @generated
+ */
+ public EAttribute getIGenerator_InitialValue() {
+ return (EAttribute) iGeneratorEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IGenerator#getSpecifiedInitialValue <em>Specified Initial Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Specified Initial Value</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IGenerator#getSpecifiedInitialValue()
+ * @see #getIGenerator()
+ * @generated
+ */
+ public EAttribute getIGenerator_SpecifiedInitialValue() {
+ return (EAttribute) iGeneratorEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IGenerator#getDefaultInitialValue <em>Default Initial Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Default Initial Value</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IGenerator#getDefaultInitialValue()
+ * @see #getIGenerator()
+ * @generated
+ */
+ public EAttribute getIGenerator_DefaultInitialValue() {
+ return (EAttribute) iGeneratorEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IGenerator#getAllocationSize <em>Allocation Size</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Allocation Size</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IGenerator#getAllocationSize()
+ * @see #getIGenerator()
+ * @generated
+ */
+ public EAttribute getIGenerator_AllocationSize() {
+ return (EAttribute) iGeneratorEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IGenerator#getSpecifiedAllocationSize <em>Specified Allocation Size</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Specified Allocation Size</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IGenerator#getSpecifiedAllocationSize()
+ * @see #getIGenerator()
+ * @generated
+ */
+ public EAttribute getIGenerator_SpecifiedAllocationSize() {
+ return (EAttribute) iGeneratorEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IGenerator#getDefaultAllocationSize <em>Default Allocation Size</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Default Allocation Size</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IGenerator#getDefaultAllocationSize()
+ * @see #getIGenerator()
+ * @generated
+ */
+ public EAttribute getIGenerator_DefaultAllocationSize() {
+ return (EAttribute) iGeneratorEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator <em>ITable Generator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>ITable Generator</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ITableGenerator
+ * @generated
+ */
+ public EClass getITableGenerator() {
+ return iTableGeneratorEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getTable <em>Table</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Table</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ITableGenerator#getTable()
+ * @see #getITableGenerator()
+ * @generated
+ */
+ public EAttribute getITableGenerator_Table() {
+ return (EAttribute) iTableGeneratorEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getSpecifiedTable <em>Specified Table</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Specified Table</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ITableGenerator#getSpecifiedTable()
+ * @see #getITableGenerator()
+ * @generated
+ */
+ public EAttribute getITableGenerator_SpecifiedTable() {
+ return (EAttribute) iTableGeneratorEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getDefaultTable <em>Default Table</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Default Table</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ITableGenerator#getDefaultTable()
+ * @see #getITableGenerator()
+ * @generated
+ */
+ public EAttribute getITableGenerator_DefaultTable() {
+ return (EAttribute) iTableGeneratorEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getCatalog <em>Catalog</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Catalog</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ITableGenerator#getCatalog()
+ * @see #getITableGenerator()
+ * @generated
+ */
+ public EAttribute getITableGenerator_Catalog() {
+ return (EAttribute) iTableGeneratorEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getSpecifiedCatalog <em>Specified Catalog</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Specified Catalog</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ITableGenerator#getSpecifiedCatalog()
+ * @see #getITableGenerator()
+ * @generated
+ */
+ public EAttribute getITableGenerator_SpecifiedCatalog() {
+ return (EAttribute) iTableGeneratorEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getDefaultCatalog <em>Default Catalog</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Default Catalog</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ITableGenerator#getDefaultCatalog()
+ * @see #getITableGenerator()
+ * @generated
+ */
+ public EAttribute getITableGenerator_DefaultCatalog() {
+ return (EAttribute) iTableGeneratorEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getSchema <em>Schema</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Schema</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ITableGenerator#getSchema()
+ * @see #getITableGenerator()
+ * @generated
+ */
+ public EAttribute getITableGenerator_Schema() {
+ return (EAttribute) iTableGeneratorEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getSpecifiedSchema <em>Specified Schema</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Specified Schema</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ITableGenerator#getSpecifiedSchema()
+ * @see #getITableGenerator()
+ * @generated
+ */
+ public EAttribute getITableGenerator_SpecifiedSchema() {
+ return (EAttribute) iTableGeneratorEClass.getEStructuralFeatures().get(7);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getDefaultSchema <em>Default Schema</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Default Schema</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ITableGenerator#getDefaultSchema()
+ * @see #getITableGenerator()
+ * @generated
+ */
+ public EAttribute getITableGenerator_DefaultSchema() {
+ return (EAttribute) iTableGeneratorEClass.getEStructuralFeatures().get(8);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getPkColumnName <em>Pk Column Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Pk Column Name</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ITableGenerator#getPkColumnName()
+ * @see #getITableGenerator()
+ * @generated
+ */
+ public EAttribute getITableGenerator_PkColumnName() {
+ return (EAttribute) iTableGeneratorEClass.getEStructuralFeatures().get(9);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getSpecifiedPkColumnName <em>Specified Pk Column Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Specified Pk Column Name</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ITableGenerator#getSpecifiedPkColumnName()
+ * @see #getITableGenerator()
+ * @generated
+ */
+ public EAttribute getITableGenerator_SpecifiedPkColumnName() {
+ return (EAttribute) iTableGeneratorEClass.getEStructuralFeatures().get(10);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getDefaultPkColumnName <em>Default Pk Column Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Default Pk Column Name</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ITableGenerator#getDefaultPkColumnName()
+ * @see #getITableGenerator()
+ * @generated
+ */
+ public EAttribute getITableGenerator_DefaultPkColumnName() {
+ return (EAttribute) iTableGeneratorEClass.getEStructuralFeatures().get(11);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getValueColumnName <em>Value Column Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value Column Name</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ITableGenerator#getValueColumnName()
+ * @see #getITableGenerator()
+ * @generated
+ */
+ public EAttribute getITableGenerator_ValueColumnName() {
+ return (EAttribute) iTableGeneratorEClass.getEStructuralFeatures().get(12);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getSpecifiedValueColumnName <em>Specified Value Column Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Specified Value Column Name</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ITableGenerator#getSpecifiedValueColumnName()
+ * @see #getITableGenerator()
+ * @generated
+ */
+ public EAttribute getITableGenerator_SpecifiedValueColumnName() {
+ return (EAttribute) iTableGeneratorEClass.getEStructuralFeatures().get(13);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getDefaultValueColumnName <em>Default Value Column Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Default Value Column Name</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ITableGenerator#getDefaultValueColumnName()
+ * @see #getITableGenerator()
+ * @generated
+ */
+ public EAttribute getITableGenerator_DefaultValueColumnName() {
+ return (EAttribute) iTableGeneratorEClass.getEStructuralFeatures().get(14);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getPkColumnValue <em>Pk Column Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Pk Column Value</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ITableGenerator#getPkColumnValue()
+ * @see #getITableGenerator()
+ * @generated
+ */
+ public EAttribute getITableGenerator_PkColumnValue() {
+ return (EAttribute) iTableGeneratorEClass.getEStructuralFeatures().get(15);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getSpecifiedPkColumnValue <em>Specified Pk Column Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Specified Pk Column Value</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ITableGenerator#getSpecifiedPkColumnValue()
+ * @see #getITableGenerator()
+ * @generated
+ */
+ public EAttribute getITableGenerator_SpecifiedPkColumnValue() {
+ return (EAttribute) iTableGeneratorEClass.getEStructuralFeatures().get(16);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator#getDefaultPkColumnValue <em>Default Pk Column Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Default Pk Column Value</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ITableGenerator#getDefaultPkColumnValue()
+ * @see #getITableGenerator()
+ * @generated
+ */
+ public EAttribute getITableGenerator_DefaultPkColumnValue() {
+ return (EAttribute) iTableGeneratorEClass.getEStructuralFeatures().get(17);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.ISequenceGenerator <em>ISequence Generator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>ISequence Generator</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ISequenceGenerator
+ * @generated
+ */
+ public EClass getISequenceGenerator() {
+ return iSequenceGeneratorEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.ISequenceGenerator#getSequenceName <em>Sequence Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Sequence Name</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ISequenceGenerator#getSequenceName()
+ * @see #getISequenceGenerator()
+ * @generated
+ */
+ public EAttribute getISequenceGenerator_SequenceName() {
+ return (EAttribute) iSequenceGeneratorEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.ISequenceGenerator#getSpecifiedSequenceName <em>Specified Sequence Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Specified Sequence Name</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ISequenceGenerator#getSpecifiedSequenceName()
+ * @see #getISequenceGenerator()
+ * @generated
+ */
+ public EAttribute getISequenceGenerator_SpecifiedSequenceName() {
+ return (EAttribute) iSequenceGeneratorEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.ISequenceGenerator#getDefaultSequenceName <em>Default Sequence Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Default Sequence Name</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.ISequenceGenerator#getDefaultSequenceName()
+ * @see #getISequenceGenerator()
+ * @generated
+ */
+ public EAttribute getISequenceGenerator_DefaultSequenceName() {
+ return (EAttribute) iSequenceGeneratorEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.IGeneratedValue <em>IGenerated Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IGenerated Value</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IGeneratedValue
+ * @generated
+ */
+ public EClass getIGeneratedValue() {
+ return iGeneratedValueEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IGeneratedValue#getStrategy <em>Strategy</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Strategy</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IGeneratedValue#getStrategy()
+ * @see #getIGeneratedValue()
+ * @generated
+ */
+ public EAttribute getIGeneratedValue_Strategy() {
+ return (EAttribute) iGeneratedValueEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IGeneratedValue#getGenerator <em>Generator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Generator</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IGeneratedValue#getGenerator()
+ * @see #getIGeneratedValue()
+ * @generated
+ */
+ public EAttribute getIGeneratedValue_Generator() {
+ return (EAttribute) iGeneratedValueEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.IOrderBy <em>IOrder By</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IOrder By</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IOrderBy
+ * @generated
+ */
+ public EClass getIOrderBy() {
+ return iOrderByEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IOrderBy#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IOrderBy#getValue()
+ * @see #getIOrderBy()
+ * @generated
+ */
+ public EAttribute getIOrderBy_Value() {
+ return (EAttribute) iOrderByEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IOrderBy#getType <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Type</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IOrderBy#getType()
+ * @see #getIOrderBy()
+ * @generated
+ */
+ public EAttribute getIOrderBy_Type() {
+ return (EAttribute) iOrderByEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.IQuery <em>IQuery</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IQuery</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IQuery
+ * @generated
+ */
+ public EClass getIQuery() {
+ return iQueryEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IQuery#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IQuery#getName()
+ * @see #getIQuery()
+ * @generated
+ */
+ public EAttribute getIQuery_Name() {
+ return (EAttribute) iQueryEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IQuery#getQuery <em>Query</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Query</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IQuery#getQuery()
+ * @see #getIQuery()
+ * @generated
+ */
+ public EAttribute getIQuery_Query() {
+ return (EAttribute) iQueryEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.jpt.core.internal.mappings.IQuery#getHints <em>Hints</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Hints</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IQuery#getHints()
+ * @see #getIQuery()
+ * @generated
+ */
+ public EReference getIQuery_Hints() {
+ return (EReference) iQueryEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.INamedQuery <em>INamed Query</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>INamed Query</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.INamedQuery
+ * @generated
+ */
+ public EClass getINamedQuery() {
+ return iNamedQueryEClass;
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.INamedNativeQuery <em>INamed Native Query</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>INamed Native Query</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.INamedNativeQuery
+ * @generated
+ */
+ public EClass getINamedNativeQuery() {
+ return iNamedNativeQueryEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.INamedNativeQuery#getResultClass <em>Result Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Result Class</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.INamedNativeQuery#getResultClass()
+ * @see #getINamedNativeQuery()
+ * @generated
+ */
+ public EAttribute getINamedNativeQuery_ResultClass() {
+ return (EAttribute) iNamedNativeQueryEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.INamedNativeQuery#getResultSetMapping <em>Result Set Mapping</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Result Set Mapping</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.INamedNativeQuery#getResultSetMapping()
+ * @see #getINamedNativeQuery()
+ * @generated
+ */
+ public EAttribute getINamedNativeQuery_ResultSetMapping() {
+ return (EAttribute) iNamedNativeQueryEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.jpt.core.internal.mappings.IQueryHint <em>IQuery Hint</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>IQuery Hint</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IQueryHint
+ * @generated
+ */
+ public EClass getIQueryHint() {
+ return iQueryHintEClass;
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IQueryHint#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IQueryHint#getName()
+ * @see #getIQueryHint()
+ * @generated
+ */
+ public EAttribute getIQueryHint_Name() {
+ return (EAttribute) iQueryHintEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.jpt.core.internal.mappings.IQueryHint#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.IQueryHint#getValue()
+ * @see #getIQueryHint()
+ * @generated
+ */
+ public EAttribute getIQueryHint_Value() {
+ return (EAttribute) iQueryHintEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType <em>Default Eager Fetch Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Default Eager Fetch Type</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType
+ * @generated
+ */
+ public EEnum getDefaultEagerFetchType() {
+ return defaultEagerFetchTypeEEnum;
+ }
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.jpt.core.internal.mappings.DefaultLazyFetchType <em>Default Lazy Fetch Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Default Lazy Fetch Type</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultLazyFetchType
+ * @generated
+ */
+ public EEnum getDefaultLazyFetchType() {
+ return defaultLazyFetchTypeEEnum;
+ }
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean <em>Default False Boolean</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Default False Boolean</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean
+ * @generated
+ */
+ public EEnum getDefaultFalseBoolean() {
+ return defaultFalseBooleanEEnum;
+ }
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean <em>Default True Boolean</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Default True Boolean</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean
+ * @generated
+ */
+ public EEnum getDefaultTrueBoolean() {
+ return defaultTrueBooleanEEnum;
+ }
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.jpt.core.internal.mappings.TemporalType <em>Temporal Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Temporal Type</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.TemporalType
+ * @generated
+ */
+ public EEnum getTemporalType() {
+ return temporalTypeEEnum;
+ }
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.jpt.core.internal.mappings.InheritanceType <em>Inheritance Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Inheritance Type</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.InheritanceType
+ * @generated
+ */
+ public EEnum getInheritanceType() {
+ return inheritanceTypeEEnum;
+ }
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.jpt.core.internal.mappings.DiscriminatorType <em>Discriminator Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Discriminator Type</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.DiscriminatorType
+ * @generated
+ */
+ public EEnum getDiscriminatorType() {
+ return discriminatorTypeEEnum;
+ }
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.jpt.core.internal.mappings.GenerationType <em>Generation Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Generation Type</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.GenerationType
+ * @generated
+ */
+ public EEnum getGenerationType() {
+ return generationTypeEEnum;
+ }
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.jpt.core.internal.mappings.EnumType <em>Enum Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Enum Type</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.EnumType
+ * @generated
+ */
+ public EEnum getEnumType() {
+ return enumTypeEEnum;
+ }
+
+ /**
+ * Returns the meta object for enum '{@link org.eclipse.jpt.core.internal.mappings.OrderingType <em>Ordering Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Ordering Type</em>'.
+ * @see org.eclipse.jpt.core.internal.mappings.OrderingType
+ * @generated
+ */
+ public EEnum getOrderingType() {
+ return orderingTypeEEnum;
+ }
+
+ /**
+ * 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
+ */
+ public JpaCoreMappingsFactory getJpaCoreMappingsFactory() {
+ return (JpaCoreMappingsFactory) 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
+ iMappedSuperclassEClass = createEClass(IMAPPED_SUPERCLASS);
+ iEntityEClass = createEClass(IENTITY);
+ createEAttribute(iEntityEClass, IENTITY__SPECIFIED_NAME);
+ createEAttribute(iEntityEClass, IENTITY__DEFAULT_NAME);
+ createEReference(iEntityEClass, IENTITY__TABLE);
+ createEReference(iEntityEClass, IENTITY__PRIMARY_KEY_JOIN_COLUMNS);
+ createEReference(iEntityEClass, IENTITY__SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS);
+ createEReference(iEntityEClass, IENTITY__DEFAULT_PRIMARY_KEY_JOIN_COLUMNS);
+ createEAttribute(iEntityEClass, IENTITY__INHERITANCE_STRATEGY);
+ createEAttribute(iEntityEClass, IENTITY__DEFAULT_DISCRIMINATOR_VALUE);
+ createEAttribute(iEntityEClass, IENTITY__SPECIFIED_DISCRIMINATOR_VALUE);
+ createEAttribute(iEntityEClass, IENTITY__DISCRIMINATOR_VALUE);
+ createEReference(iEntityEClass, IENTITY__DISCRIMINATOR_COLUMN);
+ createEReference(iEntityEClass, IENTITY__SEQUENCE_GENERATOR);
+ createEReference(iEntityEClass, IENTITY__TABLE_GENERATOR);
+ createEReference(iEntityEClass, IENTITY__ATTRIBUTE_OVERRIDES);
+ createEReference(iEntityEClass, IENTITY__SPECIFIED_ATTRIBUTE_OVERRIDES);
+ createEReference(iEntityEClass, IENTITY__DEFAULT_ATTRIBUTE_OVERRIDES);
+ createEReference(iEntityEClass, IENTITY__ASSOCIATION_OVERRIDES);
+ createEReference(iEntityEClass, IENTITY__SPECIFIED_ASSOCIATION_OVERRIDES);
+ createEReference(iEntityEClass, IENTITY__DEFAULT_ASSOCIATION_OVERRIDES);
+ createEReference(iEntityEClass, IENTITY__NAMED_QUERIES);
+ createEReference(iEntityEClass, IENTITY__NAMED_NATIVE_QUERIES);
+ iEmbeddableEClass = createEClass(IEMBEDDABLE);
+ iTableEClass = createEClass(ITABLE);
+ createEAttribute(iTableEClass, ITABLE__NAME);
+ createEAttribute(iTableEClass, ITABLE__SPECIFIED_NAME);
+ createEAttribute(iTableEClass, ITABLE__DEFAULT_NAME);
+ createEAttribute(iTableEClass, ITABLE__CATALOG);
+ createEAttribute(iTableEClass, ITABLE__SPECIFIED_CATALOG);
+ createEAttribute(iTableEClass, ITABLE__DEFAULT_CATALOG);
+ createEAttribute(iTableEClass, ITABLE__SCHEMA);
+ createEAttribute(iTableEClass, ITABLE__SPECIFIED_SCHEMA);
+ createEAttribute(iTableEClass, ITABLE__DEFAULT_SCHEMA);
+ iNamedColumnEClass = createEClass(INAMED_COLUMN);
+ createEAttribute(iNamedColumnEClass, INAMED_COLUMN__NAME);
+ createEAttribute(iNamedColumnEClass, INAMED_COLUMN__SPECIFIED_NAME);
+ createEAttribute(iNamedColumnEClass, INAMED_COLUMN__DEFAULT_NAME);
+ createEAttribute(iNamedColumnEClass, INAMED_COLUMN__COLUMN_DEFINITION);
+ iAbstractColumnEClass = createEClass(IABSTRACT_COLUMN);
+ createEAttribute(iAbstractColumnEClass, IABSTRACT_COLUMN__UNIQUE);
+ createEAttribute(iAbstractColumnEClass, IABSTRACT_COLUMN__NULLABLE);
+ createEAttribute(iAbstractColumnEClass, IABSTRACT_COLUMN__INSERTABLE);
+ createEAttribute(iAbstractColumnEClass, IABSTRACT_COLUMN__UPDATABLE);
+ createEAttribute(iAbstractColumnEClass, IABSTRACT_COLUMN__TABLE);
+ createEAttribute(iAbstractColumnEClass, IABSTRACT_COLUMN__SPECIFIED_TABLE);
+ createEAttribute(iAbstractColumnEClass, IABSTRACT_COLUMN__DEFAULT_TABLE);
+ iColumnEClass = createEClass(ICOLUMN);
+ createEAttribute(iColumnEClass, ICOLUMN__LENGTH);
+ createEAttribute(iColumnEClass, ICOLUMN__PRECISION);
+ createEAttribute(iColumnEClass, ICOLUMN__SCALE);
+ iColumnMappingEClass = createEClass(ICOLUMN_MAPPING);
+ iBasicEClass = createEClass(IBASIC);
+ createEAttribute(iBasicEClass, IBASIC__FETCH);
+ createEAttribute(iBasicEClass, IBASIC__OPTIONAL);
+ createEReference(iBasicEClass, IBASIC__COLUMN);
+ createEAttribute(iBasicEClass, IBASIC__LOB);
+ createEAttribute(iBasicEClass, IBASIC__TEMPORAL);
+ createEAttribute(iBasicEClass, IBASIC__ENUMERATED);
+ iIdEClass = createEClass(IID);
+ createEReference(iIdEClass, IID__COLUMN);
+ createEReference(iIdEClass, IID__GENERATED_VALUE);
+ createEAttribute(iIdEClass, IID__TEMPORAL);
+ createEReference(iIdEClass, IID__TABLE_GENERATOR);
+ createEReference(iIdEClass, IID__SEQUENCE_GENERATOR);
+ iTransientEClass = createEClass(ITRANSIENT);
+ iVersionEClass = createEClass(IVERSION);
+ createEReference(iVersionEClass, IVERSION__COLUMN);
+ createEAttribute(iVersionEClass, IVERSION__TEMPORAL);
+ iEmbeddedIdEClass = createEClass(IEMBEDDED_ID);
+ iEmbeddedEClass = createEClass(IEMBEDDED);
+ createEReference(iEmbeddedEClass, IEMBEDDED__ATTRIBUTE_OVERRIDES);
+ createEReference(iEmbeddedEClass, IEMBEDDED__SPECIFIED_ATTRIBUTE_OVERRIDES);
+ createEReference(iEmbeddedEClass, IEMBEDDED__DEFAULT_ATTRIBUTE_OVERRIDES);
+ iRelationshipMappingEClass = createEClass(IRELATIONSHIP_MAPPING);
+ createEAttribute(iRelationshipMappingEClass, IRELATIONSHIP_MAPPING__TARGET_ENTITY);
+ createEAttribute(iRelationshipMappingEClass, IRELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY);
+ createEAttribute(iRelationshipMappingEClass, IRELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY);
+ createEReference(iRelationshipMappingEClass, IRELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY);
+ iNonOwningMappingEClass = createEClass(INON_OWNING_MAPPING);
+ createEAttribute(iNonOwningMappingEClass, INON_OWNING_MAPPING__MAPPED_BY);
+ iMultiRelationshipMappingEClass = createEClass(IMULTI_RELATIONSHIP_MAPPING);
+ createEAttribute(iMultiRelationshipMappingEClass, IMULTI_RELATIONSHIP_MAPPING__FETCH);
+ createEReference(iMultiRelationshipMappingEClass, IMULTI_RELATIONSHIP_MAPPING__JOIN_TABLE);
+ createEReference(iMultiRelationshipMappingEClass, IMULTI_RELATIONSHIP_MAPPING__ORDER_BY);
+ iOneToManyEClass = createEClass(IONE_TO_MANY);
+ iManyToManyEClass = createEClass(IMANY_TO_MANY);
+ iSingleRelationshipMappingEClass = createEClass(ISINGLE_RELATIONSHIP_MAPPING);
+ createEAttribute(iSingleRelationshipMappingEClass, ISINGLE_RELATIONSHIP_MAPPING__FETCH);
+ createEReference(iSingleRelationshipMappingEClass, ISINGLE_RELATIONSHIP_MAPPING__JOIN_COLUMNS);
+ createEReference(iSingleRelationshipMappingEClass, ISINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS);
+ createEReference(iSingleRelationshipMappingEClass, ISINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS);
+ iManyToOneEClass = createEClass(IMANY_TO_ONE);
+ iOneToOneEClass = createEClass(IONE_TO_ONE);
+ iJoinTableEClass = createEClass(IJOIN_TABLE);
+ createEReference(iJoinTableEClass, IJOIN_TABLE__JOIN_COLUMNS);
+ createEReference(iJoinTableEClass, IJOIN_TABLE__SPECIFIED_JOIN_COLUMNS);
+ createEReference(iJoinTableEClass, IJOIN_TABLE__DEFAULT_JOIN_COLUMNS);
+ createEReference(iJoinTableEClass, IJOIN_TABLE__INVERSE_JOIN_COLUMNS);
+ createEReference(iJoinTableEClass, IJOIN_TABLE__SPECIFIED_INVERSE_JOIN_COLUMNS);
+ createEReference(iJoinTableEClass, IJOIN_TABLE__DEFAULT_INVERSE_JOIN_COLUMNS);
+ iAbstractJoinColumnEClass = createEClass(IABSTRACT_JOIN_COLUMN);
+ createEAttribute(iAbstractJoinColumnEClass, IABSTRACT_JOIN_COLUMN__REFERENCED_COLUMN_NAME);
+ createEAttribute(iAbstractJoinColumnEClass, IABSTRACT_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME);
+ createEAttribute(iAbstractJoinColumnEClass, IABSTRACT_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME);
+ iJoinColumnEClass = createEClass(IJOIN_COLUMN);
+ iOverrideEClass = createEClass(IOVERRIDE);
+ createEAttribute(iOverrideEClass, IOVERRIDE__NAME);
+ iAttributeOverrideEClass = createEClass(IATTRIBUTE_OVERRIDE);
+ createEReference(iAttributeOverrideEClass, IATTRIBUTE_OVERRIDE__COLUMN);
+ iAssociationOverrideEClass = createEClass(IASSOCIATION_OVERRIDE);
+ createEReference(iAssociationOverrideEClass, IASSOCIATION_OVERRIDE__JOIN_COLUMNS);
+ createEReference(iAssociationOverrideEClass, IASSOCIATION_OVERRIDE__SPECIFIED_JOIN_COLUMNS);
+ createEReference(iAssociationOverrideEClass, IASSOCIATION_OVERRIDE__DEFAULT_JOIN_COLUMNS);
+ iDiscriminatorColumnEClass = createEClass(IDISCRIMINATOR_COLUMN);
+ createEAttribute(iDiscriminatorColumnEClass, IDISCRIMINATOR_COLUMN__DEFAULT_NAME);
+ createEAttribute(iDiscriminatorColumnEClass, IDISCRIMINATOR_COLUMN__SPECIFIED_NAME);
+ createEAttribute(iDiscriminatorColumnEClass, IDISCRIMINATOR_COLUMN__NAME);
+ createEAttribute(iDiscriminatorColumnEClass, IDISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE);
+ createEAttribute(iDiscriminatorColumnEClass, IDISCRIMINATOR_COLUMN__COLUMN_DEFINITION);
+ createEAttribute(iDiscriminatorColumnEClass, IDISCRIMINATOR_COLUMN__DEFAULT_LENGTH);
+ createEAttribute(iDiscriminatorColumnEClass, IDISCRIMINATOR_COLUMN__SPECIFIED_LENGTH);
+ createEAttribute(iDiscriminatorColumnEClass, IDISCRIMINATOR_COLUMN__LENGTH);
+ iSecondaryTableEClass = createEClass(ISECONDARY_TABLE);
+ iPrimaryKeyJoinColumnEClass = createEClass(IPRIMARY_KEY_JOIN_COLUMN);
+ iGeneratorEClass = createEClass(IGENERATOR);
+ createEAttribute(iGeneratorEClass, IGENERATOR__NAME);
+ createEAttribute(iGeneratorEClass, IGENERATOR__INITIAL_VALUE);
+ createEAttribute(iGeneratorEClass, IGENERATOR__SPECIFIED_INITIAL_VALUE);
+ createEAttribute(iGeneratorEClass, IGENERATOR__DEFAULT_INITIAL_VALUE);
+ createEAttribute(iGeneratorEClass, IGENERATOR__ALLOCATION_SIZE);
+ createEAttribute(iGeneratorEClass, IGENERATOR__SPECIFIED_ALLOCATION_SIZE);
+ createEAttribute(iGeneratorEClass, IGENERATOR__DEFAULT_ALLOCATION_SIZE);
+ iTableGeneratorEClass = createEClass(ITABLE_GENERATOR);
+ createEAttribute(iTableGeneratorEClass, ITABLE_GENERATOR__TABLE);
+ createEAttribute(iTableGeneratorEClass, ITABLE_GENERATOR__SPECIFIED_TABLE);
+ createEAttribute(iTableGeneratorEClass, ITABLE_GENERATOR__DEFAULT_TABLE);
+ createEAttribute(iTableGeneratorEClass, ITABLE_GENERATOR__CATALOG);
+ createEAttribute(iTableGeneratorEClass, ITABLE_GENERATOR__SPECIFIED_CATALOG);
+ createEAttribute(iTableGeneratorEClass, ITABLE_GENERATOR__DEFAULT_CATALOG);
+ createEAttribute(iTableGeneratorEClass, ITABLE_GENERATOR__SCHEMA);
+ createEAttribute(iTableGeneratorEClass, ITABLE_GENERATOR__SPECIFIED_SCHEMA);
+ createEAttribute(iTableGeneratorEClass, ITABLE_GENERATOR__DEFAULT_SCHEMA);
+ createEAttribute(iTableGeneratorEClass, ITABLE_GENERATOR__PK_COLUMN_NAME);
+ createEAttribute(iTableGeneratorEClass, ITABLE_GENERATOR__SPECIFIED_PK_COLUMN_NAME);
+ createEAttribute(iTableGeneratorEClass, ITABLE_GENERATOR__DEFAULT_PK_COLUMN_NAME);
+ createEAttribute(iTableGeneratorEClass, ITABLE_GENERATOR__VALUE_COLUMN_NAME);
+ createEAttribute(iTableGeneratorEClass, ITABLE_GENERATOR__SPECIFIED_VALUE_COLUMN_NAME);
+ createEAttribute(iTableGeneratorEClass, ITABLE_GENERATOR__DEFAULT_VALUE_COLUMN_NAME);
+ createEAttribute(iTableGeneratorEClass, ITABLE_GENERATOR__PK_COLUMN_VALUE);
+ createEAttribute(iTableGeneratorEClass, ITABLE_GENERATOR__SPECIFIED_PK_COLUMN_VALUE);
+ createEAttribute(iTableGeneratorEClass, ITABLE_GENERATOR__DEFAULT_PK_COLUMN_VALUE);
+ iSequenceGeneratorEClass = createEClass(ISEQUENCE_GENERATOR);
+ createEAttribute(iSequenceGeneratorEClass, ISEQUENCE_GENERATOR__SEQUENCE_NAME);
+ createEAttribute(iSequenceGeneratorEClass, ISEQUENCE_GENERATOR__SPECIFIED_SEQUENCE_NAME);
+ createEAttribute(iSequenceGeneratorEClass, ISEQUENCE_GENERATOR__DEFAULT_SEQUENCE_NAME);
+ iGeneratedValueEClass = createEClass(IGENERATED_VALUE);
+ createEAttribute(iGeneratedValueEClass, IGENERATED_VALUE__STRATEGY);
+ createEAttribute(iGeneratedValueEClass, IGENERATED_VALUE__GENERATOR);
+ iOrderByEClass = createEClass(IORDER_BY);
+ createEAttribute(iOrderByEClass, IORDER_BY__VALUE);
+ createEAttribute(iOrderByEClass, IORDER_BY__TYPE);
+ iQueryEClass = createEClass(IQUERY);
+ createEAttribute(iQueryEClass, IQUERY__NAME);
+ createEAttribute(iQueryEClass, IQUERY__QUERY);
+ createEReference(iQueryEClass, IQUERY__HINTS);
+ iNamedQueryEClass = createEClass(INAMED_QUERY);
+ iNamedNativeQueryEClass = createEClass(INAMED_NATIVE_QUERY);
+ createEAttribute(iNamedNativeQueryEClass, INAMED_NATIVE_QUERY__RESULT_CLASS);
+ createEAttribute(iNamedNativeQueryEClass, INAMED_NATIVE_QUERY__RESULT_SET_MAPPING);
+ iQueryHintEClass = createEClass(IQUERY_HINT);
+ createEAttribute(iQueryHintEClass, IQUERY_HINT__NAME);
+ createEAttribute(iQueryHintEClass, IQUERY_HINT__VALUE);
+ // Create enums
+ defaultEagerFetchTypeEEnum = createEEnum(DEFAULT_EAGER_FETCH_TYPE);
+ defaultLazyFetchTypeEEnum = createEEnum(DEFAULT_LAZY_FETCH_TYPE);
+ defaultFalseBooleanEEnum = createEEnum(DEFAULT_FALSE_BOOLEAN);
+ defaultTrueBooleanEEnum = createEEnum(DEFAULT_TRUE_BOOLEAN);
+ temporalTypeEEnum = createEEnum(TEMPORAL_TYPE);
+ inheritanceTypeEEnum = createEEnum(INHERITANCE_TYPE);
+ discriminatorTypeEEnum = createEEnum(DISCRIMINATOR_TYPE);
+ generationTypeEEnum = createEEnum(GENERATION_TYPE);
+ enumTypeEEnum = createEEnum(ENUM_TYPE);
+ orderingTypeEEnum = createEEnum(ORDERING_TYPE);
+ }
+
+ /**
+ * <!-- 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
+ JpaCorePackage theJpaCorePackage = (JpaCorePackage) EPackage.Registry.INSTANCE.getEPackage(JpaCorePackage.eNS_URI);
+ EcorePackage theEcorePackage = (EcorePackage) EPackage.Registry.INSTANCE.getEPackage(EcorePackage.eNS_URI);
+ // Create type parameters
+ // Set bounds for type parameters
+ // Add supertypes to classes
+ iMappedSuperclassEClass.getESuperTypes().add(theJpaCorePackage.getITypeMapping());
+ iEntityEClass.getESuperTypes().add(theJpaCorePackage.getITypeMapping());
+ iEmbeddableEClass.getESuperTypes().add(theJpaCorePackage.getITypeMapping());
+ iTableEClass.getESuperTypes().add(theJpaCorePackage.getIJpaSourceObject());
+ iNamedColumnEClass.getESuperTypes().add(theJpaCorePackage.getIJpaSourceObject());
+ iAbstractColumnEClass.getESuperTypes().add(this.getINamedColumn());
+ iColumnEClass.getESuperTypes().add(this.getIAbstractColumn());
+ iBasicEClass.getESuperTypes().add(theJpaCorePackage.getIAttributeMapping());
+ iBasicEClass.getESuperTypes().add(this.getIColumnMapping());
+ iIdEClass.getESuperTypes().add(theJpaCorePackage.getIAttributeMapping());
+ iIdEClass.getESuperTypes().add(this.getIColumnMapping());
+ iTransientEClass.getESuperTypes().add(theJpaCorePackage.getIAttributeMapping());
+ iVersionEClass.getESuperTypes().add(theJpaCorePackage.getIAttributeMapping());
+ iVersionEClass.getESuperTypes().add(this.getIColumnMapping());
+ iEmbeddedIdEClass.getESuperTypes().add(theJpaCorePackage.getIAttributeMapping());
+ iEmbeddedEClass.getESuperTypes().add(theJpaCorePackage.getIAttributeMapping());
+ iRelationshipMappingEClass.getESuperTypes().add(theJpaCorePackage.getIAttributeMapping());
+ iNonOwningMappingEClass.getESuperTypes().add(this.getIRelationshipMapping());
+ iMultiRelationshipMappingEClass.getESuperTypes().add(this.getINonOwningMapping());
+ iOneToManyEClass.getESuperTypes().add(this.getIMultiRelationshipMapping());
+ iManyToManyEClass.getESuperTypes().add(this.getIMultiRelationshipMapping());
+ iSingleRelationshipMappingEClass.getESuperTypes().add(this.getIRelationshipMapping());
+ iManyToOneEClass.getESuperTypes().add(this.getISingleRelationshipMapping());
+ iOneToOneEClass.getESuperTypes().add(this.getISingleRelationshipMapping());
+ iOneToOneEClass.getESuperTypes().add(this.getINonOwningMapping());
+ iJoinTableEClass.getESuperTypes().add(this.getITable());
+ iAbstractJoinColumnEClass.getESuperTypes().add(this.getINamedColumn());
+ iJoinColumnEClass.getESuperTypes().add(this.getIAbstractColumn());
+ iJoinColumnEClass.getESuperTypes().add(this.getIAbstractJoinColumn());
+ iOverrideEClass.getESuperTypes().add(theJpaCorePackage.getIJpaSourceObject());
+ iAttributeOverrideEClass.getESuperTypes().add(this.getIOverride());
+ iAttributeOverrideEClass.getESuperTypes().add(this.getIColumnMapping());
+ iAssociationOverrideEClass.getESuperTypes().add(this.getIOverride());
+ iDiscriminatorColumnEClass.getESuperTypes().add(theJpaCorePackage.getIJpaSourceObject());
+ iSecondaryTableEClass.getESuperTypes().add(this.getITable());
+ iPrimaryKeyJoinColumnEClass.getESuperTypes().add(this.getIAbstractJoinColumn());
+ iGeneratorEClass.getESuperTypes().add(theJpaCorePackage.getIJpaSourceObject());
+ iTableGeneratorEClass.getESuperTypes().add(this.getIGenerator());
+ iSequenceGeneratorEClass.getESuperTypes().add(this.getIGenerator());
+ iGeneratedValueEClass.getESuperTypes().add(theJpaCorePackage.getIJpaSourceObject());
+ iOrderByEClass.getESuperTypes().add(theJpaCorePackage.getIJpaSourceObject());
+ iQueryEClass.getESuperTypes().add(theJpaCorePackage.getIJpaSourceObject());
+ iNamedQueryEClass.getESuperTypes().add(theJpaCorePackage.getIJpaSourceObject());
+ iNamedQueryEClass.getESuperTypes().add(this.getIQuery());
+ iNamedNativeQueryEClass.getESuperTypes().add(theJpaCorePackage.getIJpaSourceObject());
+ iNamedNativeQueryEClass.getESuperTypes().add(this.getIQuery());
+ iQueryHintEClass.getESuperTypes().add(theJpaCorePackage.getIJpaSourceObject());
+ // Initialize classes and features; add operations and parameters
+ initEClass(iMappedSuperclassEClass, IMappedSuperclass.class, "IMappedSuperclass", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(iEntityEClass, IEntity.class, "IEntity", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getIEntity_SpecifiedName(), ecorePackage.getEString(), "specifiedName", null, 0, 1, IEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIEntity_DefaultName(), ecorePackage.getEString(), "defaultName", null, 0, 1, IEntity.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getIEntity_Table(), this.getITable(), null, "table", null, 1, 1, IEntity.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getIEntity_PrimaryKeyJoinColumns(), this.getIPrimaryKeyJoinColumn(), null, "primaryKeyJoinColumns", null, 0, -1, IEntity.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getIEntity_SpecifiedPrimaryKeyJoinColumns(), this.getIPrimaryKeyJoinColumn(), null, "specifiedPrimaryKeyJoinColumns", null, 0, -1, IEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getIEntity_DefaultPrimaryKeyJoinColumns(), this.getIPrimaryKeyJoinColumn(), null, "defaultPrimaryKeyJoinColumns", null, 0, -1, IEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIEntity_InheritanceStrategy(), this.getInheritanceType(), "inheritanceStrategy", null, 0, 1, IEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIEntity_DefaultDiscriminatorValue(), theEcorePackage.getEString(), "defaultDiscriminatorValue", null, 0, 1, IEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIEntity_SpecifiedDiscriminatorValue(), theEcorePackage.getEString(), "specifiedDiscriminatorValue", null, 0, 1, IEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIEntity_DiscriminatorValue(), theEcorePackage.getEString(), "discriminatorValue", null, 0, 1, IEntity.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEReference(getIEntity_DiscriminatorColumn(), this.getIDiscriminatorColumn(), null, "discriminatorColumn", null, 0, 1, IEntity.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getIEntity_SequenceGenerator(), this.getISequenceGenerator(), null, "sequenceGenerator", null, 0, 1, IEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getIEntity_TableGenerator(), this.getITableGenerator(), null, "tableGenerator", null, 0, 1, IEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getIEntity_AttributeOverrides(), this.getIAttributeOverride(), null, "attributeOverrides", null, 0, -1, IEntity.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getIEntity_SpecifiedAttributeOverrides(), this.getIAttributeOverride(), null, "specifiedAttributeOverrides", null, 0, -1, IEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getIEntity_DefaultAttributeOverrides(), this.getIAttributeOverride(), null, "defaultAttributeOverrides", null, 0, -1, IEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getIEntity_AssociationOverrides(), this.getIAssociationOverride(), null, "associationOverrides", null, 0, -1, IEntity.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getIEntity_SpecifiedAssociationOverrides(), this.getIAssociationOverride(), null, "specifiedAssociationOverrides", null, 0, -1, IEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getIEntity_DefaultAssociationOverrides(), this.getIAssociationOverride(), null, "defaultAssociationOverrides", null, 0, -1, IEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getIEntity_NamedQueries(), this.getINamedQuery(), null, "namedQueries", null, 0, -1, IEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getIEntity_NamedNativeQueries(), this.getINamedNativeQuery(), null, "namedNativeQueries", null, 0, -1, IEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ addEOperation(iEntityEClass, ecorePackage.getEBoolean(), "discriminatorValueIsAllowed", 0, 1);
+ addEOperation(iEntityEClass, this.getISecondaryTable(), "getSecondaryTables", 0, -1);
+ addEOperation(iEntityEClass, this.getIEntity(), "parentEntity", 0, 1);
+ addEOperation(iEntityEClass, this.getIEntity(), "rootEntity", 0, 1);
+ initEClass(iEmbeddableEClass, IEmbeddable.class, "IEmbeddable", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(iTableEClass, ITable.class, "ITable", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getITable_Name(), ecorePackage.getEString(), "name", null, 0, 1, ITable.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEAttribute(getITable_SpecifiedName(), ecorePackage.getEString(), "specifiedName", null, 0, 1, ITable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getITable_DefaultName(), ecorePackage.getEString(), "defaultName", null, 0, 1, ITable.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getITable_Catalog(), ecorePackage.getEString(), "catalog", null, 0, 1, ITable.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEAttribute(getITable_SpecifiedCatalog(), ecorePackage.getEString(), "specifiedCatalog", null, 0, 1, ITable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getITable_DefaultCatalog(), ecorePackage.getEString(), "defaultCatalog", null, 0, 1, ITable.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getITable_Schema(), ecorePackage.getEString(), "schema", null, 0, 1, ITable.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEAttribute(getITable_SpecifiedSchema(), ecorePackage.getEString(), "specifiedSchema", null, 0, 1, ITable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getITable_DefaultSchema(), ecorePackage.getEString(), "defaultSchema", null, 0, 1, ITable.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(iNamedColumnEClass, INamedColumn.class, "INamedColumn", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getINamedColumn_Name(), ecorePackage.getEString(), "name", null, 0, 1, INamedColumn.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEAttribute(getINamedColumn_SpecifiedName(), ecorePackage.getEString(), "specifiedName", null, 0, 1, INamedColumn.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getINamedColumn_DefaultName(), ecorePackage.getEString(), "defaultName", null, 0, 1, INamedColumn.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getINamedColumn_ColumnDefinition(), ecorePackage.getEString(), "columnDefinition", null, 0, 1, INamedColumn.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(iAbstractColumnEClass, IAbstractColumn.class, "IAbstractColumn", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getIAbstractColumn_Unique(), this.getDefaultFalseBoolean(), "unique", null, 0, 1, IAbstractColumn.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIAbstractColumn_Nullable(), this.getDefaultTrueBoolean(), "nullable", null, 0, 1, IAbstractColumn.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIAbstractColumn_Insertable(), this.getDefaultTrueBoolean(), "insertable", null, 0, 1, IAbstractColumn.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIAbstractColumn_Updatable(), this.getDefaultTrueBoolean(), "updatable", null, 0, 1, IAbstractColumn.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIAbstractColumn_Table(), ecorePackage.getEString(), "table", null, 0, 1, IAbstractColumn.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIAbstractColumn_SpecifiedTable(), ecorePackage.getEString(), "specifiedTable", null, 0, 1, IAbstractColumn.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIAbstractColumn_DefaultTable(), ecorePackage.getEString(), "defaultTable", null, 0, 1, IAbstractColumn.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(iColumnEClass, IColumn.class, "IColumn", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getIColumn_Length(), ecorePackage.getEInt(), "length", "255", 0, 1, IColumn.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIColumn_Precision(), ecorePackage.getEInt(), "precision", null, 0, 1, IColumn.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIColumn_Scale(), ecorePackage.getEInt(), "scale", null, 0, 1, IColumn.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(iColumnMappingEClass, IColumnMapping.class, "IColumnMapping", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ addEOperation(iColumnMappingEClass, this.getIColumn(), "getColumn", 0, 1);
+ initEClass(iBasicEClass, IBasic.class, "IBasic", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getIBasic_Fetch(), this.getDefaultEagerFetchType(), "fetch", null, 0, 1, IBasic.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIBasic_Optional(), this.getDefaultTrueBoolean(), "optional", null, 0, 1, IBasic.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getIBasic_Column(), this.getIColumn(), null, "column", null, 1, 1, IBasic.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIBasic_Lob(), ecorePackage.getEBoolean(), "lob", null, 0, 1, IBasic.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIBasic_Temporal(), this.getTemporalType(), "temporal", null, 0, 1, IBasic.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIBasic_Enumerated(), this.getEnumType(), "enumerated", null, 0, 1, IBasic.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(iIdEClass, IId.class, "IId", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getIId_Column(), this.getIColumn(), null, "column", null, 1, 1, IId.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getIId_GeneratedValue(), this.getIGeneratedValue(), null, "generatedValue", null, 0, 1, IId.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIId_Temporal(), this.getTemporalType(), "temporal", null, 0, 1, IId.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getIId_TableGenerator(), this.getITableGenerator(), null, "tableGenerator", null, 0, 1, IId.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getIId_SequenceGenerator(), this.getISequenceGenerator(), null, "sequenceGenerator", null, 0, 1, IId.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(iTransientEClass, ITransient.class, "ITransient", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(iVersionEClass, IVersion.class, "IVersion", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getIVersion_Column(), this.getIColumn(), null, "column", null, 1, 1, IVersion.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIVersion_Temporal(), this.getTemporalType(), "temporal", null, 0, 1, IVersion.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(iEmbeddedIdEClass, IEmbeddedId.class, "IEmbeddedId", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(iEmbeddedEClass, IEmbedded.class, "IEmbedded", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getIEmbedded_AttributeOverrides(), this.getIAttributeOverride(), null, "attributeOverrides", null, 0, -1, IEmbedded.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getIEmbedded_SpecifiedAttributeOverrides(), this.getIAttributeOverride(), null, "specifiedAttributeOverrides", null, 0, -1, IEmbedded.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getIEmbedded_DefaultAttributeOverrides(), this.getIAttributeOverride(), null, "defaultAttributeOverrides", null, 0, -1, IEmbedded.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ addEOperation(iEmbeddedEClass, this.getIEmbeddable(), "embeddable", 0, 1);
+ initEClass(iRelationshipMappingEClass, IRelationshipMapping.class, "IRelationshipMapping", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getIRelationshipMapping_TargetEntity(), ecorePackage.getEString(), "targetEntity", null, 0, 1, IRelationshipMapping.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIRelationshipMapping_SpecifiedTargetEntity(), ecorePackage.getEString(), "specifiedTargetEntity", null, 0, 1, IRelationshipMapping.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIRelationshipMapping_DefaultTargetEntity(), ecorePackage.getEString(), "defaultTargetEntity", null, 0, 1, IRelationshipMapping.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getIRelationshipMapping_ResolvedTargetEntity(), this.getIEntity(), null, "resolvedTargetEntity", null, 0, 1, IRelationshipMapping.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(iNonOwningMappingEClass, INonOwningMapping.class, "INonOwningMapping", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getINonOwningMapping_MappedBy(), theEcorePackage.getEString(), "mappedBy", null, 0, 1, INonOwningMapping.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(iMultiRelationshipMappingEClass, IMultiRelationshipMapping.class, "IMultiRelationshipMapping", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getIMultiRelationshipMapping_Fetch(), this.getDefaultLazyFetchType(), "fetch", null, 0, 1, IMultiRelationshipMapping.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getIMultiRelationshipMapping_JoinTable(), this.getIJoinTable(), null, "joinTable", null, 1, 1, IMultiRelationshipMapping.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getIMultiRelationshipMapping_OrderBy(), this.getIOrderBy(), null, "orderBy", null, 1, 1, IMultiRelationshipMapping.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(iOneToManyEClass, IOneToMany.class, "IOneToMany", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(iManyToManyEClass, IManyToMany.class, "IManyToMany", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(iSingleRelationshipMappingEClass, ISingleRelationshipMapping.class, "ISingleRelationshipMapping", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getISingleRelationshipMapping_Fetch(), this.getDefaultEagerFetchType(), "fetch", null, 0, 1, ISingleRelationshipMapping.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getISingleRelationshipMapping_JoinColumns(), this.getIJoinColumn(), null, "joinColumns", null, 0, -1, ISingleRelationshipMapping.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getISingleRelationshipMapping_SpecifiedJoinColumns(), this.getIJoinColumn(), null, "specifiedJoinColumns", null, 0, -1, ISingleRelationshipMapping.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getISingleRelationshipMapping_DefaultJoinColumns(), this.getIJoinColumn(), null, "defaultJoinColumns", null, 0, -1, ISingleRelationshipMapping.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(iManyToOneEClass, IManyToOne.class, "IManyToOne", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(iOneToOneEClass, IOneToOne.class, "IOneToOne", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(iJoinTableEClass, IJoinTable.class, "IJoinTable", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getIJoinTable_JoinColumns(), this.getIJoinColumn(), null, "joinColumns", null, 0, -1, IJoinTable.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getIJoinTable_SpecifiedJoinColumns(), this.getIJoinColumn(), null, "specifiedJoinColumns", null, 0, -1, IJoinTable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getIJoinTable_DefaultJoinColumns(), this.getIJoinColumn(), null, "defaultJoinColumns", null, 0, -1, IJoinTable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getIJoinTable_InverseJoinColumns(), this.getIJoinColumn(), null, "inverseJoinColumns", null, 0, -1, IJoinTable.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getIJoinTable_SpecifiedInverseJoinColumns(), this.getIJoinColumn(), null, "specifiedInverseJoinColumns", null, 0, -1, IJoinTable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getIJoinTable_DefaultInverseJoinColumns(), this.getIJoinColumn(), null, "defaultInverseJoinColumns", null, 0, -1, IJoinTable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(iAbstractJoinColumnEClass, IAbstractJoinColumn.class, "IAbstractJoinColumn", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getIAbstractJoinColumn_ReferencedColumnName(), ecorePackage.getEString(), "referencedColumnName", null, 0, 1, IAbstractJoinColumn.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIAbstractJoinColumn_SpecifiedReferencedColumnName(), ecorePackage.getEString(), "specifiedReferencedColumnName", null, 0, 1, IAbstractJoinColumn.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIAbstractJoinColumn_DefaultReferencedColumnName(), ecorePackage.getEString(), "defaultReferencedColumnName", null, 0, 1, IAbstractJoinColumn.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(iJoinColumnEClass, IJoinColumn.class, "IJoinColumn", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(iOverrideEClass, IOverride.class, "IOverride", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getIOverride_Name(), theEcorePackage.getEString(), "name", null, 0, 1, IOverride.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(iAttributeOverrideEClass, IAttributeOverride.class, "IAttributeOverride", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getIAttributeOverride_Column(), this.getIColumn(), null, "column", null, 1, 1, IAttributeOverride.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(iAssociationOverrideEClass, IAssociationOverride.class, "IAssociationOverride", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getIAssociationOverride_JoinColumns(), this.getIJoinColumn(), null, "joinColumns", null, 0, -1, IAssociationOverride.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getIAssociationOverride_SpecifiedJoinColumns(), this.getIJoinColumn(), null, "specifiedJoinColumns", null, 0, -1, IAssociationOverride.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getIAssociationOverride_DefaultJoinColumns(), this.getIJoinColumn(), null, "defaultJoinColumns", null, 0, -1, IAssociationOverride.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(iDiscriminatorColumnEClass, IDiscriminatorColumn.class, "IDiscriminatorColumn", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getIDiscriminatorColumn_DefaultName(), theEcorePackage.getEString(), "defaultName", null, 0, 1, IDiscriminatorColumn.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIDiscriminatorColumn_SpecifiedName(), theEcorePackage.getEString(), "specifiedName", null, 0, 1, IDiscriminatorColumn.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIDiscriminatorColumn_Name(), theEcorePackage.getEString(), "name", null, 0, 1, IDiscriminatorColumn.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIDiscriminatorColumn_DiscriminatorType(), this.getDiscriminatorType(), "discriminatorType", null, 0, 1, IDiscriminatorColumn.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIDiscriminatorColumn_ColumnDefinition(), ecorePackage.getEString(), "columnDefinition", null, 0, 1, IDiscriminatorColumn.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIDiscriminatorColumn_DefaultLength(), theEcorePackage.getEInt(), "defaultLength", "31", 0, 1, IDiscriminatorColumn.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIDiscriminatorColumn_SpecifiedLength(), theEcorePackage.getEInt(), "specifiedLength", "-1", 0, 1, IDiscriminatorColumn.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIDiscriminatorColumn_Length(), theEcorePackage.getEInt(), "length", null, 0, 1, IDiscriminatorColumn.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEClass(iSecondaryTableEClass, ISecondaryTable.class, "ISecondaryTable", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(iPrimaryKeyJoinColumnEClass, IPrimaryKeyJoinColumn.class, "IPrimaryKeyJoinColumn", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(iGeneratorEClass, IGenerator.class, "IGenerator", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getIGenerator_Name(), ecorePackage.getEString(), "name", null, 0, 1, IGenerator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIGenerator_InitialValue(), theEcorePackage.getEInt(), "initialValue", null, 0, 1, IGenerator.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIGenerator_SpecifiedInitialValue(), theEcorePackage.getEInt(), "specifiedInitialValue", "-1", 0, 1, IGenerator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIGenerator_DefaultInitialValue(), theEcorePackage.getEInt(), "defaultInitialValue", null, 0, 1, IGenerator.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIGenerator_AllocationSize(), theEcorePackage.getEInt(), "allocationSize", null, 0, 1, IGenerator.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIGenerator_SpecifiedAllocationSize(), theEcorePackage.getEInt(), "specifiedAllocationSize", "-1", 0, 1, IGenerator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIGenerator_DefaultAllocationSize(), theEcorePackage.getEInt(), "defaultAllocationSize", null, 0, 1, IGenerator.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(iTableGeneratorEClass, ITableGenerator.class, "ITableGenerator", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getITableGenerator_Table(), ecorePackage.getEString(), "table", null, 0, 1, ITableGenerator.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEAttribute(getITableGenerator_SpecifiedTable(), ecorePackage.getEString(), "specifiedTable", null, 0, 1, ITableGenerator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getITableGenerator_DefaultTable(), ecorePackage.getEString(), "defaultTable", null, 0, 1, ITableGenerator.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getITableGenerator_Catalog(), ecorePackage.getEString(), "catalog", null, 0, 1, ITableGenerator.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEAttribute(getITableGenerator_SpecifiedCatalog(), ecorePackage.getEString(), "specifiedCatalog", null, 0, 1, ITableGenerator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getITableGenerator_DefaultCatalog(), ecorePackage.getEString(), "defaultCatalog", null, 0, 1, ITableGenerator.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getITableGenerator_Schema(), ecorePackage.getEString(), "schema", null, 0, 1, ITableGenerator.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEAttribute(getITableGenerator_SpecifiedSchema(), ecorePackage.getEString(), "specifiedSchema", null, 0, 1, ITableGenerator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getITableGenerator_DefaultSchema(), ecorePackage.getEString(), "defaultSchema", null, 0, 1, ITableGenerator.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getITableGenerator_PkColumnName(), ecorePackage.getEString(), "pkColumnName", null, 0, 1, ITableGenerator.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEAttribute(getITableGenerator_SpecifiedPkColumnName(), ecorePackage.getEString(), "specifiedPkColumnName", null, 0, 1, ITableGenerator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getITableGenerator_DefaultPkColumnName(), ecorePackage.getEString(), "defaultPkColumnName", null, 0, 1, ITableGenerator.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getITableGenerator_ValueColumnName(), ecorePackage.getEString(), "valueColumnName", null, 0, 1, ITableGenerator.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEAttribute(getITableGenerator_SpecifiedValueColumnName(), ecorePackage.getEString(), "specifiedValueColumnName", null, 0, 1, ITableGenerator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getITableGenerator_DefaultValueColumnName(), ecorePackage.getEString(), "defaultValueColumnName", null, 0, 1, ITableGenerator.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getITableGenerator_PkColumnValue(), ecorePackage.getEString(), "pkColumnValue", null, 0, 1, ITableGenerator.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEAttribute(getITableGenerator_SpecifiedPkColumnValue(), ecorePackage.getEString(), "specifiedPkColumnValue", null, 0, 1, ITableGenerator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getITableGenerator_DefaultPkColumnValue(), ecorePackage.getEString(), "defaultPkColumnValue", null, 0, 1, ITableGenerator.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(iSequenceGeneratorEClass, ISequenceGenerator.class, "ISequenceGenerator", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getISequenceGenerator_SequenceName(), ecorePackage.getEString(), "sequenceName", null, 0, 1, ISequenceGenerator.class, !IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+ initEAttribute(getISequenceGenerator_SpecifiedSequenceName(), ecorePackage.getEString(), "specifiedSequenceName", null, 0, 1, ISequenceGenerator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getISequenceGenerator_DefaultSequenceName(), ecorePackage.getEString(), "defaultSequenceName", null, 0, 1, ISequenceGenerator.class, !IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(iGeneratedValueEClass, IGeneratedValue.class, "IGeneratedValue", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getIGeneratedValue_Strategy(), this.getGenerationType(), "strategy", null, 0, 1, IGeneratedValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIGeneratedValue_Generator(), theEcorePackage.getEString(), "generator", null, 0, 1, IGeneratedValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(iOrderByEClass, IOrderBy.class, "IOrderBy", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getIOrderBy_Value(), theEcorePackage.getEString(), "value", null, 0, 1, IOrderBy.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIOrderBy_Type(), this.getOrderingType(), "type", null, 0, 1, IOrderBy.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(iQueryEClass, IQuery.class, "IQuery", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getIQuery_Name(), theEcorePackage.getEString(), "name", null, 0, 1, IQuery.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIQuery_Query(), theEcorePackage.getEString(), "query", null, 0, 1, IQuery.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getIQuery_Hints(), this.getIQueryHint(), null, "hints", null, 0, -1, IQuery.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(iNamedQueryEClass, INamedQuery.class, "INamedQuery", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEClass(iNamedNativeQueryEClass, INamedNativeQuery.class, "INamedNativeQuery", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getINamedNativeQuery_ResultClass(), theEcorePackage.getEString(), "resultClass", null, 0, 1, INamedNativeQuery.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getINamedNativeQuery_ResultSetMapping(), theEcorePackage.getEString(), "resultSetMapping", null, 0, 1, INamedNativeQuery.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(iQueryHintEClass, IQueryHint.class, "IQueryHint", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getIQueryHint_Name(), theEcorePackage.getEString(), "name", null, 0, 1, IQueryHint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getIQueryHint_Value(), theEcorePackage.getEString(), "value", null, 0, 1, IQueryHint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ // Initialize enums and add enum literals
+ initEEnum(defaultEagerFetchTypeEEnum, DefaultEagerFetchType.class, "DefaultEagerFetchType");
+ addEEnumLiteral(defaultEagerFetchTypeEEnum, DefaultEagerFetchType.DEFAULT);
+ addEEnumLiteral(defaultEagerFetchTypeEEnum, DefaultEagerFetchType.EAGER);
+ addEEnumLiteral(defaultEagerFetchTypeEEnum, DefaultEagerFetchType.LAZY);
+ initEEnum(defaultLazyFetchTypeEEnum, DefaultLazyFetchType.class, "DefaultLazyFetchType");
+ addEEnumLiteral(defaultLazyFetchTypeEEnum, DefaultLazyFetchType.DEFAULT);
+ addEEnumLiteral(defaultLazyFetchTypeEEnum, DefaultLazyFetchType.LAZY);
+ addEEnumLiteral(defaultLazyFetchTypeEEnum, DefaultLazyFetchType.EAGER);
+ initEEnum(defaultFalseBooleanEEnum, DefaultFalseBoolean.class, "DefaultFalseBoolean");
+ addEEnumLiteral(defaultFalseBooleanEEnum, DefaultFalseBoolean.DEFAULT);
+ addEEnumLiteral(defaultFalseBooleanEEnum, DefaultFalseBoolean.FALSE);
+ addEEnumLiteral(defaultFalseBooleanEEnum, DefaultFalseBoolean.TRUE);
+ initEEnum(defaultTrueBooleanEEnum, DefaultTrueBoolean.class, "DefaultTrueBoolean");
+ addEEnumLiteral(defaultTrueBooleanEEnum, DefaultTrueBoolean.DEFAULT);
+ addEEnumLiteral(defaultTrueBooleanEEnum, DefaultTrueBoolean.TRUE);
+ addEEnumLiteral(defaultTrueBooleanEEnum, DefaultTrueBoolean.FALSE);
+ initEEnum(temporalTypeEEnum, TemporalType.class, "TemporalType");
+ addEEnumLiteral(temporalTypeEEnum, TemporalType.NULL);
+ addEEnumLiteral(temporalTypeEEnum, TemporalType.DATE);
+ addEEnumLiteral(temporalTypeEEnum, TemporalType.TIME);
+ addEEnumLiteral(temporalTypeEEnum, TemporalType.TIMESTAMP);
+ initEEnum(inheritanceTypeEEnum, InheritanceType.class, "InheritanceType");
+ addEEnumLiteral(inheritanceTypeEEnum, InheritanceType.DEFAULT);
+ addEEnumLiteral(inheritanceTypeEEnum, InheritanceType.SINGLE_TABLE);
+ addEEnumLiteral(inheritanceTypeEEnum, InheritanceType.JOINED);
+ addEEnumLiteral(inheritanceTypeEEnum, InheritanceType.TABLE_PER_CLASS);
+ initEEnum(discriminatorTypeEEnum, DiscriminatorType.class, "DiscriminatorType");
+ addEEnumLiteral(discriminatorTypeEEnum, DiscriminatorType.DEFAULT);
+ addEEnumLiteral(discriminatorTypeEEnum, DiscriminatorType.STRING);
+ addEEnumLiteral(discriminatorTypeEEnum, DiscriminatorType.CHAR);
+ addEEnumLiteral(discriminatorTypeEEnum, DiscriminatorType.INTEGER);
+ initEEnum(generationTypeEEnum, GenerationType.class, "GenerationType");
+ addEEnumLiteral(generationTypeEEnum, GenerationType.DEFAULT);
+ addEEnumLiteral(generationTypeEEnum, GenerationType.AUTO);
+ addEEnumLiteral(generationTypeEEnum, GenerationType.IDENTITY);
+ addEEnumLiteral(generationTypeEEnum, GenerationType.SEQUENCE);
+ addEEnumLiteral(generationTypeEEnum, GenerationType.TABLE);
+ initEEnum(enumTypeEEnum, EnumType.class, "EnumType");
+ addEEnumLiteral(enumTypeEEnum, EnumType.DEFAULT);
+ addEEnumLiteral(enumTypeEEnum, EnumType.ORDINAL);
+ addEEnumLiteral(enumTypeEEnum, EnumType.STRING);
+ initEEnum(orderingTypeEEnum, OrderingType.class, "OrderingType");
+ addEEnumLiteral(orderingTypeEEnum, OrderingType.NONE);
+ addEEnumLiteral(orderingTypeEEnum, OrderingType.PRIMARY_KEY);
+ addEEnumLiteral(orderingTypeEEnum, OrderingType.CUSTOM);
+ }
+ /**
+ * <!-- 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
+ */
+ public interface Literals
+ {
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IMappedSuperclass <em>IMapped Superclass</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IMappedSuperclass
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIMappedSuperclass()
+ * @generated
+ */
+ public static final EClass IMAPPED_SUPERCLASS = eINSTANCE.getIMappedSuperclass();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IEntity <em>IEntity</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IEntity
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEntity()
+ * @generated
+ */
+ public static final EClass IENTITY = eINSTANCE.getIEntity();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IENTITY__SPECIFIED_NAME = eINSTANCE.getIEntity_SpecifiedName();
+
+ /**
+ * The meta object literal for the '<em><b>Default Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IENTITY__DEFAULT_NAME = eINSTANCE.getIEntity_DefaultName();
+
+ /**
+ * The meta object literal for the '<em><b>Table</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IENTITY__TABLE = eINSTANCE.getIEntity_Table();
+
+ /**
+ * The meta object literal for the '<em><b>Inheritance Strategy</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IENTITY__INHERITANCE_STRATEGY = eINSTANCE.getIEntity_InheritanceStrategy();
+
+ /**
+ * The meta object literal for the '<em><b>Discriminator Column</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IENTITY__DISCRIMINATOR_COLUMN = eINSTANCE.getIEntity_DiscriminatorColumn();
+
+ /**
+ * The meta object literal for the '<em><b>Sequence Generator</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IENTITY__SEQUENCE_GENERATOR = eINSTANCE.getIEntity_SequenceGenerator();
+
+ /**
+ * The meta object literal for the '<em><b>Table Generator</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IENTITY__TABLE_GENERATOR = eINSTANCE.getIEntity_TableGenerator();
+
+ /**
+ * The meta object literal for the '<em><b>Default Discriminator Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IENTITY__DEFAULT_DISCRIMINATOR_VALUE = eINSTANCE.getIEntity_DefaultDiscriminatorValue();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Discriminator Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IENTITY__SPECIFIED_DISCRIMINATOR_VALUE = eINSTANCE.getIEntity_SpecifiedDiscriminatorValue();
+
+ /**
+ * The meta object literal for the '<em><b>Discriminator Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IENTITY__DISCRIMINATOR_VALUE = eINSTANCE.getIEntity_DiscriminatorValue();
+
+ /**
+ * The meta object literal for the '<em><b>Primary Key Join Columns</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IENTITY__PRIMARY_KEY_JOIN_COLUMNS = eINSTANCE.getIEntity_PrimaryKeyJoinColumns();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Primary Key Join Columns</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IENTITY__SPECIFIED_PRIMARY_KEY_JOIN_COLUMNS = eINSTANCE.getIEntity_SpecifiedPrimaryKeyJoinColumns();
+
+ /**
+ * The meta object literal for the '<em><b>Default Primary Key Join Columns</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IENTITY__DEFAULT_PRIMARY_KEY_JOIN_COLUMNS = eINSTANCE.getIEntity_DefaultPrimaryKeyJoinColumns();
+
+ /**
+ * The meta object literal for the '<em><b>Attribute Overrides</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IENTITY__ATTRIBUTE_OVERRIDES = eINSTANCE.getIEntity_AttributeOverrides();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Attribute Overrides</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IENTITY__SPECIFIED_ATTRIBUTE_OVERRIDES = eINSTANCE.getIEntity_SpecifiedAttributeOverrides();
+
+ /**
+ * The meta object literal for the '<em><b>Default Attribute Overrides</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IENTITY__DEFAULT_ATTRIBUTE_OVERRIDES = eINSTANCE.getIEntity_DefaultAttributeOverrides();
+
+ /**
+ * The meta object literal for the '<em><b>Association Overrides</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IENTITY__ASSOCIATION_OVERRIDES = eINSTANCE.getIEntity_AssociationOverrides();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Association Overrides</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IENTITY__SPECIFIED_ASSOCIATION_OVERRIDES = eINSTANCE.getIEntity_SpecifiedAssociationOverrides();
+
+ /**
+ * The meta object literal for the '<em><b>Default Association Overrides</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IENTITY__DEFAULT_ASSOCIATION_OVERRIDES = eINSTANCE.getIEntity_DefaultAssociationOverrides();
+
+ /**
+ * The meta object literal for the '<em><b>Named Queries</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IENTITY__NAMED_QUERIES = eINSTANCE.getIEntity_NamedQueries();
+
+ /**
+ * The meta object literal for the '<em><b>Named Native Queries</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IENTITY__NAMED_NATIVE_QUERIES = eINSTANCE.getIEntity_NamedNativeQueries();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IEmbeddable <em>IEmbeddable</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IEmbeddable
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEmbeddable()
+ * @generated
+ */
+ public static final EClass IEMBEDDABLE = eINSTANCE.getIEmbeddable();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.ITable <em>ITable</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.ITable
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITable()
+ * @generated
+ */
+ public static final EClass ITABLE = eINSTANCE.getITable();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ITABLE__NAME = eINSTANCE.getITable_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ITABLE__SPECIFIED_NAME = eINSTANCE.getITable_SpecifiedName();
+
+ /**
+ * The meta object literal for the '<em><b>Default Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ITABLE__DEFAULT_NAME = eINSTANCE.getITable_DefaultName();
+
+ /**
+ * The meta object literal for the '<em><b>Catalog</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ITABLE__CATALOG = eINSTANCE.getITable_Catalog();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Catalog</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ITABLE__SPECIFIED_CATALOG = eINSTANCE.getITable_SpecifiedCatalog();
+
+ /**
+ * The meta object literal for the '<em><b>Default Catalog</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ITABLE__DEFAULT_CATALOG = eINSTANCE.getITable_DefaultCatalog();
+
+ /**
+ * The meta object literal for the '<em><b>Schema</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ITABLE__SCHEMA = eINSTANCE.getITable_Schema();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Schema</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ITABLE__SPECIFIED_SCHEMA = eINSTANCE.getITable_SpecifiedSchema();
+
+ /**
+ * The meta object literal for the '<em><b>Default Schema</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ITABLE__DEFAULT_SCHEMA = eINSTANCE.getITable_DefaultSchema();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.INamedColumn <em>INamed Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.INamedColumn
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getINamedColumn()
+ * @generated
+ */
+ public static final EClass INAMED_COLUMN = eINSTANCE.getINamedColumn();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute INAMED_COLUMN__NAME = eINSTANCE.getINamedColumn_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute INAMED_COLUMN__SPECIFIED_NAME = eINSTANCE.getINamedColumn_SpecifiedName();
+
+ /**
+ * The meta object literal for the '<em><b>Default Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute INAMED_COLUMN__DEFAULT_NAME = eINSTANCE.getINamedColumn_DefaultName();
+
+ /**
+ * The meta object literal for the '<em><b>Column Definition</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute INAMED_COLUMN__COLUMN_DEFINITION = eINSTANCE.getINamedColumn_ColumnDefinition();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IAbstractColumn <em>IAbstract Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IAbstractColumn
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIAbstractColumn()
+ * @generated
+ */
+ public static final EClass IABSTRACT_COLUMN = eINSTANCE.getIAbstractColumn();
+
+ /**
+ * The meta object literal for the '<em><b>Unique</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IABSTRACT_COLUMN__UNIQUE = eINSTANCE.getIAbstractColumn_Unique();
+
+ /**
+ * The meta object literal for the '<em><b>Nullable</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IABSTRACT_COLUMN__NULLABLE = eINSTANCE.getIAbstractColumn_Nullable();
+
+ /**
+ * The meta object literal for the '<em><b>Insertable</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IABSTRACT_COLUMN__INSERTABLE = eINSTANCE.getIAbstractColumn_Insertable();
+
+ /**
+ * The meta object literal for the '<em><b>Updatable</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IABSTRACT_COLUMN__UPDATABLE = eINSTANCE.getIAbstractColumn_Updatable();
+
+ /**
+ * The meta object literal for the '<em><b>Table</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IABSTRACT_COLUMN__TABLE = eINSTANCE.getIAbstractColumn_Table();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Table</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IABSTRACT_COLUMN__SPECIFIED_TABLE = eINSTANCE.getIAbstractColumn_SpecifiedTable();
+
+ /**
+ * The meta object literal for the '<em><b>Default Table</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IABSTRACT_COLUMN__DEFAULT_TABLE = eINSTANCE.getIAbstractColumn_DefaultTable();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IColumn <em>IColumn</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IColumn
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIColumn()
+ * @generated
+ */
+ public static final EClass ICOLUMN = eINSTANCE.getIColumn();
+
+ /**
+ * The meta object literal for the '<em><b>Length</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ICOLUMN__LENGTH = eINSTANCE.getIColumn_Length();
+
+ /**
+ * The meta object literal for the '<em><b>Precision</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ICOLUMN__PRECISION = eINSTANCE.getIColumn_Precision();
+
+ /**
+ * The meta object literal for the '<em><b>Scale</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ICOLUMN__SCALE = eINSTANCE.getIColumn_Scale();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IColumnMapping <em>IColumn Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IColumnMapping
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIColumnMapping()
+ * @generated
+ */
+ public static final EClass ICOLUMN_MAPPING = eINSTANCE.getIColumnMapping();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IBasic <em>IBasic</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IBasic
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIBasic()
+ * @generated
+ */
+ public static final EClass IBASIC = eINSTANCE.getIBasic();
+
+ /**
+ * The meta object literal for the '<em><b>Fetch</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IBASIC__FETCH = eINSTANCE.getIBasic_Fetch();
+
+ /**
+ * The meta object literal for the '<em><b>Optional</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IBASIC__OPTIONAL = eINSTANCE.getIBasic_Optional();
+
+ /**
+ * The meta object literal for the '<em><b>Column</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IBASIC__COLUMN = eINSTANCE.getIBasic_Column();
+
+ /**
+ * The meta object literal for the '<em><b>Lob</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IBASIC__LOB = eINSTANCE.getIBasic_Lob();
+
+ /**
+ * The meta object literal for the '<em><b>Temporal</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IBASIC__TEMPORAL = eINSTANCE.getIBasic_Temporal();
+
+ /**
+ * The meta object literal for the '<em><b>Enumerated</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IBASIC__ENUMERATED = eINSTANCE.getIBasic_Enumerated();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IId <em>IId</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IId
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIId()
+ * @generated
+ */
+ public static final EClass IID = eINSTANCE.getIId();
+
+ /**
+ * The meta object literal for the '<em><b>Column</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IID__COLUMN = eINSTANCE.getIId_Column();
+
+ /**
+ * The meta object literal for the '<em><b>Generated Value</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IID__GENERATED_VALUE = eINSTANCE.getIId_GeneratedValue();
+
+ /**
+ * The meta object literal for the '<em><b>Temporal</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IID__TEMPORAL = eINSTANCE.getIId_Temporal();
+
+ /**
+ * The meta object literal for the '<em><b>Table Generator</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IID__TABLE_GENERATOR = eINSTANCE.getIId_TableGenerator();
+
+ /**
+ * The meta object literal for the '<em><b>Sequence Generator</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IID__SEQUENCE_GENERATOR = eINSTANCE.getIId_SequenceGenerator();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.ITransient <em>ITransient</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.ITransient
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITransient()
+ * @generated
+ */
+ public static final EClass ITRANSIENT = eINSTANCE.getITransient();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IVersion <em>IVersion</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IVersion
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIVersion()
+ * @generated
+ */
+ public static final EClass IVERSION = eINSTANCE.getIVersion();
+
+ /**
+ * The meta object literal for the '<em><b>Column</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IVERSION__COLUMN = eINSTANCE.getIVersion_Column();
+
+ /**
+ * The meta object literal for the '<em><b>Temporal</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IVERSION__TEMPORAL = eINSTANCE.getIVersion_Temporal();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IEmbeddedId <em>IEmbedded Id</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IEmbeddedId
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEmbeddedId()
+ * @generated
+ */
+ public static final EClass IEMBEDDED_ID = eINSTANCE.getIEmbeddedId();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IEmbedded <em>IEmbedded</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IEmbedded
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIEmbedded()
+ * @generated
+ */
+ public static final EClass IEMBEDDED = eINSTANCE.getIEmbedded();
+
+ /**
+ * The meta object literal for the '<em><b>Attribute Overrides</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IEMBEDDED__ATTRIBUTE_OVERRIDES = eINSTANCE.getIEmbedded_AttributeOverrides();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Attribute Overrides</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IEMBEDDED__SPECIFIED_ATTRIBUTE_OVERRIDES = eINSTANCE.getIEmbedded_SpecifiedAttributeOverrides();
+
+ /**
+ * The meta object literal for the '<em><b>Default Attribute Overrides</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IEMBEDDED__DEFAULT_ATTRIBUTE_OVERRIDES = eINSTANCE.getIEmbedded_DefaultAttributeOverrides();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IRelationshipMapping <em>IRelationship Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IRelationshipMapping
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIRelationshipMapping()
+ * @generated
+ */
+ public static final EClass IRELATIONSHIP_MAPPING = eINSTANCE.getIRelationshipMapping();
+
+ /**
+ * The meta object literal for the '<em><b>Target Entity</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IRELATIONSHIP_MAPPING__TARGET_ENTITY = eINSTANCE.getIRelationshipMapping_TargetEntity();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Target Entity</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IRELATIONSHIP_MAPPING__SPECIFIED_TARGET_ENTITY = eINSTANCE.getIRelationshipMapping_SpecifiedTargetEntity();
+
+ /**
+ * The meta object literal for the '<em><b>Default Target Entity</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IRELATIONSHIP_MAPPING__DEFAULT_TARGET_ENTITY = eINSTANCE.getIRelationshipMapping_DefaultTargetEntity();
+
+ /**
+ * The meta object literal for the '<em><b>Resolved Target Entity</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IRELATIONSHIP_MAPPING__RESOLVED_TARGET_ENTITY = eINSTANCE.getIRelationshipMapping_ResolvedTargetEntity();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.INonOwningMapping <em>INon Owning Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.INonOwningMapping
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getINonOwningMapping()
+ * @generated
+ */
+ public static final EClass INON_OWNING_MAPPING = eINSTANCE.getINonOwningMapping();
+
+ /**
+ * The meta object literal for the '<em><b>Mapped By</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute INON_OWNING_MAPPING__MAPPED_BY = eINSTANCE.getINonOwningMapping_MappedBy();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping <em>IMulti Relationship Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIMultiRelationshipMapping()
+ * @generated
+ */
+ public static final EClass IMULTI_RELATIONSHIP_MAPPING = eINSTANCE.getIMultiRelationshipMapping();
+
+ /**
+ * The meta object literal for the '<em><b>Fetch</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IMULTI_RELATIONSHIP_MAPPING__FETCH = eINSTANCE.getIMultiRelationshipMapping_Fetch();
+
+ /**
+ * The meta object literal for the '<em><b>Join Table</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IMULTI_RELATIONSHIP_MAPPING__JOIN_TABLE = eINSTANCE.getIMultiRelationshipMapping_JoinTable();
+
+ /**
+ * The meta object literal for the '<em><b>Order By</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IMULTI_RELATIONSHIP_MAPPING__ORDER_BY = eINSTANCE.getIMultiRelationshipMapping_OrderBy();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IOneToMany <em>IOne To Many</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IOneToMany
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIOneToMany()
+ * @generated
+ */
+ public static final EClass IONE_TO_MANY = eINSTANCE.getIOneToMany();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IManyToMany <em>IMany To Many</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IManyToMany
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIManyToMany()
+ * @generated
+ */
+ public static final EClass IMANY_TO_MANY = eINSTANCE.getIManyToMany();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping <em>ISingle Relationship Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getISingleRelationshipMapping()
+ * @generated
+ */
+ public static final EClass ISINGLE_RELATIONSHIP_MAPPING = eINSTANCE.getISingleRelationshipMapping();
+
+ /**
+ * The meta object literal for the '<em><b>Fetch</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ISINGLE_RELATIONSHIP_MAPPING__FETCH = eINSTANCE.getISingleRelationshipMapping_Fetch();
+
+ /**
+ * The meta object literal for the '<em><b>Join Columns</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference ISINGLE_RELATIONSHIP_MAPPING__JOIN_COLUMNS = eINSTANCE.getISingleRelationshipMapping_JoinColumns();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Join Columns</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference ISINGLE_RELATIONSHIP_MAPPING__SPECIFIED_JOIN_COLUMNS = eINSTANCE.getISingleRelationshipMapping_SpecifiedJoinColumns();
+
+ /**
+ * The meta object literal for the '<em><b>Default Join Columns</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference ISINGLE_RELATIONSHIP_MAPPING__DEFAULT_JOIN_COLUMNS = eINSTANCE.getISingleRelationshipMapping_DefaultJoinColumns();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IManyToOne <em>IMany To One</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IManyToOne
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIManyToOne()
+ * @generated
+ */
+ public static final EClass IMANY_TO_ONE = eINSTANCE.getIManyToOne();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IOneToOne <em>IOne To One</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IOneToOne
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIOneToOne()
+ * @generated
+ */
+ public static final EClass IONE_TO_ONE = eINSTANCE.getIOneToOne();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IJoinTable <em>IJoin Table</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IJoinTable
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIJoinTable()
+ * @generated
+ */
+ public static final EClass IJOIN_TABLE = eINSTANCE.getIJoinTable();
+
+ /**
+ * The meta object literal for the '<em><b>Join Columns</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IJOIN_TABLE__JOIN_COLUMNS = eINSTANCE.getIJoinTable_JoinColumns();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Join Columns</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IJOIN_TABLE__SPECIFIED_JOIN_COLUMNS = eINSTANCE.getIJoinTable_SpecifiedJoinColumns();
+
+ /**
+ * The meta object literal for the '<em><b>Default Join Columns</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IJOIN_TABLE__DEFAULT_JOIN_COLUMNS = eINSTANCE.getIJoinTable_DefaultJoinColumns();
+
+ /**
+ * The meta object literal for the '<em><b>Inverse Join Columns</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IJOIN_TABLE__INVERSE_JOIN_COLUMNS = eINSTANCE.getIJoinTable_InverseJoinColumns();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Inverse Join Columns</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IJOIN_TABLE__SPECIFIED_INVERSE_JOIN_COLUMNS = eINSTANCE.getIJoinTable_SpecifiedInverseJoinColumns();
+
+ /**
+ * The meta object literal for the '<em><b>Default Inverse Join Columns</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IJOIN_TABLE__DEFAULT_INVERSE_JOIN_COLUMNS = eINSTANCE.getIJoinTable_DefaultInverseJoinColumns();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn <em>IAbstract Join Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIAbstractJoinColumn()
+ * @generated
+ */
+ public static final EClass IABSTRACT_JOIN_COLUMN = eINSTANCE.getIAbstractJoinColumn();
+
+ /**
+ * The meta object literal for the '<em><b>Referenced Column Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IABSTRACT_JOIN_COLUMN__REFERENCED_COLUMN_NAME = eINSTANCE.getIAbstractJoinColumn_ReferencedColumnName();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Referenced Column Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IABSTRACT_JOIN_COLUMN__SPECIFIED_REFERENCED_COLUMN_NAME = eINSTANCE.getIAbstractJoinColumn_SpecifiedReferencedColumnName();
+
+ /**
+ * The meta object literal for the '<em><b>Default Referenced Column Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IABSTRACT_JOIN_COLUMN__DEFAULT_REFERENCED_COLUMN_NAME = eINSTANCE.getIAbstractJoinColumn_DefaultReferencedColumnName();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IJoinColumn <em>IJoin Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IJoinColumn
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIJoinColumn()
+ * @generated
+ */
+ public static final EClass IJOIN_COLUMN = eINSTANCE.getIJoinColumn();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IOverride <em>IOverride</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IOverride
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIOverride()
+ * @generated
+ */
+ public static final EClass IOVERRIDE = eINSTANCE.getIOverride();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IOVERRIDE__NAME = eINSTANCE.getIOverride_Name();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride <em>IAttribute Override</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IAttributeOverride
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIAttributeOverride()
+ * @generated
+ */
+ public static final EClass IATTRIBUTE_OVERRIDE = eINSTANCE.getIAttributeOverride();
+
+ /**
+ * The meta object literal for the '<em><b>Column</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IATTRIBUTE_OVERRIDE__COLUMN = eINSTANCE.getIAttributeOverride_Column();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IAssociationOverride <em>IAssociation Override</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IAssociationOverride
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIAssociationOverride()
+ * @generated
+ */
+ public static final EClass IASSOCIATION_OVERRIDE = eINSTANCE.getIAssociationOverride();
+
+ /**
+ * The meta object literal for the '<em><b>Join Columns</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IASSOCIATION_OVERRIDE__JOIN_COLUMNS = eINSTANCE.getIAssociationOverride_JoinColumns();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Join Columns</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IASSOCIATION_OVERRIDE__SPECIFIED_JOIN_COLUMNS = eINSTANCE.getIAssociationOverride_SpecifiedJoinColumns();
+
+ /**
+ * The meta object literal for the '<em><b>Default Join Columns</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IASSOCIATION_OVERRIDE__DEFAULT_JOIN_COLUMNS = eINSTANCE.getIAssociationOverride_DefaultJoinColumns();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn <em>IDiscriminator Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIDiscriminatorColumn()
+ * @generated
+ */
+ public static final EClass IDISCRIMINATOR_COLUMN = eINSTANCE.getIDiscriminatorColumn();
+
+ /**
+ * The meta object literal for the '<em><b>Default Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IDISCRIMINATOR_COLUMN__DEFAULT_NAME = eINSTANCE.getIDiscriminatorColumn_DefaultName();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IDISCRIMINATOR_COLUMN__SPECIFIED_NAME = eINSTANCE.getIDiscriminatorColumn_SpecifiedName();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IDISCRIMINATOR_COLUMN__NAME = eINSTANCE.getIDiscriminatorColumn_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Discriminator Type</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IDISCRIMINATOR_COLUMN__DISCRIMINATOR_TYPE = eINSTANCE.getIDiscriminatorColumn_DiscriminatorType();
+
+ /**
+ * The meta object literal for the '<em><b>Column Definition</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IDISCRIMINATOR_COLUMN__COLUMN_DEFINITION = eINSTANCE.getIDiscriminatorColumn_ColumnDefinition();
+
+ /**
+ * The meta object literal for the '<em><b>Default Length</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IDISCRIMINATOR_COLUMN__DEFAULT_LENGTH = eINSTANCE.getIDiscriminatorColumn_DefaultLength();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Length</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IDISCRIMINATOR_COLUMN__SPECIFIED_LENGTH = eINSTANCE.getIDiscriminatorColumn_SpecifiedLength();
+
+ /**
+ * The meta object literal for the '<em><b>Length</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IDISCRIMINATOR_COLUMN__LENGTH = eINSTANCE.getIDiscriminatorColumn_Length();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.ISecondaryTable <em>ISecondary Table</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.ISecondaryTable
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getISecondaryTable()
+ * @generated
+ */
+ public static final EClass ISECONDARY_TABLE = eINSTANCE.getISecondaryTable();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn <em>IPrimary Key Join Column</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIPrimaryKeyJoinColumn()
+ * @generated
+ */
+ public static final EClass IPRIMARY_KEY_JOIN_COLUMN = eINSTANCE.getIPrimaryKeyJoinColumn();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IGenerator <em>IGenerator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IGenerator
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIGenerator()
+ * @generated
+ */
+ public static final EClass IGENERATOR = eINSTANCE.getIGenerator();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IGENERATOR__NAME = eINSTANCE.getIGenerator_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Initial Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IGENERATOR__INITIAL_VALUE = eINSTANCE.getIGenerator_InitialValue();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Initial Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IGENERATOR__SPECIFIED_INITIAL_VALUE = eINSTANCE.getIGenerator_SpecifiedInitialValue();
+
+ /**
+ * The meta object literal for the '<em><b>Default Initial Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IGENERATOR__DEFAULT_INITIAL_VALUE = eINSTANCE.getIGenerator_DefaultInitialValue();
+
+ /**
+ * The meta object literal for the '<em><b>Allocation Size</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IGENERATOR__ALLOCATION_SIZE = eINSTANCE.getIGenerator_AllocationSize();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Allocation Size</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IGENERATOR__SPECIFIED_ALLOCATION_SIZE = eINSTANCE.getIGenerator_SpecifiedAllocationSize();
+
+ /**
+ * The meta object literal for the '<em><b>Default Allocation Size</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IGENERATOR__DEFAULT_ALLOCATION_SIZE = eINSTANCE.getIGenerator_DefaultAllocationSize();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator <em>ITable Generator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.ITableGenerator
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getITableGenerator()
+ * @generated
+ */
+ public static final EClass ITABLE_GENERATOR = eINSTANCE.getITableGenerator();
+
+ /**
+ * The meta object literal for the '<em><b>Table</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ITABLE_GENERATOR__TABLE = eINSTANCE.getITableGenerator_Table();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Table</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ITABLE_GENERATOR__SPECIFIED_TABLE = eINSTANCE.getITableGenerator_SpecifiedTable();
+
+ /**
+ * The meta object literal for the '<em><b>Default Table</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ITABLE_GENERATOR__DEFAULT_TABLE = eINSTANCE.getITableGenerator_DefaultTable();
+
+ /**
+ * The meta object literal for the '<em><b>Catalog</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ITABLE_GENERATOR__CATALOG = eINSTANCE.getITableGenerator_Catalog();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Catalog</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ITABLE_GENERATOR__SPECIFIED_CATALOG = eINSTANCE.getITableGenerator_SpecifiedCatalog();
+
+ /**
+ * The meta object literal for the '<em><b>Default Catalog</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ITABLE_GENERATOR__DEFAULT_CATALOG = eINSTANCE.getITableGenerator_DefaultCatalog();
+
+ /**
+ * The meta object literal for the '<em><b>Schema</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ITABLE_GENERATOR__SCHEMA = eINSTANCE.getITableGenerator_Schema();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Schema</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ITABLE_GENERATOR__SPECIFIED_SCHEMA = eINSTANCE.getITableGenerator_SpecifiedSchema();
+
+ /**
+ * The meta object literal for the '<em><b>Default Schema</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ITABLE_GENERATOR__DEFAULT_SCHEMA = eINSTANCE.getITableGenerator_DefaultSchema();
+
+ /**
+ * The meta object literal for the '<em><b>Pk Column Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ITABLE_GENERATOR__PK_COLUMN_NAME = eINSTANCE.getITableGenerator_PkColumnName();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Pk Column Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ITABLE_GENERATOR__SPECIFIED_PK_COLUMN_NAME = eINSTANCE.getITableGenerator_SpecifiedPkColumnName();
+
+ /**
+ * The meta object literal for the '<em><b>Default Pk Column Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ITABLE_GENERATOR__DEFAULT_PK_COLUMN_NAME = eINSTANCE.getITableGenerator_DefaultPkColumnName();
+
+ /**
+ * The meta object literal for the '<em><b>Value Column Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ITABLE_GENERATOR__VALUE_COLUMN_NAME = eINSTANCE.getITableGenerator_ValueColumnName();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Value Column Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ITABLE_GENERATOR__SPECIFIED_VALUE_COLUMN_NAME = eINSTANCE.getITableGenerator_SpecifiedValueColumnName();
+
+ /**
+ * The meta object literal for the '<em><b>Default Value Column Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ITABLE_GENERATOR__DEFAULT_VALUE_COLUMN_NAME = eINSTANCE.getITableGenerator_DefaultValueColumnName();
+
+ /**
+ * The meta object literal for the '<em><b>Pk Column Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ITABLE_GENERATOR__PK_COLUMN_VALUE = eINSTANCE.getITableGenerator_PkColumnValue();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Pk Column Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ITABLE_GENERATOR__SPECIFIED_PK_COLUMN_VALUE = eINSTANCE.getITableGenerator_SpecifiedPkColumnValue();
+
+ /**
+ * The meta object literal for the '<em><b>Default Pk Column Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ITABLE_GENERATOR__DEFAULT_PK_COLUMN_VALUE = eINSTANCE.getITableGenerator_DefaultPkColumnValue();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.ISequenceGenerator <em>ISequence Generator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.ISequenceGenerator
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getISequenceGenerator()
+ * @generated
+ */
+ public static final EClass ISEQUENCE_GENERATOR = eINSTANCE.getISequenceGenerator();
+
+ /**
+ * The meta object literal for the '<em><b>Sequence Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ISEQUENCE_GENERATOR__SEQUENCE_NAME = eINSTANCE.getISequenceGenerator_SequenceName();
+
+ /**
+ * The meta object literal for the '<em><b>Specified Sequence Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ISEQUENCE_GENERATOR__SPECIFIED_SEQUENCE_NAME = eINSTANCE.getISequenceGenerator_SpecifiedSequenceName();
+
+ /**
+ * The meta object literal for the '<em><b>Default Sequence Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute ISEQUENCE_GENERATOR__DEFAULT_SEQUENCE_NAME = eINSTANCE.getISequenceGenerator_DefaultSequenceName();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IGeneratedValue <em>IGenerated Value</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IGeneratedValue
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIGeneratedValue()
+ * @generated
+ */
+ public static final EClass IGENERATED_VALUE = eINSTANCE.getIGeneratedValue();
+
+ /**
+ * The meta object literal for the '<em><b>Strategy</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IGENERATED_VALUE__STRATEGY = eINSTANCE.getIGeneratedValue_Strategy();
+
+ /**
+ * The meta object literal for the '<em><b>Generator</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IGENERATED_VALUE__GENERATOR = eINSTANCE.getIGeneratedValue_Generator();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IOrderBy <em>IOrder By</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IOrderBy
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIOrderBy()
+ * @generated
+ */
+ public static final EClass IORDER_BY = eINSTANCE.getIOrderBy();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IORDER_BY__VALUE = eINSTANCE.getIOrderBy_Value();
+
+ /**
+ * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IORDER_BY__TYPE = eINSTANCE.getIOrderBy_Type();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IQuery <em>IQuery</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IQuery
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIQuery()
+ * @generated
+ */
+ public static final EClass IQUERY = eINSTANCE.getIQuery();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IQUERY__NAME = eINSTANCE.getIQuery_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Query</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IQUERY__QUERY = eINSTANCE.getIQuery_Query();
+
+ /**
+ * The meta object literal for the '<em><b>Hints</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EReference IQUERY__HINTS = eINSTANCE.getIQuery_Hints();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.INamedQuery <em>INamed Query</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.INamedQuery
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getINamedQuery()
+ * @generated
+ */
+ public static final EClass INAMED_QUERY = eINSTANCE.getINamedQuery();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.INamedNativeQuery <em>INamed Native Query</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.INamedNativeQuery
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getINamedNativeQuery()
+ * @generated
+ */
+ public static final EClass INAMED_NATIVE_QUERY = eINSTANCE.getINamedNativeQuery();
+
+ /**
+ * The meta object literal for the '<em><b>Result Class</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute INAMED_NATIVE_QUERY__RESULT_CLASS = eINSTANCE.getINamedNativeQuery_ResultClass();
+
+ /**
+ * The meta object literal for the '<em><b>Result Set Mapping</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute INAMED_NATIVE_QUERY__RESULT_SET_MAPPING = eINSTANCE.getINamedNativeQuery_ResultSetMapping();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.IQueryHint <em>IQuery Hint</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.IQueryHint
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getIQueryHint()
+ * @generated
+ */
+ public static final EClass IQUERY_HINT = eINSTANCE.getIQueryHint();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IQUERY_HINT__NAME = eINSTANCE.getIQueryHint_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final EAttribute IQUERY_HINT__VALUE = eINSTANCE.getIQueryHint_Value();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType <em>Default Eager Fetch Type</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultEagerFetchType
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getDefaultEagerFetchType()
+ * @generated
+ */
+ public static final EEnum DEFAULT_EAGER_FETCH_TYPE = eINSTANCE.getDefaultEagerFetchType();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.DefaultLazyFetchType <em>Default Lazy Fetch Type</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultLazyFetchType
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getDefaultLazyFetchType()
+ * @generated
+ */
+ public static final EEnum DEFAULT_LAZY_FETCH_TYPE = eINSTANCE.getDefaultLazyFetchType();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean <em>Default False Boolean</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultFalseBoolean
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getDefaultFalseBoolean()
+ * @generated
+ */
+ public static final EEnum DEFAULT_FALSE_BOOLEAN = eINSTANCE.getDefaultFalseBoolean();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean <em>Default True Boolean</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getDefaultTrueBoolean()
+ * @generated
+ */
+ public static final EEnum DEFAULT_TRUE_BOOLEAN = eINSTANCE.getDefaultTrueBoolean();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.TemporalType <em>Temporal Type</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.TemporalType
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getTemporalType()
+ * @generated
+ */
+ public static final EEnum TEMPORAL_TYPE = eINSTANCE.getTemporalType();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.InheritanceType <em>Inheritance Type</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.InheritanceType
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getInheritanceType()
+ * @generated
+ */
+ public static final EEnum INHERITANCE_TYPE = eINSTANCE.getInheritanceType();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.DiscriminatorType <em>Discriminator Type</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.DiscriminatorType
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getDiscriminatorType()
+ * @generated
+ */
+ public static final EEnum DISCRIMINATOR_TYPE = eINSTANCE.getDiscriminatorType();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.GenerationType <em>Generation Type</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.GenerationType
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getGenerationType()
+ * @generated
+ */
+ public static final EEnum GENERATION_TYPE = eINSTANCE.getGenerationType();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.EnumType <em>Enum Type</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.EnumType
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getEnumType()
+ * @generated
+ */
+ public static final EEnum ENUM_TYPE = eINSTANCE.getEnumType();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.jpt.core.internal.mappings.OrderingType <em>Ordering Type</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.OrderingType
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getOrderingType()
+ * @generated
+ */
+ public static final EEnum ORDERING_TYPE = eINSTANCE.getOrderingType();
+ }
+} //JpaCoreMappingsPackage
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/OrderingType.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/OrderingType.java
new file mode 100644
index 0000000000..1eb81e3f64
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/OrderingType.java
@@ -0,0 +1,240 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import static org.eclipse.jpt.core.internal.mappings.OrderingType.CUSTOM_VALUE;
+import static org.eclipse.jpt.core.internal.mappings.OrderingType.NONE_VALUE;
+import static org.eclipse.jpt.core.internal.mappings.OrderingType.PRIMARY_KEY_VALUE;
+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>Ordering Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getOrderingType()
+ * @model
+ * @generated
+ */
+public enum OrderingType implements Enumerator {
+ /**
+ * The '<em><b>NONE</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #NONE_VALUE
+ * @generated
+ * @ordered
+ */
+ NONE(0, "NONE", "None"),
+ /**
+ * The '<em><b>PRIMARY KEY</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #PRIMARY_KEY_VALUE
+ * @generated
+ * @ordered
+ */
+ PRIMARY_KEY(1, "PRIMARY_KEY", "Primary Key"),
+ /**
+ * The '<em><b>CUSTOM</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #CUSTOM_VALUE
+ * @generated
+ * @ordered
+ */
+ CUSTOM(2, "CUSTOM", "Custom");
+ /**
+ * The '<em><b>NONE</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>NONE</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #NONE
+ * @model literal="None"
+ * @generated
+ * @ordered
+ */
+ public static final int NONE_VALUE = 0;
+
+ /**
+ * The '<em><b>PRIMARY KEY</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>PRIMARY KEY</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #PRIMARY_KEY
+ * @model literal="Primary Key"
+ * @generated
+ * @ordered
+ */
+ public static final int PRIMARY_KEY_VALUE = 1;
+
+ /**
+ * The '<em><b>CUSTOM</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>CUSTOM</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #CUSTOM
+ * @model literal="Custom"
+ * @generated
+ * @ordered
+ */
+ public static final int CUSTOM_VALUE = 2;
+
+ /**
+ * An array of all the '<em><b>Ordering Type</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final OrderingType[] VALUES_ARRAY = new OrderingType[] {
+ NONE, PRIMARY_KEY, CUSTOM,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Ordering Type</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<OrderingType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Ordering Type</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static OrderingType get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ OrderingType result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Ordering Type</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static OrderingType getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ OrderingType result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Ordering Type</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static OrderingType get(int value) {
+ switch (value) {
+ case NONE_VALUE :
+ return NONE;
+ case PRIMARY_KEY_VALUE :
+ return PRIMARY_KEY;
+ case CUSTOM_VALUE :
+ return CUSTOM;
+ }
+ 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 OrderingType(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;
+ }
+} //OrderingType
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/RelationshipMappingTools.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/RelationshipMappingTools.java
new file mode 100644
index 0000000000..2587ef08eb
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/RelationshipMappingTools.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import java.util.StringTokenizer;
+
+public class RelationshipMappingTools
+{
+ public static boolean targetEntityIsValid(String targetEntity) {
+ if (targetEntity == null) {
+ return true;
+ }
+ // balance is # of name tokens - # of period tokens seen so far
+ // initially 0; finally 1; should never drop < 0 or > 1
+ int balance = 0;
+ for (StringTokenizer t = new StringTokenizer(targetEntity, ".", true); t.hasMoreTokens();) {
+ String s = t.nextToken();
+ if (s.indexOf('.') >= 0) {
+ // this is a delimiter
+ if (s.length() > 1) {
+ // too many periods in a row
+ return false;
+ }
+ balance--;
+ if (balance < 0) {
+ return false;
+ }
+ } else {
+ // this is an identifier segment
+ balance++;
+ }
+ }
+ return (balance == 1);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/TemporalType.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/TemporalType.java
new file mode 100644
index 0000000000..469fd041fa
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/TemporalType.java
@@ -0,0 +1,296 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings;
+
+import static org.eclipse.jpt.core.internal.mappings.TemporalType.DATE_VALUE;
+import static org.eclipse.jpt.core.internal.mappings.TemporalType.NULL_VALUE;
+import static org.eclipse.jpt.core.internal.mappings.TemporalType.TIMESTAMP_VALUE;
+import static org.eclipse.jpt.core.internal.mappings.TemporalType.TIME_VALUE;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import org.eclipse.emf.common.util.Enumerator;
+import org.eclipse.jpt.core.internal.content.java.mappings.JPA;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Temporal Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage#getTemporalType()
+ * @model
+ * @generated
+ */
+public enum TemporalType implements Enumerator {
+ /**
+ * The '<em><b>Null</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #NULL_VALUE
+ * @generated
+ * @ordered
+ */
+ NULL(0, "Null", ""), /**
+ * The '<em><b>DATE</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #DATE_VALUE
+ * @generated
+ * @ordered
+ */
+ DATE(1, "DATE", "Date"), /**
+ * The '<em><b>TIME</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #TIME_VALUE
+ * @generated
+ * @ordered
+ */
+ TIME(2, "TIME", "Time"), /**
+ * The '<em><b>TIMESTAMP</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #TIMESTAMP_VALUE
+ * @generated
+ * @ordered
+ */
+ TIMESTAMP(3, "TIMESTAMP", "Timestamp");
+ /**
+ * The '<em><b>Null</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Null</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #NULL
+ * @model name="Null" literal=""
+ * @generated
+ * @ordered
+ */
+ public static final int NULL_VALUE = 0;
+
+ /**
+ * The '<em><b>DATE</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>DATE</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #DATE
+ * @model literal="Date"
+ * @generated
+ * @ordered
+ */
+ public static final int DATE_VALUE = 1;
+
+ /**
+ * The '<em><b>TIME</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>TIME</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #TIME
+ * @model literal="Time"
+ * @generated
+ * @ordered
+ */
+ public static final int TIME_VALUE = 2;
+
+ /**
+ * The '<em><b>TIMESTAMP</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>TIMESTAMP</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #TIMESTAMP
+ * @model literal="Timestamp"
+ * @generated
+ * @ordered
+ */
+ public static final int TIMESTAMP_VALUE = 3;
+
+ /**
+ * An array of all the '<em><b>Temporal Type</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final TemporalType[] VALUES_ARRAY = new TemporalType[] {
+ NULL, DATE, TIME, TIMESTAMP,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Temporal Type</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<TemporalType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Temporal Type</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static TemporalType get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ TemporalType result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Temporal Type</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static TemporalType getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ TemporalType result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Temporal Type</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static TemporalType get(int value) {
+ switch (value) {
+ case NULL_VALUE :
+ return NULL;
+ case DATE_VALUE :
+ return DATE;
+ case TIME_VALUE :
+ return TIME;
+ case TIMESTAMP_VALUE :
+ return TIMESTAMP;
+ }
+ 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 TemporalType(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;
+ }
+
+ public static TemporalType fromJavaAnnotationValue(Object javaAnnotationValue) {
+ if (javaAnnotationValue == null) {
+ return NULL;
+ }
+ if (javaAnnotationValue.equals(JPA.TEMPORAL_TYPE__DATE)) {
+ return DATE;
+ }
+ if (javaAnnotationValue.equals(JPA.TEMPORAL_TYPE__TIME)) {
+ return TIME;
+ }
+ if (javaAnnotationValue.equals(JPA.TEMPORAL_TYPE__TIMESTAMP)) {
+ return TIMESTAMP;
+ }
+ return NULL;
+ }
+
+ public String convertToJavaAnnotationValue() {
+ switch (this.getValue()) {
+ case NULL_VALUE :
+ return null;
+ case DATE_VALUE :
+ return JPA.TEMPORAL_TYPE__DATE;
+ case TIME_VALUE :
+ return JPA.TEMPORAL_TYPE__TIME;
+ case TIMESTAMP_VALUE :
+ return JPA.TEMPORAL_TYPE__TIMESTAMP;
+ default :
+ throw new IllegalArgumentException("unknown temporal type: " + this);
+ }
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/util/JpaCoreMappingsAdapterFactory.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/util/JpaCoreMappingsAdapterFactory.java
new file mode 100644
index 0000000000..da9bb6c793
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/util/JpaCoreMappingsAdapterFactory.java
@@ -0,0 +1,984 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings.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.jpt.core.internal.IAttributeMapping;
+import org.eclipse.jpt.core.internal.IJpaEObject;
+import org.eclipse.jpt.core.internal.IJpaSourceObject;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.mappings.IAbstractColumn;
+import org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.IAssociationOverride;
+import org.eclipse.jpt.core.internal.mappings.IAttributeOverride;
+import org.eclipse.jpt.core.internal.mappings.IBasic;
+import org.eclipse.jpt.core.internal.mappings.IColumn;
+import org.eclipse.jpt.core.internal.mappings.IColumnMapping;
+import org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn;
+import org.eclipse.jpt.core.internal.mappings.IEmbeddable;
+import org.eclipse.jpt.core.internal.mappings.IEmbedded;
+import org.eclipse.jpt.core.internal.mappings.IEmbeddedId;
+import org.eclipse.jpt.core.internal.mappings.IEntity;
+import org.eclipse.jpt.core.internal.mappings.IGeneratedValue;
+import org.eclipse.jpt.core.internal.mappings.IGenerator;
+import org.eclipse.jpt.core.internal.mappings.IId;
+import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.IJoinTable;
+import org.eclipse.jpt.core.internal.mappings.IManyToMany;
+import org.eclipse.jpt.core.internal.mappings.IManyToOne;
+import org.eclipse.jpt.core.internal.mappings.IMappedSuperclass;
+import org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.INamedColumn;
+import org.eclipse.jpt.core.internal.mappings.INamedNativeQuery;
+import org.eclipse.jpt.core.internal.mappings.INamedQuery;
+import org.eclipse.jpt.core.internal.mappings.INonOwningMapping;
+import org.eclipse.jpt.core.internal.mappings.IOneToMany;
+import org.eclipse.jpt.core.internal.mappings.IOneToOne;
+import org.eclipse.jpt.core.internal.mappings.IOrderBy;
+import org.eclipse.jpt.core.internal.mappings.IOverride;
+import org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.IQuery;
+import org.eclipse.jpt.core.internal.mappings.IQueryHint;
+import org.eclipse.jpt.core.internal.mappings.IRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.ISecondaryTable;
+import org.eclipse.jpt.core.internal.mappings.ISequenceGenerator;
+import org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.ITable;
+import org.eclipse.jpt.core.internal.mappings.ITableGenerator;
+import org.eclipse.jpt.core.internal.mappings.ITransient;
+import org.eclipse.jpt.core.internal.mappings.IVersion;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+
+/**
+ * <!-- 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.jpt.core.internal.mappings.JpaCoreMappingsPackage
+ * @generated
+ */
+public class JpaCoreMappingsAdapterFactory extends AdapterFactoryImpl
+{
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static JpaCoreMappingsPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JpaCoreMappingsAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = JpaCoreMappingsPackage.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 JpaCoreMappingsSwitch<Adapter> modelSwitch = new JpaCoreMappingsSwitch<Adapter>() {
+ @Override
+ public Adapter caseIMappedSuperclass(IMappedSuperclass object) {
+ return createIMappedSuperclassAdapter();
+ }
+
+ @Override
+ public Adapter caseIEntity(IEntity object) {
+ return createIEntityAdapter();
+ }
+
+ @Override
+ public Adapter caseIEmbeddable(IEmbeddable object) {
+ return createIEmbeddableAdapter();
+ }
+
+ @Override
+ public Adapter caseITable(ITable object) {
+ return createITableAdapter();
+ }
+
+ @Override
+ public Adapter caseINamedColumn(INamedColumn object) {
+ return createINamedColumnAdapter();
+ }
+
+ @Override
+ public Adapter caseIAbstractColumn(IAbstractColumn object) {
+ return createIAbstractColumnAdapter();
+ }
+
+ @Override
+ public Adapter caseIColumn(IColumn object) {
+ return createIColumnAdapter();
+ }
+
+ @Override
+ public Adapter caseIColumnMapping(IColumnMapping object) {
+ return createIColumnMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseIBasic(IBasic object) {
+ return createIBasicAdapter();
+ }
+
+ @Override
+ public Adapter caseIId(IId object) {
+ return createIIdAdapter();
+ }
+
+ @Override
+ public Adapter caseITransient(ITransient object) {
+ return createITransientAdapter();
+ }
+
+ @Override
+ public Adapter caseIVersion(IVersion object) {
+ return createIVersionAdapter();
+ }
+
+ @Override
+ public Adapter caseIEmbeddedId(IEmbeddedId object) {
+ return createIEmbeddedIdAdapter();
+ }
+
+ @Override
+ public Adapter caseIEmbedded(IEmbedded object) {
+ return createIEmbeddedAdapter();
+ }
+
+ @Override
+ public Adapter caseIRelationshipMapping(IRelationshipMapping object) {
+ return createIRelationshipMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseINonOwningMapping(INonOwningMapping object) {
+ return createINonOwningMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseIMultiRelationshipMapping(IMultiRelationshipMapping object) {
+ return createIMultiRelationshipMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseIOneToMany(IOneToMany object) {
+ return createIOneToManyAdapter();
+ }
+
+ @Override
+ public Adapter caseIManyToMany(IManyToMany object) {
+ return createIManyToManyAdapter();
+ }
+
+ @Override
+ public Adapter caseISingleRelationshipMapping(ISingleRelationshipMapping object) {
+ return createISingleRelationshipMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseIManyToOne(IManyToOne object) {
+ return createIManyToOneAdapter();
+ }
+
+ @Override
+ public Adapter caseIOneToOne(IOneToOne object) {
+ return createIOneToOneAdapter();
+ }
+
+ @Override
+ public Adapter caseIJoinTable(IJoinTable object) {
+ return createIJoinTableAdapter();
+ }
+
+ @Override
+ public Adapter caseIAbstractJoinColumn(IAbstractJoinColumn object) {
+ return createIAbstractJoinColumnAdapter();
+ }
+
+ @Override
+ public Adapter caseIJoinColumn(IJoinColumn object) {
+ return createIJoinColumnAdapter();
+ }
+
+ @Override
+ public Adapter caseIOverride(IOverride object) {
+ return createIOverrideAdapter();
+ }
+
+ @Override
+ public Adapter caseIAttributeOverride(IAttributeOverride object) {
+ return createIAttributeOverrideAdapter();
+ }
+
+ @Override
+ public Adapter caseIAssociationOverride(IAssociationOverride object) {
+ return createIAssociationOverrideAdapter();
+ }
+
+ @Override
+ public Adapter caseIDiscriminatorColumn(IDiscriminatorColumn object) {
+ return createIDiscriminatorColumnAdapter();
+ }
+
+ @Override
+ public Adapter caseISecondaryTable(ISecondaryTable object) {
+ return createISecondaryTableAdapter();
+ }
+
+ @Override
+ public Adapter caseIPrimaryKeyJoinColumn(IPrimaryKeyJoinColumn object) {
+ return createIPrimaryKeyJoinColumnAdapter();
+ }
+
+ @Override
+ public Adapter caseIGenerator(IGenerator object) {
+ return createIGeneratorAdapter();
+ }
+
+ @Override
+ public Adapter caseITableGenerator(ITableGenerator object) {
+ return createITableGeneratorAdapter();
+ }
+
+ @Override
+ public Adapter caseISequenceGenerator(ISequenceGenerator object) {
+ return createISequenceGeneratorAdapter();
+ }
+
+ @Override
+ public Adapter caseIGeneratedValue(IGeneratedValue object) {
+ return createIGeneratedValueAdapter();
+ }
+
+ @Override
+ public Adapter caseIOrderBy(IOrderBy object) {
+ return createIOrderByAdapter();
+ }
+
+ @Override
+ public Adapter caseIQuery(IQuery object) {
+ return createIQueryAdapter();
+ }
+
+ @Override
+ public Adapter caseINamedQuery(INamedQuery object) {
+ return createINamedQueryAdapter();
+ }
+
+ @Override
+ public Adapter caseINamedNativeQuery(INamedNativeQuery object) {
+ return createINamedNativeQueryAdapter();
+ }
+
+ @Override
+ public Adapter caseIQueryHint(IQueryHint object) {
+ return createIQueryHintAdapter();
+ }
+
+ @Override
+ public Adapter caseIJpaEObject(IJpaEObject object) {
+ return createIJpaEObjectAdapter();
+ }
+
+ @Override
+ public Adapter caseIJpaSourceObject(IJpaSourceObject object) {
+ return createIJpaSourceObjectAdapter();
+ }
+
+ @Override
+ public Adapter caseITypeMapping(ITypeMapping object) {
+ return createITypeMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseIAttributeMapping(IAttributeMapping object) {
+ return createIAttributeMappingAdapter();
+ }
+
+ @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.jpt.core.internal.mappings.IMappedSuperclass <em>IMapped Superclass</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.jpt.core.internal.mappings.IMappedSuperclass
+ * @generated
+ */
+ public Adapter createIMappedSuperclassAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IEntity <em>IEntity</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.jpt.core.internal.mappings.IEntity
+ * @generated
+ */
+ public Adapter createIEntityAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.ITable <em>ITable</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.jpt.core.internal.mappings.ITable
+ * @generated
+ */
+ public Adapter createITableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.INamedColumn <em>INamed Column</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.jpt.core.internal.mappings.INamedColumn
+ * @generated
+ */
+ public Adapter createINamedColumnAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IAbstractColumn <em>IAbstract Column</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.jpt.core.internal.mappings.IAbstractColumn
+ * @generated
+ */
+ public Adapter createIAbstractColumnAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IColumn <em>IColumn</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.jpt.core.internal.mappings.IColumn
+ * @generated
+ */
+ public Adapter createIColumnAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IColumnMapping <em>IColumn Mapping</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.jpt.core.internal.mappings.IColumnMapping
+ * @generated
+ */
+ public Adapter createIColumnMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IEmbeddable <em>IEmbeddable</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.jpt.core.internal.mappings.IEmbeddable
+ * @generated
+ */
+ public Adapter createIEmbeddableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IBasic <em>IBasic</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.jpt.core.internal.mappings.IBasic
+ * @generated
+ */
+ public Adapter createIBasicAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IId <em>IId</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.jpt.core.internal.mappings.IId
+ * @generated
+ */
+ public Adapter createIIdAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.ITransient <em>ITransient</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.jpt.core.internal.mappings.ITransient
+ * @generated
+ */
+ public Adapter createITransientAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IVersion <em>IVersion</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.jpt.core.internal.mappings.IVersion
+ * @generated
+ */
+ public Adapter createIVersionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IEmbeddedId <em>IEmbedded Id</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.jpt.core.internal.mappings.IEmbeddedId
+ * @generated
+ */
+ public Adapter createIEmbeddedIdAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IEmbedded <em>IEmbedded</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.jpt.core.internal.mappings.IEmbedded
+ * @generated
+ */
+ public Adapter createIEmbeddedAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IRelationshipMapping <em>IRelationship Mapping</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.jpt.core.internal.mappings.IRelationshipMapping
+ * @generated
+ */
+ public Adapter createIRelationshipMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.INonOwningMapping <em>INon Owning Mapping</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.jpt.core.internal.mappings.INonOwningMapping
+ * @generated
+ */
+ public Adapter createINonOwningMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping <em>IMulti Relationship Mapping</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.jpt.core.internal.mappings.IMultiRelationshipMapping
+ * @generated
+ */
+ public Adapter createIMultiRelationshipMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IOneToMany <em>IOne To Many</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.jpt.core.internal.mappings.IOneToMany
+ * @generated
+ */
+ public Adapter createIOneToManyAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IManyToMany <em>IMany To Many</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.jpt.core.internal.mappings.IManyToMany
+ * @generated
+ */
+ public Adapter createIManyToManyAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping <em>ISingle Relationship Mapping</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.jpt.core.internal.mappings.ISingleRelationshipMapping
+ * @generated
+ */
+ public Adapter createISingleRelationshipMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IManyToOne <em>IMany To One</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.jpt.core.internal.mappings.IManyToOne
+ * @generated
+ */
+ public Adapter createIManyToOneAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IOneToOne <em>IOne To One</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.jpt.core.internal.mappings.IOneToOne
+ * @generated
+ */
+ public Adapter createIOneToOneAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IJoinTable <em>IJoin Table</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.jpt.core.internal.mappings.IJoinTable
+ * @generated
+ */
+ public Adapter createIJoinTableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn <em>IAbstract Join Column</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.jpt.core.internal.mappings.IAbstractJoinColumn
+ * @generated
+ */
+ public Adapter createIAbstractJoinColumnAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IJoinColumn <em>IJoin Column</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.jpt.core.internal.mappings.IJoinColumn
+ * @generated
+ */
+ public Adapter createIJoinColumnAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IOverride <em>IOverride</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.jpt.core.internal.mappings.IOverride
+ * @generated
+ */
+ public Adapter createIOverrideAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IAttributeOverride <em>IAttribute Override</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.jpt.core.internal.mappings.IAttributeOverride
+ * @generated
+ */
+ public Adapter createIAttributeOverrideAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IAssociationOverride <em>IAssociation Override</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.jpt.core.internal.mappings.IAssociationOverride
+ * @generated
+ */
+ public Adapter createIAssociationOverrideAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn <em>IDiscriminator Column</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.jpt.core.internal.mappings.IDiscriminatorColumn
+ * @generated
+ */
+ public Adapter createIDiscriminatorColumnAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.ISecondaryTable <em>ISecondary Table</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.jpt.core.internal.mappings.ISecondaryTable
+ * @generated
+ */
+ public Adapter createISecondaryTableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn <em>IPrimary Key Join Column</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.jpt.core.internal.mappings.IPrimaryKeyJoinColumn
+ * @generated
+ */
+ public Adapter createIPrimaryKeyJoinColumnAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IGenerator <em>IGenerator</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.jpt.core.internal.mappings.IGenerator
+ * @generated
+ */
+ public Adapter createIGeneratorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.ITableGenerator <em>ITable Generator</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.jpt.core.internal.mappings.ITableGenerator
+ * @generated
+ */
+ public Adapter createITableGeneratorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.ISequenceGenerator <em>ISequence Generator</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.jpt.core.internal.mappings.ISequenceGenerator
+ * @generated
+ */
+ public Adapter createISequenceGeneratorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IGeneratedValue <em>IGenerated 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.jpt.core.internal.mappings.IGeneratedValue
+ * @generated
+ */
+ public Adapter createIGeneratedValueAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IOrderBy <em>IOrder By</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.jpt.core.internal.mappings.IOrderBy
+ * @generated
+ */
+ public Adapter createIOrderByAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IQuery <em>IQuery</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.jpt.core.internal.mappings.IQuery
+ * @generated
+ */
+ public Adapter createIQueryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.INamedQuery <em>INamed Query</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.jpt.core.internal.mappings.INamedQuery
+ * @generated
+ */
+ public Adapter createINamedQueryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.INamedNativeQuery <em>INamed Native Query</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.jpt.core.internal.mappings.INamedNativeQuery
+ * @generated
+ */
+ public Adapter createINamedNativeQueryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.mappings.IQueryHint <em>IQuery Hint</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.jpt.core.internal.mappings.IQueryHint
+ * @generated
+ */
+ public Adapter createIQueryHintAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IJpaEObject <em>IJpa EObject</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.jpt.core.internal.IJpaEObject
+ * @generated
+ */
+ public Adapter createIJpaEObjectAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IJpaSourceObject <em>IJpa Source Object</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.jpt.core.internal.IJpaSourceObject
+ * @generated
+ */
+ public Adapter createIJpaSourceObjectAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.ITypeMapping <em>IType Mapping</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.jpt.core.internal.ITypeMapping
+ * @generated
+ */
+ public Adapter createITypeMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IAttributeMapping <em>IAttribute Mapping</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.jpt.core.internal.IAttributeMapping
+ * @generated
+ */
+ public Adapter createIAttributeMappingAdapter() {
+ 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;
+ }
+} //JpaCoreMappingsAdapterFactory
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/util/JpaCoreMappingsSwitch.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/util/JpaCoreMappingsSwitch.java
new file mode 100644
index 0000000000..74c694591a
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/mappings/util/JpaCoreMappingsSwitch.java
@@ -0,0 +1,1354 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.mappings.util;
+
+import java.util.List;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.IAttributeMapping;
+import org.eclipse.jpt.core.internal.IJpaEObject;
+import org.eclipse.jpt.core.internal.IJpaSourceObject;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.mappings.IAbstractColumn;
+import org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.IAssociationOverride;
+import org.eclipse.jpt.core.internal.mappings.IAttributeOverride;
+import org.eclipse.jpt.core.internal.mappings.IBasic;
+import org.eclipse.jpt.core.internal.mappings.IColumn;
+import org.eclipse.jpt.core.internal.mappings.IColumnMapping;
+import org.eclipse.jpt.core.internal.mappings.IDiscriminatorColumn;
+import org.eclipse.jpt.core.internal.mappings.IEmbeddable;
+import org.eclipse.jpt.core.internal.mappings.IEmbedded;
+import org.eclipse.jpt.core.internal.mappings.IEmbeddedId;
+import org.eclipse.jpt.core.internal.mappings.IEntity;
+import org.eclipse.jpt.core.internal.mappings.IGeneratedValue;
+import org.eclipse.jpt.core.internal.mappings.IGenerator;
+import org.eclipse.jpt.core.internal.mappings.IId;
+import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.IJoinTable;
+import org.eclipse.jpt.core.internal.mappings.IManyToMany;
+import org.eclipse.jpt.core.internal.mappings.IManyToOne;
+import org.eclipse.jpt.core.internal.mappings.IMappedSuperclass;
+import org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.INamedColumn;
+import org.eclipse.jpt.core.internal.mappings.INamedNativeQuery;
+import org.eclipse.jpt.core.internal.mappings.INamedQuery;
+import org.eclipse.jpt.core.internal.mappings.INonOwningMapping;
+import org.eclipse.jpt.core.internal.mappings.IOneToMany;
+import org.eclipse.jpt.core.internal.mappings.IOneToOne;
+import org.eclipse.jpt.core.internal.mappings.IOrderBy;
+import org.eclipse.jpt.core.internal.mappings.IOverride;
+import org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.IQuery;
+import org.eclipse.jpt.core.internal.mappings.IQueryHint;
+import org.eclipse.jpt.core.internal.mappings.IRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.ISecondaryTable;
+import org.eclipse.jpt.core.internal.mappings.ISequenceGenerator;
+import org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.ITable;
+import org.eclipse.jpt.core.internal.mappings.ITableGenerator;
+import org.eclipse.jpt.core.internal.mappings.ITransient;
+import org.eclipse.jpt.core.internal.mappings.IVersion;
+import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage;
+
+/**
+ * <!-- 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.jpt.core.internal.mappings.JpaCoreMappingsPackage
+ * @generated
+ */
+public class JpaCoreMappingsSwitch<T>
+{
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static JpaCoreMappingsPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JpaCoreMappingsSwitch() {
+ if (modelPackage == null) {
+ modelPackage = JpaCoreMappingsPackage.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 T 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 T 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 T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case JpaCoreMappingsPackage.IMAPPED_SUPERCLASS : {
+ IMappedSuperclass iMappedSuperclass = (IMappedSuperclass) theEObject;
+ T result = caseIMappedSuperclass(iMappedSuperclass);
+ if (result == null)
+ result = caseITypeMapping(iMappedSuperclass);
+ if (result == null)
+ result = caseIJpaSourceObject(iMappedSuperclass);
+ if (result == null)
+ result = caseIJpaEObject(iMappedSuperclass);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.IENTITY : {
+ IEntity iEntity = (IEntity) theEObject;
+ T result = caseIEntity(iEntity);
+ if (result == null)
+ result = caseITypeMapping(iEntity);
+ if (result == null)
+ result = caseIJpaSourceObject(iEntity);
+ if (result == null)
+ result = caseIJpaEObject(iEntity);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.IEMBEDDABLE : {
+ IEmbeddable iEmbeddable = (IEmbeddable) theEObject;
+ T result = caseIEmbeddable(iEmbeddable);
+ if (result == null)
+ result = caseITypeMapping(iEmbeddable);
+ if (result == null)
+ result = caseIJpaSourceObject(iEmbeddable);
+ if (result == null)
+ result = caseIJpaEObject(iEmbeddable);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.ITABLE : {
+ ITable iTable = (ITable) theEObject;
+ T result = caseITable(iTable);
+ if (result == null)
+ result = caseIJpaSourceObject(iTable);
+ if (result == null)
+ result = caseIJpaEObject(iTable);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.INAMED_COLUMN : {
+ INamedColumn iNamedColumn = (INamedColumn) theEObject;
+ T result = caseINamedColumn(iNamedColumn);
+ if (result == null)
+ result = caseIJpaSourceObject(iNamedColumn);
+ if (result == null)
+ result = caseIJpaEObject(iNamedColumn);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.IABSTRACT_COLUMN : {
+ IAbstractColumn iAbstractColumn = (IAbstractColumn) theEObject;
+ T result = caseIAbstractColumn(iAbstractColumn);
+ if (result == null)
+ result = caseINamedColumn(iAbstractColumn);
+ if (result == null)
+ result = caseIJpaSourceObject(iAbstractColumn);
+ if (result == null)
+ result = caseIJpaEObject(iAbstractColumn);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.ICOLUMN : {
+ IColumn iColumn = (IColumn) theEObject;
+ T result = caseIColumn(iColumn);
+ if (result == null)
+ result = caseIAbstractColumn(iColumn);
+ if (result == null)
+ result = caseINamedColumn(iColumn);
+ if (result == null)
+ result = caseIJpaSourceObject(iColumn);
+ if (result == null)
+ result = caseIJpaEObject(iColumn);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.ICOLUMN_MAPPING : {
+ IColumnMapping iColumnMapping = (IColumnMapping) theEObject;
+ T result = caseIColumnMapping(iColumnMapping);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.IBASIC : {
+ IBasic iBasic = (IBasic) theEObject;
+ T result = caseIBasic(iBasic);
+ if (result == null)
+ result = caseIAttributeMapping(iBasic);
+ if (result == null)
+ result = caseIColumnMapping(iBasic);
+ if (result == null)
+ result = caseIJpaSourceObject(iBasic);
+ if (result == null)
+ result = caseIJpaEObject(iBasic);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.IID : {
+ IId iId = (IId) theEObject;
+ T result = caseIId(iId);
+ if (result == null)
+ result = caseIAttributeMapping(iId);
+ if (result == null)
+ result = caseIColumnMapping(iId);
+ if (result == null)
+ result = caseIJpaSourceObject(iId);
+ if (result == null)
+ result = caseIJpaEObject(iId);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.ITRANSIENT : {
+ ITransient iTransient = (ITransient) theEObject;
+ T result = caseITransient(iTransient);
+ if (result == null)
+ result = caseIAttributeMapping(iTransient);
+ if (result == null)
+ result = caseIJpaSourceObject(iTransient);
+ if (result == null)
+ result = caseIJpaEObject(iTransient);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.IVERSION : {
+ IVersion iVersion = (IVersion) theEObject;
+ T result = caseIVersion(iVersion);
+ if (result == null)
+ result = caseIAttributeMapping(iVersion);
+ if (result == null)
+ result = caseIColumnMapping(iVersion);
+ if (result == null)
+ result = caseIJpaSourceObject(iVersion);
+ if (result == null)
+ result = caseIJpaEObject(iVersion);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.IEMBEDDED_ID : {
+ IEmbeddedId iEmbeddedId = (IEmbeddedId) theEObject;
+ T result = caseIEmbeddedId(iEmbeddedId);
+ if (result == null)
+ result = caseIAttributeMapping(iEmbeddedId);
+ if (result == null)
+ result = caseIJpaSourceObject(iEmbeddedId);
+ if (result == null)
+ result = caseIJpaEObject(iEmbeddedId);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.IEMBEDDED : {
+ IEmbedded iEmbedded = (IEmbedded) theEObject;
+ T result = caseIEmbedded(iEmbedded);
+ if (result == null)
+ result = caseIAttributeMapping(iEmbedded);
+ if (result == null)
+ result = caseIJpaSourceObject(iEmbedded);
+ if (result == null)
+ result = caseIJpaEObject(iEmbedded);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.IRELATIONSHIP_MAPPING : {
+ IRelationshipMapping iRelationshipMapping = (IRelationshipMapping) theEObject;
+ T result = caseIRelationshipMapping(iRelationshipMapping);
+ if (result == null)
+ result = caseIAttributeMapping(iRelationshipMapping);
+ if (result == null)
+ result = caseIJpaSourceObject(iRelationshipMapping);
+ if (result == null)
+ result = caseIJpaEObject(iRelationshipMapping);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.INON_OWNING_MAPPING : {
+ INonOwningMapping iNonOwningMapping = (INonOwningMapping) theEObject;
+ T result = caseINonOwningMapping(iNonOwningMapping);
+ if (result == null)
+ result = caseIRelationshipMapping(iNonOwningMapping);
+ if (result == null)
+ result = caseIAttributeMapping(iNonOwningMapping);
+ if (result == null)
+ result = caseIJpaSourceObject(iNonOwningMapping);
+ if (result == null)
+ result = caseIJpaEObject(iNonOwningMapping);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.IMULTI_RELATIONSHIP_MAPPING : {
+ IMultiRelationshipMapping iMultiRelationshipMapping = (IMultiRelationshipMapping) theEObject;
+ T result = caseIMultiRelationshipMapping(iMultiRelationshipMapping);
+ if (result == null)
+ result = caseINonOwningMapping(iMultiRelationshipMapping);
+ if (result == null)
+ result = caseIRelationshipMapping(iMultiRelationshipMapping);
+ if (result == null)
+ result = caseIAttributeMapping(iMultiRelationshipMapping);
+ if (result == null)
+ result = caseIJpaSourceObject(iMultiRelationshipMapping);
+ if (result == null)
+ result = caseIJpaEObject(iMultiRelationshipMapping);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.IONE_TO_MANY : {
+ IOneToMany iOneToMany = (IOneToMany) theEObject;
+ T result = caseIOneToMany(iOneToMany);
+ if (result == null)
+ result = caseIMultiRelationshipMapping(iOneToMany);
+ if (result == null)
+ result = caseINonOwningMapping(iOneToMany);
+ if (result == null)
+ result = caseIRelationshipMapping(iOneToMany);
+ if (result == null)
+ result = caseIAttributeMapping(iOneToMany);
+ if (result == null)
+ result = caseIJpaSourceObject(iOneToMany);
+ if (result == null)
+ result = caseIJpaEObject(iOneToMany);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.IMANY_TO_MANY : {
+ IManyToMany iManyToMany = (IManyToMany) theEObject;
+ T result = caseIManyToMany(iManyToMany);
+ if (result == null)
+ result = caseIMultiRelationshipMapping(iManyToMany);
+ if (result == null)
+ result = caseINonOwningMapping(iManyToMany);
+ if (result == null)
+ result = caseIRelationshipMapping(iManyToMany);
+ if (result == null)
+ result = caseIAttributeMapping(iManyToMany);
+ if (result == null)
+ result = caseIJpaSourceObject(iManyToMany);
+ if (result == null)
+ result = caseIJpaEObject(iManyToMany);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.ISINGLE_RELATIONSHIP_MAPPING : {
+ ISingleRelationshipMapping iSingleRelationshipMapping = (ISingleRelationshipMapping) theEObject;
+ T result = caseISingleRelationshipMapping(iSingleRelationshipMapping);
+ if (result == null)
+ result = caseIRelationshipMapping(iSingleRelationshipMapping);
+ if (result == null)
+ result = caseIAttributeMapping(iSingleRelationshipMapping);
+ if (result == null)
+ result = caseIJpaSourceObject(iSingleRelationshipMapping);
+ if (result == null)
+ result = caseIJpaEObject(iSingleRelationshipMapping);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.IMANY_TO_ONE : {
+ IManyToOne iManyToOne = (IManyToOne) theEObject;
+ T result = caseIManyToOne(iManyToOne);
+ if (result == null)
+ result = caseISingleRelationshipMapping(iManyToOne);
+ if (result == null)
+ result = caseIRelationshipMapping(iManyToOne);
+ if (result == null)
+ result = caseIAttributeMapping(iManyToOne);
+ if (result == null)
+ result = caseIJpaSourceObject(iManyToOne);
+ if (result == null)
+ result = caseIJpaEObject(iManyToOne);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.IONE_TO_ONE : {
+ IOneToOne iOneToOne = (IOneToOne) theEObject;
+ T result = caseIOneToOne(iOneToOne);
+ if (result == null)
+ result = caseISingleRelationshipMapping(iOneToOne);
+ if (result == null)
+ result = caseINonOwningMapping(iOneToOne);
+ if (result == null)
+ result = caseIRelationshipMapping(iOneToOne);
+ if (result == null)
+ result = caseIAttributeMapping(iOneToOne);
+ if (result == null)
+ result = caseIJpaSourceObject(iOneToOne);
+ if (result == null)
+ result = caseIJpaEObject(iOneToOne);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.IJOIN_TABLE : {
+ IJoinTable iJoinTable = (IJoinTable) theEObject;
+ T result = caseIJoinTable(iJoinTable);
+ if (result == null)
+ result = caseITable(iJoinTable);
+ if (result == null)
+ result = caseIJpaSourceObject(iJoinTable);
+ if (result == null)
+ result = caseIJpaEObject(iJoinTable);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.IABSTRACT_JOIN_COLUMN : {
+ IAbstractJoinColumn iAbstractJoinColumn = (IAbstractJoinColumn) theEObject;
+ T result = caseIAbstractJoinColumn(iAbstractJoinColumn);
+ if (result == null)
+ result = caseINamedColumn(iAbstractJoinColumn);
+ if (result == null)
+ result = caseIJpaSourceObject(iAbstractJoinColumn);
+ if (result == null)
+ result = caseIJpaEObject(iAbstractJoinColumn);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.IJOIN_COLUMN : {
+ IJoinColumn iJoinColumn = (IJoinColumn) theEObject;
+ T result = caseIJoinColumn(iJoinColumn);
+ if (result == null)
+ result = caseIAbstractColumn(iJoinColumn);
+ if (result == null)
+ result = caseIAbstractJoinColumn(iJoinColumn);
+ if (result == null)
+ result = caseINamedColumn(iJoinColumn);
+ if (result == null)
+ result = caseIJpaSourceObject(iJoinColumn);
+ if (result == null)
+ result = caseIJpaEObject(iJoinColumn);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.IOVERRIDE : {
+ IOverride iOverride = (IOverride) theEObject;
+ T result = caseIOverride(iOverride);
+ if (result == null)
+ result = caseIJpaSourceObject(iOverride);
+ if (result == null)
+ result = caseIJpaEObject(iOverride);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.IATTRIBUTE_OVERRIDE : {
+ IAttributeOverride iAttributeOverride = (IAttributeOverride) theEObject;
+ T result = caseIAttributeOverride(iAttributeOverride);
+ if (result == null)
+ result = caseIOverride(iAttributeOverride);
+ if (result == null)
+ result = caseIColumnMapping(iAttributeOverride);
+ if (result == null)
+ result = caseIJpaSourceObject(iAttributeOverride);
+ if (result == null)
+ result = caseIJpaEObject(iAttributeOverride);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.IASSOCIATION_OVERRIDE : {
+ IAssociationOverride iAssociationOverride = (IAssociationOverride) theEObject;
+ T result = caseIAssociationOverride(iAssociationOverride);
+ if (result == null)
+ result = caseIOverride(iAssociationOverride);
+ if (result == null)
+ result = caseIJpaSourceObject(iAssociationOverride);
+ if (result == null)
+ result = caseIJpaEObject(iAssociationOverride);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.IDISCRIMINATOR_COLUMN : {
+ IDiscriminatorColumn iDiscriminatorColumn = (IDiscriminatorColumn) theEObject;
+ T result = caseIDiscriminatorColumn(iDiscriminatorColumn);
+ if (result == null)
+ result = caseIJpaSourceObject(iDiscriminatorColumn);
+ if (result == null)
+ result = caseIJpaEObject(iDiscriminatorColumn);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.ISECONDARY_TABLE : {
+ ISecondaryTable iSecondaryTable = (ISecondaryTable) theEObject;
+ T result = caseISecondaryTable(iSecondaryTable);
+ if (result == null)
+ result = caseITable(iSecondaryTable);
+ if (result == null)
+ result = caseIJpaSourceObject(iSecondaryTable);
+ if (result == null)
+ result = caseIJpaEObject(iSecondaryTable);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.IPRIMARY_KEY_JOIN_COLUMN : {
+ IPrimaryKeyJoinColumn iPrimaryKeyJoinColumn = (IPrimaryKeyJoinColumn) theEObject;
+ T result = caseIPrimaryKeyJoinColumn(iPrimaryKeyJoinColumn);
+ if (result == null)
+ result = caseIAbstractJoinColumn(iPrimaryKeyJoinColumn);
+ if (result == null)
+ result = caseINamedColumn(iPrimaryKeyJoinColumn);
+ if (result == null)
+ result = caseIJpaSourceObject(iPrimaryKeyJoinColumn);
+ if (result == null)
+ result = caseIJpaEObject(iPrimaryKeyJoinColumn);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.IGENERATOR : {
+ IGenerator iGenerator = (IGenerator) theEObject;
+ T result = caseIGenerator(iGenerator);
+ if (result == null)
+ result = caseIJpaSourceObject(iGenerator);
+ if (result == null)
+ result = caseIJpaEObject(iGenerator);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.ITABLE_GENERATOR : {
+ ITableGenerator iTableGenerator = (ITableGenerator) theEObject;
+ T result = caseITableGenerator(iTableGenerator);
+ if (result == null)
+ result = caseIGenerator(iTableGenerator);
+ if (result == null)
+ result = caseIJpaSourceObject(iTableGenerator);
+ if (result == null)
+ result = caseIJpaEObject(iTableGenerator);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.ISEQUENCE_GENERATOR : {
+ ISequenceGenerator iSequenceGenerator = (ISequenceGenerator) theEObject;
+ T result = caseISequenceGenerator(iSequenceGenerator);
+ if (result == null)
+ result = caseIGenerator(iSequenceGenerator);
+ if (result == null)
+ result = caseIJpaSourceObject(iSequenceGenerator);
+ if (result == null)
+ result = caseIJpaEObject(iSequenceGenerator);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.IGENERATED_VALUE : {
+ IGeneratedValue iGeneratedValue = (IGeneratedValue) theEObject;
+ T result = caseIGeneratedValue(iGeneratedValue);
+ if (result == null)
+ result = caseIJpaSourceObject(iGeneratedValue);
+ if (result == null)
+ result = caseIJpaEObject(iGeneratedValue);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.IORDER_BY : {
+ IOrderBy iOrderBy = (IOrderBy) theEObject;
+ T result = caseIOrderBy(iOrderBy);
+ if (result == null)
+ result = caseIJpaSourceObject(iOrderBy);
+ if (result == null)
+ result = caseIJpaEObject(iOrderBy);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.IQUERY : {
+ IQuery iQuery = (IQuery) theEObject;
+ T result = caseIQuery(iQuery);
+ if (result == null)
+ result = caseIJpaSourceObject(iQuery);
+ if (result == null)
+ result = caseIJpaEObject(iQuery);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.INAMED_QUERY : {
+ INamedQuery iNamedQuery = (INamedQuery) theEObject;
+ T result = caseINamedQuery(iNamedQuery);
+ if (result == null)
+ result = caseIJpaSourceObject(iNamedQuery);
+ if (result == null)
+ result = caseIQuery(iNamedQuery);
+ if (result == null)
+ result = caseIJpaEObject(iNamedQuery);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.INAMED_NATIVE_QUERY : {
+ INamedNativeQuery iNamedNativeQuery = (INamedNativeQuery) theEObject;
+ T result = caseINamedNativeQuery(iNamedNativeQuery);
+ if (result == null)
+ result = caseIJpaSourceObject(iNamedNativeQuery);
+ if (result == null)
+ result = caseIQuery(iNamedNativeQuery);
+ if (result == null)
+ result = caseIJpaEObject(iNamedNativeQuery);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCoreMappingsPackage.IQUERY_HINT : {
+ IQueryHint iQueryHint = (IQueryHint) theEObject;
+ T result = caseIQueryHint(iQueryHint);
+ if (result == null)
+ result = caseIJpaSourceObject(iQueryHint);
+ if (result == null)
+ result = caseIJpaEObject(iQueryHint);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ default :
+ return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IMapped Superclass</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 interpretting the object as an instance of '<em>IMapped Superclass</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIMappedSuperclass(IMappedSuperclass object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IEntity</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 interpretting the object as an instance of '<em>IEntity</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIEntity(IEntity object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>ITable</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 interpretting the object as an instance of '<em>ITable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseITable(ITable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>INamed Column</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 interpretting the object as an instance of '<em>INamed Column</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseINamedColumn(INamedColumn object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IAbstract Column</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 interpretting the object as an instance of '<em>IAbstract Column</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIAbstractColumn(IAbstractColumn object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IColumn</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 interpretting the object as an instance of '<em>IColumn</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIColumn(IColumn object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IColumn Mapping</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 interpretting the object as an instance of '<em>IColumn Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIColumnMapping(IColumnMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IEmbeddable</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 interpretting the object as an instance of '<em>IEmbeddable</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIEmbeddable(IEmbeddable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IBasic</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 interpretting the object as an instance of '<em>IBasic</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIBasic(IBasic object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IId</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 interpretting the object as an instance of '<em>IId</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIId(IId object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>ITransient</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 interpretting the object as an instance of '<em>ITransient</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseITransient(ITransient object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IVersion</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 interpretting the object as an instance of '<em>IVersion</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIVersion(IVersion object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IEmbedded Id</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 interpretting the object as an instance of '<em>IEmbedded Id</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIEmbeddedId(IEmbeddedId object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IEmbedded</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 interpretting the object as an instance of '<em>IEmbedded</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIEmbedded(IEmbedded object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IRelationship Mapping</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 interpretting the object as an instance of '<em>IRelationship Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIRelationshipMapping(IRelationshipMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>INon Owning Mapping</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 interpretting the object as an instance of '<em>INon Owning Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseINonOwningMapping(INonOwningMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IMulti Relationship Mapping</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 interpretting the object as an instance of '<em>IMulti Relationship Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIMultiRelationshipMapping(IMultiRelationshipMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IOne To Many</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 interpretting the object as an instance of '<em>IOne To Many</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIOneToMany(IOneToMany object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IMany To Many</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 interpretting the object as an instance of '<em>IMany To Many</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIManyToMany(IManyToMany object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>ISingle Relationship Mapping</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 interpretting the object as an instance of '<em>ISingle Relationship Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseISingleRelationshipMapping(ISingleRelationshipMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IMany To One</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 interpretting the object as an instance of '<em>IMany To One</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIManyToOne(IManyToOne object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IOne To One</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 interpretting the object as an instance of '<em>IOne To One</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIOneToOne(IOneToOne object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IJoin Table</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 interpretting the object as an instance of '<em>IJoin Table</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIJoinTable(IJoinTable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IAbstract Join Column</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 interpretting the object as an instance of '<em>IAbstract Join Column</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIAbstractJoinColumn(IAbstractJoinColumn object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IJoin Column</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 interpretting the object as an instance of '<em>IJoin Column</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIJoinColumn(IJoinColumn object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IOverride</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 interpretting the object as an instance of '<em>IOverride</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIOverride(IOverride object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IAttribute Override</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 interpretting the object as an instance of '<em>IAttribute Override</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIAttributeOverride(IAttributeOverride object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IAssociation Override</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 interpretting the object as an instance of '<em>IAssociation Override</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIAssociationOverride(IAssociationOverride object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IDiscriminator Column</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 interpretting the object as an instance of '<em>IDiscriminator Column</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIDiscriminatorColumn(IDiscriminatorColumn object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>ISecondary Table</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 interpretting the object as an instance of '<em>ISecondary Table</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseISecondaryTable(ISecondaryTable object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IPrimary Key Join Column</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 interpretting the object as an instance of '<em>IPrimary Key Join Column</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIPrimaryKeyJoinColumn(IPrimaryKeyJoinColumn object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IGenerator</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 interpretting the object as an instance of '<em>IGenerator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIGenerator(IGenerator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>ITable Generator</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 interpretting the object as an instance of '<em>ITable Generator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseITableGenerator(ITableGenerator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>ISequence Generator</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 interpretting the object as an instance of '<em>ISequence Generator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseISequenceGenerator(ISequenceGenerator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IGenerated 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 interpretting the object as an instance of '<em>IGenerated Value</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIGeneratedValue(IGeneratedValue object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IOrder By</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 interpretting the object as an instance of '<em>IOrder By</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIOrderBy(IOrderBy object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IQuery</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 interpretting the object as an instance of '<em>IQuery</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIQuery(IQuery object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>INamed Query</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 interpretting the object as an instance of '<em>INamed Query</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseINamedQuery(INamedQuery object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>INamed Native Query</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 interpretting the object as an instance of '<em>INamed Native Query</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseINamedNativeQuery(INamedNativeQuery object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IQuery Hint</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 interpretting the object as an instance of '<em>IQuery Hint</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIQueryHint(IQueryHint object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IJpa EObject</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 interpretting the object as an instance of '<em>IJpa EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIJpaEObject(IJpaEObject object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IJpa Source Object</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 interpretting the object as an instance of '<em>IJpa Source Object</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIJpaSourceObject(IJpaSourceObject object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IType Mapping</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 interpretting the object as an instance of '<em>IType Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseITypeMapping(ITypeMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IAttribute Mapping</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 interpretting the object as an instance of '<em>IAttribute Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIAttributeMapping(IAttributeMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting 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 interpretting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ public T defaultCase(EObject object) {
+ return null;
+ }
+} //JpaCoreMappingsSwitch
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/AbstractJoinColumnContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/AbstractJoinColumnContext.java
new file mode 100644
index 0000000000..3f266f420d
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/AbstractJoinColumnContext.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.mappings.IAbstractJoinColumn;
+
+public abstract class AbstractJoinColumnContext<E extends IAbstractJoinColumn> extends BaseContext
+{
+ protected E column;
+
+ public AbstractJoinColumnContext(IContext parentContext, E column) {
+ super(parentContext);
+ this.column = column;
+ }
+
+ @Override
+ protected void initialize() {}
+
+ public E getColumn() {
+ return this.column;
+ }
+
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ this.column.refreshDefaults(wrapDefaultsContext(defaultsContext));
+ }
+
+ public DefaultsContext wrapDefaultsContext(final DefaultsContext defaultsContext) {
+ return new DefaultsContext() {
+ public Object getDefault(String key) {
+ if (key.equals(BaseJpaPlatform.DEFAULT_JOIN_COLUMN_NAME_KEY)) {
+ return buildDefaultName();
+ }
+ if (key.equals(BaseJpaPlatform.DEFAULT_JOIN_COLUMN_REFERENCED_COLUMN_NAME_KEY)) {
+ return buildDefaultReferencedColumnName();
+ }
+ return defaultsContext.getDefault(key);
+ }
+
+ public IPersistentType persistentType(String fullyQualifiedTypeName) {
+ return defaultsContext.persistentType(fullyQualifiedTypeName);
+ }
+ };
+ }
+
+ protected abstract String buildDefaultName();
+
+ protected abstract String buildDefaultReferencedColumnName();
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/AssociationOverrideContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/AssociationOverrideContext.java
new file mode 100644
index 0000000000..6747be1512
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/AssociationOverrideContext.java
@@ -0,0 +1,130 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.mappings.IAssociationOverride;
+import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
+import org.eclipse.jpt.core.internal.validation.IJpaValidationMessages;
+import org.eclipse.jpt.core.internal.validation.JpaValidationMessages;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public class AssociationOverrideContext extends BaseContext
+{
+ IAssociationOverride associationOverride;
+
+ private Collection<JoinColumnContext> joinColumnContexts;
+
+ public AssociationOverrideContext(IContext parentContext, IAssociationOverride associationOverride) {
+ super(parentContext);
+ this.associationOverride = associationOverride;
+ this.joinColumnContexts = buildJoinColumnContexts();
+ }
+
+ @Override
+ protected void initialize() {
+ }
+
+ protected Collection<JoinColumnContext> buildJoinColumnContexts() {
+ Collection<JoinColumnContext> contexts = new ArrayList<JoinColumnContext>();
+ for (IJoinColumn joinColumn : this.associationOverride.getJoinColumns() ) {
+ contexts.add(new JoinColumnContext(this, joinColumn));
+ }
+ return contexts;
+ }
+
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ for (JoinColumnContext context : this.joinColumnContexts) {
+ context.refreshDefaults(defaultsContext);
+ }
+ }
+
+ @Override
+ public void addToMessages(List<IMessage> messages) {
+ super.addToMessages(messages);
+
+ addJoinColumnMessages(messages);
+ }
+
+ protected void addJoinColumnMessages(List<IMessage> messages) {
+ ITypeMapping typeMapping = associationOverride.typeMapping();
+
+ for (IJoinColumn joinColumn : associationOverride.getJoinColumns()) {
+ String table = joinColumn.getTable();
+ boolean doContinue = joinColumn.isConnected();
+
+ if (doContinue && typeMapping.tableNameIsInvalid(table)) {
+ if (associationOverride.isVirtual()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.VIRTUAL_ASSOCIATION_OVERRIDE_JOIN_COLUMN_UNRESOLVED_TABLE,
+ new String[] {associationOverride.getName(), table, joinColumn.getName()},
+ joinColumn, joinColumn.getTableTextRange())
+ );
+ }
+ else {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.JOIN_COLUMN_UNRESOLVED_TABLE,
+ new String[] {table, joinColumn.getName()},
+ joinColumn, joinColumn.getTableTextRange())
+ );
+ }
+ doContinue = false;
+ }
+
+ if (doContinue && ! joinColumn.isResolved()) {
+ if (associationOverride.isVirtual()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.VIRTUAL_ASSOCIATION_OVERRIDE_JOIN_COLUMN_UNRESOLVED_NAME,
+ new String[] {associationOverride.getName(), joinColumn.getName()},
+ joinColumn, joinColumn.getNameTextRange())
+ );
+ }
+ else {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.JOIN_COLUMN_UNRESOLVED_NAME,
+ new String[] {joinColumn.getName()},
+ joinColumn, joinColumn.getNameTextRange())
+ );
+ }
+ }
+
+ if (doContinue && ! joinColumn.isReferencedColumnResolved()) {
+ if (associationOverride.isVirtual()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.VIRTUAL_ASSOCIATION_OVERRIDE_JOIN_COLUMN_REFERENCED_COLUMN_UNRESOLVED_NAME,
+ new String[] {associationOverride.getName(), joinColumn.getReferencedColumnName(), joinColumn.getName()},
+ joinColumn, joinColumn.getReferencedColumnNameTextRange())
+ );
+ }
+ else {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.JOIN_COLUMN_REFERENCED_COLUMN_UNRESOLVED_NAME,
+ new String[] {joinColumn.getReferencedColumnName(), joinColumn.getName()},
+ joinColumn, joinColumn.getReferencedColumnNameTextRange())
+ );
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/AttributeOverrideContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/AttributeOverrideContext.java
new file mode 100644
index 0000000000..2e20a7834f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/AttributeOverrideContext.java
@@ -0,0 +1,130 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.List;
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.mappings.IAttributeOverride;
+import org.eclipse.jpt.core.internal.mappings.IColumn;
+import org.eclipse.jpt.core.internal.mappings.IColumnMapping;
+import org.eclipse.jpt.core.internal.validation.IJpaValidationMessages;
+import org.eclipse.jpt.core.internal.validation.JpaValidationMessages;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public class AttributeOverrideContext extends BaseContext
+{
+ IAttributeOverride attributeOverride;
+
+ ColumnContext columnContext;
+
+ public AttributeOverrideContext(IContext parentContext, IAttributeOverride attributeOverride) {
+ super(parentContext);
+ this.attributeOverride = attributeOverride;
+ this.columnContext = buildColumnContext();
+ }
+
+ @Override
+ protected void initialize() {}
+
+ protected ColumnContext buildColumnContext() {
+ return new ColumnContext(this, this.attributeOverride.getColumn());
+ }
+
+ public DefaultsContext wrapDefaultsContext(final DefaultsContext defaultsContext) {
+ return new DefaultsContext() {
+ public IPersistentType persistentType(String fullyQualifiedTypeName) {
+ return defaultsContext.persistentType(fullyQualifiedTypeName);
+ }
+
+ public Object getDefault(String key) {
+ if (key.equals(BaseJpaPlatform.DEFAULT_COLUMN_NAME_KEY)) {
+ IColumnMapping columnMapping = (IColumnMapping) attributeOverride.getOwner().attributeMapping(attributeOverride.getName());
+ if (columnMapping == null) {
+ return null;
+ }
+ return columnMapping.getColumn().getName();
+ }
+ else if (key.equals(BaseJpaPlatform.DEFAULT_COLUMN_TABLE_KEY)) {
+ IColumnMapping columnMapping = (IColumnMapping) attributeOverride.getOwner().attributeMapping(attributeOverride.getName());
+ if (columnMapping == null) {
+ return null;
+ }
+ String specifiedTable = columnMapping.getColumn().getSpecifiedTable();
+ if (specifiedTable != null) {
+ return specifiedTable;
+ }
+
+ }
+ return defaultsContext.getDefault(key);
+ }
+ };
+ }
+
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ this.columnContext.refreshDefaults(wrapDefaultsContext(defaultsContext));
+ }
+
+ @Override
+ public void addToMessages(List<IMessage> messages) {
+ super.addToMessages(messages);
+
+ addColumnMessages(messages);
+ }
+
+ protected void addColumnMessages(List<IMessage> messages) {
+ ITypeMapping typeMapping = attributeOverride.getOwner().getTypeMapping();
+ IColumn column = attributeOverride.getColumn();
+ String table = column.getTable();
+ boolean doContinue = column.isConnected();
+
+ if (doContinue && typeMapping.tableNameIsInvalid(table)) {
+ if (attributeOverride.isVirtual()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.VIRTUAL_ATTRIBUTE_OVERRIDE_COLUMN_UNRESOLVED_TABLE,
+ new String[] {attributeOverride.getName(), table, column.getName()},
+ column, column.getTableTextRange())
+ );
+ }
+ else {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.COLUMN_UNRESOLVED_TABLE,
+ new String[] {table, column.getName()},
+ column, column.getTableTextRange())
+ );
+ }
+ doContinue = false;
+ }
+
+ if (doContinue && ! column.isResolved()) {
+ if (attributeOverride.isVirtual()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.VIRTUAL_ATTRIBUTE_OVERRIDE_COLUMN_UNRESOLVED_NAME,
+ new String[] {attributeOverride.getName(), column.getName()},
+ column, column.getNameTextRange())
+ );
+ }
+ else {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.COLUMN_UNRESOLVED_NAME,
+ new String[] {column.getName()},
+ column, column.getNameTextRange())
+ );
+ }
+ }
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/BaseContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/BaseContext.java
new file mode 100644
index 0000000000..fda56cf96b
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/BaseContext.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.List;
+import org.eclipse.jpt.core.internal.IJpaPlatform;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public abstract class BaseContext implements IContext
+{
+ private IContext parentContext;
+
+
+ public BaseContext(IContext parentContext) {
+ super();
+ this.parentContext = parentContext;
+ }
+
+ /**
+ * All inter-context based initialization should be done here
+ * (i.e. all initialization based on other contexts, parent or otherwise)
+ */
+ protected abstract void initialize();
+
+ /**
+ * @see IContext#getParentContext()
+ */
+ public IJpaPlatform getPlatform() {
+ return getParentContext().getPlatform();
+ }
+
+ /**
+ * @see IContext#getParentContext()
+ */
+ public IContext getParentContext() {
+ return parentContext;
+ }
+
+ /**
+ * All subclass implementation {@link #refreshDefaults(DefaultsContext)}
+ * should be preceded by a "super" call to this method
+ */
+ public void refreshDefaults(DefaultsContext parentDefaults) {
+ initialize();
+ }
+
+ /**
+ * All subclass implementation {@link #refreshDefaults(DefaultsContext)}
+ * should be preceded by a "super" call to this method
+ */
+ public void addToMessages(List<IMessage> messages) {
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/BaseJpaPlatform.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/BaseJpaPlatform.java
new file mode 100644
index 0000000000..2e98d93c04
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/BaseJpaPlatform.java
@@ -0,0 +1,175 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.jpt.core.internal.IJpaFileContentProvider;
+import org.eclipse.jpt.core.internal.IJpaPlatform;
+import org.eclipse.jpt.core.internal.IJpaProject;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMapping;
+import org.eclipse.jpt.core.internal.content.java.IJavaTypeMapping;
+import org.eclipse.jpt.core.internal.content.java.JavaJpaFileContentProvider;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaBasic;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbeddable;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbedded;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbeddedId;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaEntity;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaId;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaManyToMany;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaManyToOne;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaMappedSuperclass;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaNullAttributeMapping;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaNullTypeMapping;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaOneToMany;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaOneToOne;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaTransient;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaVersion;
+import org.eclipse.jpt.core.internal.content.orm.OrmXmlJpaFileContentProvider;
+import org.eclipse.jpt.core.internal.content.persistence.PersistenceXmlJpaFileContentProvider;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public abstract class BaseJpaPlatform implements IJpaPlatform
+{
+ public static final String DEFAULT_TABLE_SCHEMA_KEY = "table.schema";
+ public static final String DEFAULT_TABLE_CATALOG_KEY = "table.catalog";
+ public static final String DEFAULT_TABLE_NAME_KEY = "table.name";
+ public static final String DEFAULT_ACCESS_KEY = "access";
+ public static final String DEFAULT_ENTITY_NAME_KEY = "entity.name";
+ public static final String DEFAULT_COLUMN_TABLE_KEY = "column.table";
+ public static final String DEFAULT_COLUMN_NAME_KEY = "column.name";
+ public static final String DEFAULT_JOIN_TABLE_NAME_KEY = "joinTable.name";
+ public static final String DEFAULT_TARGET_ENTITY_KEY = "oneToMany.targetEntity";
+ public static final String DEFAULT_JOIN_COLUMN_TABLE_KEY = "joinColumn.table";
+ public static final String DEFAULT_JOIN_COLUMN_NAME_KEY = "joinColumn.name";
+ public static final String DEFAULT_JOIN_COLUMN_REFERENCED_COLUMN_NAME_KEY = "joinColumn.referencedColumnName";
+ public static final String DEFAULT_TABLE_GENERATOR_SCHEMA_KEY = "tableGenerator.schema";
+
+ private String id;
+
+ protected IJpaProject project;
+
+ private Collection<IJpaFileContentProvider> contentProviders;
+
+ private IContext context;
+
+ public String getId() {
+ return this.id;
+ }
+
+ /**
+ * *************
+ * * IMPORTANT * For INTERNAL use only !!
+ * *************
+ *
+ * @see IJpaPlatform#setId(String)
+ */
+ public void setId(String theId) {
+ this.id = theId;
+ }
+
+ public IJpaProject getProject() {
+ return this.project;
+ }
+
+ public void setProject(IJpaProject jpaProject) {
+ this.project = jpaProject;
+ }
+
+ public Collection<IJpaFileContentProvider> jpaFileContentProviders() {
+ if (this.contentProviders == null) {
+ this.contentProviders = new ArrayList<IJpaFileContentProvider>();
+ this.contentProviders.add(PersistenceXmlJpaFileContentProvider.INSTANCE);
+ this.contentProviders.add(JavaJpaFileContentProvider.INSTANCE);
+ this.contentProviders.add(OrmXmlJpaFileContentProvider.INSTANCE);
+ }
+ return this.contentProviders;
+ }
+
+ public IContext buildProjectContext() {
+ this.context = new BaseJpaProjectContext(getProject());
+ return this.context;
+ }
+
+ public IContext buildJavaTypeContext(IContext parentContext, IJavaTypeMapping typeMapping) {
+ String key = typeMapping.getKey();
+ if (key == IMappingKeys.ENTITY_TYPE_MAPPING_KEY) {
+ return new JavaEntityContext(parentContext, (JavaEntity) typeMapping);
+ }
+ else if (key == IMappingKeys.EMBEDDABLE_TYPE_MAPPING_KEY) {
+ return new JavaEmbeddableContext(parentContext, (JavaEmbeddable) typeMapping);
+ }
+ else if (key == IMappingKeys.MAPPED_SUPERCLASS_TYPE_MAPPING_KEY) {
+ return new JavaMappedSuperclassContext(parentContext, (JavaMappedSuperclass) typeMapping);
+ }
+ else if (key == null) {
+ return new JavaNullTypeMappingContext(parentContext, (JavaNullTypeMapping) typeMapping);
+ }
+ else {
+ throw new IllegalArgumentException(typeMapping.toString());
+ }
+ }
+
+ public IContext buildJavaAttributeContext(IContext parentContext, IJavaAttributeMapping attributeMapping) {
+ String key = attributeMapping.getKey();
+ if (key == IMappingKeys.BASIC_ATTRIBUTE_MAPPING_KEY) {
+ return new JavaBasicContext(parentContext, (JavaBasic) attributeMapping);
+ }
+ else if (key == IMappingKeys.ID_ATTRIBUTE_MAPPING_KEY) {
+ return new JavaIdContext(parentContext, (JavaId) attributeMapping);
+ }
+ else if (key == IMappingKeys.VERSION_ATTRIBUTE_MAPPING_KEY) {
+ return new JavaVersionContext(parentContext, (JavaVersion) attributeMapping);
+ }
+ else if (key == IMappingKeys.EMBEDDED_ATTRIBUTE_MAPPING_KEY) {
+ return new JavaEmbeddedContext(parentContext, (JavaEmbedded) attributeMapping);
+ }
+ else if (key == IMappingKeys.EMBEDDED_ID_ATTRIBUTE_MAPPING_KEY) {
+ return new JavaEmbeddedIdContext(parentContext, (JavaEmbeddedId) attributeMapping);
+ }
+ else if (key == IMappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY) {
+ return new JavaOneToOneContext(parentContext, (JavaOneToOne) attributeMapping);
+ }
+ else if (key == IMappingKeys.ONE_TO_MANY_ATTRIBUTE_MAPPING_KEY) {
+ return new JavaOneToManyContext(parentContext, (JavaOneToMany) attributeMapping);
+ }
+ else if (key == IMappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY) {
+ return new JavaManyToOneContext(parentContext, (JavaManyToOne) attributeMapping);
+ }
+ else if (key == IMappingKeys.MANY_TO_MANY_ATTRIBUTE_MAPPING_KEY) {
+ return new JavaManyToManyContext(parentContext, (JavaManyToMany) attributeMapping);
+ }
+ else if (key == IMappingKeys.TRANSIENT_ATTRIBUTE_MAPPING_KEY) {
+ return new JavaTransientContext(parentContext, (JavaTransient) attributeMapping);
+ }
+ else if (key == null) {
+ return new JavaNullAttributeMappingContext(parentContext, (JavaNullAttributeMapping) attributeMapping);
+ }
+ else {
+ throw new IllegalArgumentException(attributeMapping.toString());
+ }
+ }
+
+ public void resynch(IContext contextHierarchy) {
+ ((BaseJpaProjectContext) contextHierarchy).refreshDefaults();
+ }
+
+ public void addToMessages(List<IMessage> messages) {
+ BaseJpaProjectContext context = (BaseJpaProjectContext) buildProjectContext();
+ context.refreshDefaults();
+ context.addToMessages(messages);
+ }
+
+// public IGeneratorRepository generatorRepository(IPersistentType persistentType) {
+// return ((BaseJpaProjectContext) context).generatorRepository(persistentType);
+// }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/BaseJpaProjectContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/BaseJpaProjectContext.java
new file mode 100644
index 0000000000..b9601c6d94
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/BaseJpaProjectContext.java
@@ -0,0 +1,323 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.jdt.core.IJavaElement;
+import org.eclipse.jdt.core.IPackageFragmentRoot;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jpt.core.internal.IJpaCoreConstants;
+import org.eclipse.jpt.core.internal.IJpaFile;
+import org.eclipse.jpt.core.internal.IJpaPlatform;
+import org.eclipse.jpt.core.internal.IJpaProject;
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.JpaCorePlugin;
+import org.eclipse.jpt.core.internal.content.persistence.Persistence;
+import org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit;
+import org.eclipse.jpt.core.internal.content.persistence.PersistenceXmlRootContentNode;
+import org.eclipse.jpt.core.internal.validation.IJpaValidationMessages;
+import org.eclipse.jpt.core.internal.validation.JpaValidationMessages;
+import org.eclipse.jpt.db.internal.Connection;
+import org.eclipse.jpt.db.internal.ConnectionProfile;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+/**
+ * The project context used for base jpa projects. It is assumed that
+ * the project contains at least 1 persistence.xml file. Multiple persistence.xml
+ * files will be treated as an error condition, no defaults or validation based
+ * on the context of a persistence-unit will be given. Currently no support for default orm.xml
+ * files or defaulting annotated java files, we don't know how the information will be packaged.
+ *
+ * Multiple persistence-units can be supported, but the resulting defaults/validation
+ * may be incorrect. If the persistence-units have overlap in the java files they specify
+ * as mapped, then the defaults could be wrong depending on the context. We can only use 1 set
+ * of defaults in our tooling.
+ */
+public class BaseJpaProjectContext extends BaseContext
+{
+ private IJpaProject project;
+
+ private List<IJpaFile> validPersistenceXmlFiles;
+ private List<IJpaFile> invalidPersistenceXmlFiles;
+
+ private Collection<PersistenceUnitContext> persistenceUnitContexts;
+
+ public BaseJpaProjectContext(IJpaProject jpaProject) {
+ super(null);
+ project = jpaProject;
+ validPersistenceXmlFiles = new ArrayList<IJpaFile>();
+ invalidPersistenceXmlFiles = new ArrayList<IJpaFile>();
+ persistenceUnitContexts = new ArrayList<PersistenceUnitContext>();
+ }
+
+ @Override
+ protected void initialize() {
+ sortPersistenceXmlFiles();
+ buildPersistenceUnitContexts();
+ }
+
+ private void sortPersistenceXmlFiles() {
+ for (IJpaFile jpaFile : persistenceXmlFiles()) {
+ if (isValidPersistenceXmlLocation(jpaFile)) {
+ validPersistenceXmlFiles.add(jpaFile);
+ }
+ else {
+ invalidPersistenceXmlFiles.add(jpaFile);
+ }
+ }
+ }
+
+ private Collection<IJpaFile> persistenceXmlFiles() {
+ return this.project.jpaFiles(JpaCorePlugin.PERSISTENCE_XML_CONTENT_TYPE);
+ }
+
+ private boolean isValidPersistenceXmlLocation(IJpaFile jpaFile) {
+ IFile file = jpaFile.getFile();
+ IContainer folder = file.getParent();
+ if ((folder.getType() != IContainer.FOLDER) || ! folder.getName().equals(IJpaCoreConstants.META_INF)) {
+ return false;
+ }
+ IJavaElement sourceFolder = JavaCore.create(((IFolder) folder).getParent());
+ if (sourceFolder == null || sourceFolder.getElementType() != IJavaElement.PACKAGE_FRAGMENT_ROOT) {
+ return false;
+ }
+ try {
+ if (((IPackageFragmentRoot) sourceFolder).getKind() != IPackageFragmentRoot.K_SOURCE) {
+ return false;
+ }
+ }
+ catch (Throwable t) {
+ return false;
+ }
+
+ return true;
+ }
+
+ //TODO need to handle clearing out defaults for JpaFiles that aren't in a persistenceUnit
+ // or for when there are multiple persistence.xml files
+ //TODO how do we handle files being in multiple persistenceUnits? this is valid, but
+ //our tool can really only show defaults for one or the other. should clear out defaults and
+ //probably have a warning letting the user know why they get no defaults or validation
+ protected void buildPersistenceUnitContexts() {
+ // we currently only support *one* persistence.xml file per project,
+ // so we provide no defaults or validation for those that have more or less
+ if (validPersistenceXmlFiles.size() == 1) {
+ IJpaFile file = validPersistenceXmlFiles.get(0);
+ buildPersistenceUnitContexts(getPersistence(file));
+ }
+ }
+
+ protected void buildPersistenceUnitContexts(Persistence persistence) {
+ if (persistence != null) {
+ for (Iterator stream = persistence.getPersistenceUnits().iterator(); stream.hasNext();) {
+ PersistenceUnit persistenceUnit = (PersistenceUnit) stream.next();
+ PersistenceUnitContext persistenceUnitContext = new PersistenceUnitContext(this, persistenceUnit);
+ persistenceUnitContexts.add(persistenceUnitContext);
+ }
+ }
+ }
+
+ protected Persistence getPersistence(IJpaFile persistenceXmlFile) {
+ return ((PersistenceXmlRootContentNode) persistenceXmlFile.getContent()).getPersistence();
+ }
+
+ @Override
+ public IJpaPlatform getPlatform() {
+ return this.project.getPlatform();
+ }
+
+ public void refreshDefaults() {
+ refreshDefaults(null);
+ }
+
+ public void refreshDefaults(DefaultsContext parentDefaults) {
+ super.refreshDefaults(parentDefaults);
+ DefaultsContext defaultsContext = buildDefaultsContext();
+ for (PersistenceUnitContext context : this.persistenceUnitContexts) {
+ context.refreshDefaults(defaultsContext);
+ }
+ }
+
+ private DefaultsContext buildDefaultsContext() {
+ return new DefaultsContext(){
+ public Object getDefault(String key) {
+ if (key.equals(BaseJpaPlatform.DEFAULT_TABLE_SCHEMA_KEY)
+ || key.equals(BaseJpaPlatform.DEFAULT_TABLE_GENERATOR_SCHEMA_KEY)) {
+ return getProjectUserSchema();
+ }
+ else if (key.equals(BaseJpaPlatform.DEFAULT_TABLE_CATALOG_KEY)) {
+ return getProjectUserCatalog();
+ }
+ return null;
+ }
+ public IPersistentType persistentType(String fullyQualifiedTypeName) {
+ return null;
+ }
+ };
+ }
+
+ protected ConnectionProfile getProjectConnectionProfile() {
+ return this.project.connectionProfile();
+ }
+
+ //TODO is the userName what we want to use, or do we need a preference for the user?
+ private String getProjectUserSchema() {
+ ConnectionProfile profile = this.getProjectConnectionProfile();
+ return profile.getUserName();
+ }
+
+ private String getProjectUserCatalog() {
+ ConnectionProfile profile = this.getProjectConnectionProfile();
+ return profile.getCatalogName();
+ }
+
+// public IGeneratorRepository generatorRepository(IPersistentType persistentType) {
+// for (PersistenceUnitContext context : this.persistenceUnitContexts) {
+// if (context.contains(persistentType)) {
+// context.getGeneratorRepository();
+// }
+// }
+// return NullGeneratorRepository.instance();
+// }
+
+ /* If this is true, it may be assumed that all the requirements are valid
+ * for further validation. For example, if this is true at the point we
+ * are validating persistence units, it may be assumed that there is a
+ * single persistence.xml and that it has valid content down to the
+ * persistence unit level. */
+ private boolean okToContinueValidation = true;
+
+ public void addToMessages(List<IMessage> messages) {
+ super.addToMessages(messages);
+ addProjectLevelMessages(messages);
+ if (okToContinueValidation) {
+ for (PersistenceUnitContext context : persistenceUnitContexts) {
+ context.addToMessages(messages);
+ }
+ }
+ }
+
+ protected void addProjectLevelMessages(List<IMessage> messages) {
+ addConnectionMessages(messages);
+ addNoPersistenceXmlMessage(messages);
+ addMultiplePersistenceXmlMessage(messages);
+ addInvalidPersistenceXmlContentMessage(messages);
+ addNoPersistenceUnitMessage(messages);
+ addMultiplePersistenceUnitMessage(messages);
+ }
+
+ protected void addConnectionMessages(List<IMessage> messages) {
+ addNoConnectionMessage(messages);
+ addInactiveConnectionMessage(messages);
+ }
+
+ protected boolean okToProceedForConnectionValidation = true;
+
+ protected void addNoConnectionMessage(List<IMessage> messages) {
+ Connection connection = project.getDataSource().getConnection();
+ if (connection == null) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.NORMAL_SEVERITY,
+ IJpaValidationMessages.PROJECT_NO_CONNECTION,
+ project)
+ );
+ okToProceedForConnectionValidation = false;
+ }
+ }
+
+ protected void addInactiveConnectionMessage(List<IMessage> messages) {
+ Connection connection = project.getDataSource().getConnection();
+ if (okToProceedForConnectionValidation && ! connection.isConnected()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.NORMAL_SEVERITY,
+ IJpaValidationMessages.PROJECT_INACTIVE_CONNECTION,
+ new String[] {project.getDataSource().getConnectionProfileName()},
+ project)
+ );
+ }
+ okToProceedForConnectionValidation = true;
+ }
+
+ protected void addNoPersistenceXmlMessage(List<IMessage> messages) {
+ if (validPersistenceXmlFiles.isEmpty()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.PROJECT_NO_PERSISTENCE_XML,
+ project)
+ );
+ okToContinueValidation = false;
+ }
+ }
+
+ protected void addMultiplePersistenceXmlMessage(List<IMessage> messages) {
+ if (validPersistenceXmlFiles.size() > 1) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.PROJECT_MULTIPLE_PERSISTENCE_XML,
+ project)
+ );
+ okToContinueValidation = false;
+ }
+ }
+
+ protected void addInvalidPersistenceXmlContentMessage(List<IMessage> messages) {
+ if (validPersistenceXmlFiles.size() == 1) {
+ IJpaFile persistenceXmlFile = (IJpaFile) validPersistenceXmlFiles.get(0);
+ if (getPersistence(persistenceXmlFile) == null) {
+ PersistenceXmlRootContentNode root =
+ (PersistenceXmlRootContentNode) persistenceXmlFile.getContent();
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.PERSISTENCE_XML_INVALID_CONTENT,
+ root, root.getTextRange())
+ );
+ okToContinueValidation = false;
+ }
+ }
+ }
+
+ protected void addNoPersistenceUnitMessage(List<IMessage> messages) {
+ if (okToContinueValidation && persistenceUnitContexts.size() == 0) {
+ IJpaFile validPersistenceXml = validPersistenceXmlFiles.get(0);
+ Persistence persistence = getPersistence(validPersistenceXml);
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.PERSISTENCE_NO_PERSISTENCE_UNIT,
+ persistence, persistence.getTextRange())
+ );
+ okToContinueValidation = false;
+ }
+ }
+
+ protected void addMultiplePersistenceUnitMessage(List<IMessage> messages) {
+ if (okToContinueValidation && persistenceUnitContexts.size() > 1) {
+ IJpaFile validPersistenceXml = validPersistenceXmlFiles.get(0);
+ Persistence persistence = getPersistence(validPersistenceXml);
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.PERSISTENCE_MULTIPLE_PERSISTENCE_UNITS,
+ persistence, persistence.getTextRange())
+ );
+ okToContinueValidation = false;
+ }
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/ColumnContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/ColumnContext.java
new file mode 100644
index 0000000000..b042c99fb3
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/ColumnContext.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import org.eclipse.jpt.core.internal.mappings.IColumn;
+
+public class ColumnContext extends BaseContext
+{
+ private IColumn column;
+
+ public ColumnContext(IContext parentContext, IColumn column) {
+ super(parentContext);
+ this.column = column;
+ }
+
+ @Override
+ protected void initialize() {}
+
+ public IColumn getColumn() {
+ return this.column;
+ }
+
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ this.column.refreshDefaults(defaultsContext);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/DefaultsContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/DefaultsContext.java
new file mode 100644
index 0000000000..cbd0dea70d
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/DefaultsContext.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import org.eclipse.jpt.core.internal.IPersistentType;
+
+public interface DefaultsContext
+{
+ /**
+ * Return the default for the given key. Se BaseJpaPlatform
+ * for the defaults supported by it.
+ * @param key
+ * @return
+ */
+ Object getDefault(String key);
+
+ /**
+ * Return the IPersistentType with the given name found in the scope
+ * of the persistence unit
+ * @param fullyQualifiedTypeName
+ * @return
+ */
+ IPersistentType persistentType(String fullyQualifiedTypeName);
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/GeneratorRepository.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/GeneratorRepository.java
new file mode 100644
index 0000000000..e116ab9b2d
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/GeneratorRepository.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import org.eclipse.jpt.core.internal.mappings.IGenerator;
+
+/**
+ * For now we are not going to handle duplicates. The spec says that it is undefined
+ * when you have multiple generators with the same name. A generator with the
+ * same name in an orm.xml file overrides one in the java. Duplicates will just
+ * be handled in a last in wins fashion.
+ *
+ * At some point we could handle duplicates that aren't overrides with a warning. It
+ * is difficult to tell the difference between an override and a duplicate so
+ * right now we are not handling it.
+ */
+public class GeneratorRepository implements IGeneratorRepository
+{
+
+ private Map<String, IGenerator> generators;
+
+ public GeneratorRepository() {
+ super();
+ this.generators = new HashMap<String, IGenerator>();
+ }
+
+ /**
+ * Add the given IGenerator to the Map of generators. If there is
+ * already a generator with the given name it will be replaced in the map
+ * by the new one.
+ * @param generator
+ */
+ public void addGenerator(IGenerator generator) {
+ this.generators.put(generator.getName(), generator);
+ }
+
+ public IGenerator generator(String name) {
+ return this.generators.get(name);
+ }
+
+ public Iterator<String> generatorNames() {
+ return this.generators.keySet().iterator();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/IContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/IContext.java
new file mode 100644
index 0000000000..507258582c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/IContext.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.List;
+import org.eclipse.jpt.core.internal.IJpaPlatform;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public interface IContext
+{
+ IJpaPlatform getPlatform();
+
+ IContext getParentContext();
+
+ void refreshDefaults(DefaultsContext defaults);
+
+ void addToMessages(List<IMessage> messages);
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/IGeneratorRepository.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/IGeneratorRepository.java
new file mode 100644
index 0000000000..c904fbb305
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/IGeneratorRepository.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.Iterator;
+import org.eclipse.jpt.core.internal.mappings.IGenerator;
+
+public interface IGeneratorRepository
+{
+ /**
+ * Return all generator names for this persistence unit.
+ * 1 namespace per persistence unit for all generators in xml and java
+ * @return
+ */
+ Iterator<String> generatorNames();
+
+ /**
+ * Return the Generator with the given name
+ * @param name
+ * @return
+ */
+ IGenerator generator(String name);
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaAttributeContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaAttributeContext.java
new file mode 100644
index 0000000000..d993187d99
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaAttributeContext.java
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.List;
+import org.eclipse.jpt.core.internal.IAttributeMapping;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMapping;
+import org.eclipse.jpt.core.internal.validation.IJpaValidationMessages;
+import org.eclipse.jpt.core.internal.validation.JpaValidationMessages;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public abstract class JavaAttributeContext extends BaseContext
+{
+ protected IJavaAttributeMapping attributeMapping;
+
+ public JavaAttributeContext(IContext parentContext, IJavaAttributeMapping javaAttributeMapping) {
+ super(parentContext);
+ this.attributeMapping = javaAttributeMapping;
+ }
+
+ @Override
+ protected void initialize() {}
+
+ protected void populateGeneratorRepository(GeneratorRepository generatorRepository) {
+ //do nothing, override as necessary
+ }
+
+ protected PersistenceUnitContext persistenceUnitContext() {
+ return (PersistenceUnitContext) persistentAttributeContext().javaTypeContext().getParentContext();
+ }
+
+ protected JavaPersistentAttributeContext persistentAttributeContext() {
+ return (JavaPersistentAttributeContext) getParentContext();
+ }
+
+ protected boolean embeddableOwned() {
+ return getMapping().typeMapping().getKey() == IMappingKeys.EMBEDDABLE_TYPE_MAPPING_KEY;
+ }
+
+ protected boolean entityOwned() {
+ return getMapping().typeMapping().getKey() == IMappingKeys.ENTITY_TYPE_MAPPING_KEY;
+ }
+
+ public final void refreshDefaults(DefaultsContext defaultsContext) {
+ defaultsContext = wrapDefaultsContext(defaultsContext);
+ refreshDefaultsInternal(defaultsContext);
+ }
+
+ protected void refreshDefaultsInternal(DefaultsContext defaultsContext) {
+ this.attributeMapping.refreshDefaults(defaultsContext);
+ }
+
+ protected IAttributeMapping getMapping() {
+ return this.attributeMapping;
+ }
+
+ public final DefaultsContext wrapDefaultsContext(final DefaultsContext defaultsContext) {
+ return new DefaultsContext() {
+ public Object getDefault(String key) {
+ return JavaAttributeContext.this.getDefault(key, defaultsContext);
+ }
+
+ public IPersistentType persistentType(String fullyQualifiedTypeName) {
+ return defaultsContext.persistentType(fullyQualifiedTypeName);
+ }
+ };
+ }
+
+ protected Object getDefault(String key, DefaultsContext defaultsContext) {
+ if (key.equals(BaseJpaPlatform.DEFAULT_COLUMN_NAME_KEY)) {
+ return getMapping().getPersistentAttribute().getName();
+ }
+ return defaultsContext.getDefault(key);
+ }
+
+ @Override
+ public void addToMessages(List<IMessage> messages) {
+ super.addToMessages(messages);
+
+ addInvalidMappingMessage(messages);
+ }
+
+ protected void addInvalidMappingMessage(List<IMessage> messages) {
+ IAttributeMapping attributeMapping = getMapping();
+ ITypeMapping typeMapping = attributeMapping.typeMapping();
+ if (! typeMapping.attributeMappingKeyAllowed(attributeMapping.getKey())) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.PERSISTENT_ATTRIBUTE_INVALID_MAPPING,
+ new String[] {attributeMapping.getPersistentAttribute().getName()},
+ attributeMapping, attributeMapping.getTextRange())
+ );
+ }
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaBasicContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaBasicContext.java
new file mode 100644
index 0000000000..73bd39aea5
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaBasicContext.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.List;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaBasic;
+import org.eclipse.jpt.core.internal.mappings.IColumn;
+import org.eclipse.jpt.core.internal.validation.IJpaValidationMessages;
+import org.eclipse.jpt.core.internal.validation.JpaValidationMessages;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public class JavaBasicContext extends JavaAttributeContext
+{
+ private ColumnContext columnContext;
+
+ public JavaBasicContext(IContext parentContext, JavaBasic javaBasic) {
+ super(parentContext, javaBasic);
+ this.columnContext = new ColumnContext(this, javaBasic.getColumn());
+ }
+
+ protected JavaBasic getBasic() {
+ return (JavaBasic) attributeMapping;
+ }
+
+ @Override
+ public void refreshDefaultsInternal(DefaultsContext defaultsContext) {
+ super.refreshDefaultsInternal(defaultsContext);
+ this.columnContext.refreshDefaults(defaultsContext);
+ }
+
+ public void addToMessages(List<IMessage> messages) {
+ super.addToMessages(messages);
+
+ addColumnMessages(messages);
+ }
+
+ protected void addColumnMessages(List<IMessage> messages) {
+ JavaBasic basic = getBasic();
+ ITypeMapping typeMapping = basic.typeMapping();
+ IColumn column = basic.getColumn();
+ String table = column.getTable();
+ boolean doContinue = entityOwned() && column.isConnected();
+
+ if (doContinue && typeMapping.tableNameIsInvalid(table)) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.COLUMN_UNRESOLVED_TABLE,
+ new String[] {table, column.getName()},
+ column, column.getTableTextRange())
+ );
+ doContinue = false;
+ }
+
+ if (doContinue && ! column.isResolved()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.COLUMN_UNRESOLVED_NAME,
+ new String[] {column.getName()},
+ column, column.getNameTextRange())
+ );
+ }
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaEmbeddableContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaEmbeddableContext.java
new file mode 100644
index 0000000000..5a2500aafb
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaEmbeddableContext.java
@@ -0,0 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbeddable;
+
+public class JavaEmbeddableContext extends JavaTypeContext
+{
+ public JavaEmbeddableContext(IContext parentContext, JavaEmbeddable mapping) {
+ super(parentContext, mapping);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaEmbeddedContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaEmbeddedContext.java
new file mode 100644
index 0000000000..64cf24f8ac
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaEmbeddedContext.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaAttributeOverride;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbedded;
+import org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsFactory;
+import org.eclipse.jpt.core.internal.mappings.IAttributeOverride;
+import org.eclipse.jpt.core.internal.mappings.IEmbedded;
+import org.eclipse.jpt.utility.internal.CollectionTools;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public class JavaEmbeddedContext extends JavaAttributeContext
+{
+ private Collection<AttributeOverrideContext> attributeOverrideContexts;
+
+ public JavaEmbeddedContext(IContext parentContext, JavaEmbedded javaEmbedded) {
+ super(parentContext, javaEmbedded);
+ this.attributeOverrideContexts = buildAttributeOverrideContexts();
+ }
+
+ protected Collection<AttributeOverrideContext> buildAttributeOverrideContexts() {
+ Collection<AttributeOverrideContext> contexts = new ArrayList<AttributeOverrideContext>();
+ for (IAttributeOverride attributeOverride : getEmbedded().getAttributeOverrides()) {
+ contexts.add(new AttributeOverrideContext(this, attributeOverride));
+ }
+
+ return contexts;
+ }
+
+ private IEmbedded getEmbedded() {
+ return (IEmbedded) getMapping();
+ }
+
+ public void refreshDefaultsInternal(DefaultsContext defaultsContext) {
+ super.refreshDefaultsInternal(defaultsContext);
+ refreshDefaultAttributeOverrides();
+ for (AttributeOverrideContext context : this.attributeOverrideContexts) {
+ context.refreshDefaults(defaultsContext);
+ }
+ }
+
+ protected void refreshDefaultAttributeOverrides() {
+ for (Iterator<String> i = getEmbedded().allOverridableAttributeNames(); i.hasNext(); ) {
+ String override = i.next();
+ if (!getEmbedded().containsAttributeOverride(override)) {
+ JavaAttributeOverride attributeOverride = JpaJavaMappingsFactory.eINSTANCE.createJavaAttributeOverride(new IEmbedded.AttributeOverrideOwner(getEmbedded()), getEmbedded().getPersistentAttribute().getAttribute());
+ attributeOverride.setName(override);
+ getEmbedded().getDefaultAttributeOverrides().add(attributeOverride);
+ }
+ }
+
+ Collection<String> attributeNames = CollectionTools.collection(getEmbedded().allOverridableAttributeNames());
+
+ //remove any default mappings that are not included in the attributeNames collection
+ Collection<IAttributeOverride> overridesToRemove = new ArrayList<IAttributeOverride>();
+ for (IAttributeOverride attributeOverride : getEmbedded().getDefaultAttributeOverrides()) {
+ if (!attributeNames.contains(attributeOverride.getName())
+ || getEmbedded().containsSpecifiedAttributeOverride(attributeOverride.getName())) {
+ overridesToRemove.add(attributeOverride);
+ }
+ }
+
+ getEmbedded().getDefaultAttributeOverrides().removeAll(overridesToRemove);
+ }
+
+ public void addToMessages(List<IMessage> messages) {
+ super.addToMessages(messages);
+
+ for (AttributeOverrideContext aoContext : attributeOverrideContexts) {
+ aoContext.addToMessages(messages);
+ }
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaEmbeddedIdContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaEmbeddedIdContext.java
new file mode 100644
index 0000000000..99be7d12fd
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaEmbeddedIdContext.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.List;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbeddedId;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public class JavaEmbeddedIdContext extends JavaAttributeContext
+{
+ public JavaEmbeddedIdContext(IContext parentContext, JavaEmbeddedId javaEmbeddedId) {
+ super(parentContext, javaEmbeddedId);
+ }
+
+ public void addToMessages(List<IMessage> messages) {
+ super.addToMessages(messages);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaEntityContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaEntityContext.java
new file mode 100644
index 0000000000..f003f7abec
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaEntityContext.java
@@ -0,0 +1,288 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.IPersistentAttribute;
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaAssociationOverride;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaAttributeOverride;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaEntity;
+import org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsFactory;
+import org.eclipse.jpt.core.internal.mappings.IAssociationOverride;
+import org.eclipse.jpt.core.internal.mappings.IAttributeOverride;
+import org.eclipse.jpt.core.internal.mappings.IEntity;
+import org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.ISecondaryTable;
+import org.eclipse.jpt.core.internal.mappings.ISequenceGenerator;
+import org.eclipse.jpt.core.internal.mappings.ITable;
+import org.eclipse.jpt.core.internal.mappings.ITableGenerator;
+import org.eclipse.jpt.core.internal.validation.IJpaValidationMessages;
+import org.eclipse.jpt.core.internal.validation.JpaValidationMessages;
+import org.eclipse.jpt.utility.internal.CollectionTools;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public class JavaEntityContext extends JavaTypeContext
+{
+ private TableContext tableContext;
+
+ private Collection<TableContext> secondaryTableContexts;
+
+ private Collection<AttributeOverrideContext> attributeOverrideContexts;
+
+ private Collection<AssociationOverrideContext> associationOverrideContexts;
+
+ private Collection<PrimaryKeyJoinColumnContext> pkJoinColumnContexts;
+
+ public JavaEntityContext(IContext parentContext, JavaEntity javaEntity) {
+ super(parentContext, javaEntity);
+ this.tableContext = buildTableContext(javaEntity);
+ this.attributeOverrideContexts = buildAttributeOverrideContexts();
+ this.associationOverrideContexts = buildAssociationOverrideContexts();
+ this.secondaryTableContexts = buildSecondaryTableContexts();
+ this.pkJoinColumnContexts = buildPkJoinColumnContexts();
+ }
+
+ protected JavaEntity getEntity() {
+ return (JavaEntity) getTypeMapping();
+ }
+
+ protected TableContext buildTableContext(JavaEntity javaEntity) {
+ return new TableContext(this, javaEntity.getTable());
+ }
+
+ protected Collection<AttributeOverrideContext> buildAttributeOverrideContexts() {
+ Collection<AttributeOverrideContext> contexts = new ArrayList<AttributeOverrideContext>();
+ for (IAttributeOverride attributeOverride : getEntity().getAttributeOverrides()) {
+ contexts.add(new AttributeOverrideContext(this, attributeOverride));
+ }
+
+ return contexts;
+ }
+
+ //only support default joinColumn information for the default association overrides,
+ //AssociationOverride has no defaults, the name and joinColumns must be specified
+ protected Collection<AssociationOverrideContext> buildAssociationOverrideContexts() {
+ Collection<AssociationOverrideContext> contexts = new ArrayList<AssociationOverrideContext>();
+ for (IAssociationOverride associationOverride : getEntity().getDefaultAssociationOverrides()) {
+ contexts.add(new AssociationOverrideContext(this, associationOverride));
+ }
+
+ return contexts;
+ }
+
+ protected Collection<TableContext> buildSecondaryTableContexts() {
+ Collection<TableContext> contexts = new ArrayList<TableContext>();
+ for (ISecondaryTable secondaryTable : getEntity().getSecondaryTables()) {
+ contexts.add(new TableContext(this, secondaryTable));
+ }
+
+ return contexts;
+ }
+
+ protected Collection<PrimaryKeyJoinColumnContext> buildPkJoinColumnContexts() {
+ Collection<PrimaryKeyJoinColumnContext> contexts = new ArrayList<PrimaryKeyJoinColumnContext>();
+ for (IPrimaryKeyJoinColumn pkJoinColumn : getEntity().getPrimaryKeyJoinColumns()) {
+ contexts.add(new PrimaryKeyJoinColumnContext(this, pkJoinColumn));
+ }
+
+ return contexts;
+ }
+
+ /**
+ * Mappings files will populate the generator repository after Java files.
+ * This will cause the mapping files to override any generators with the same name
+ * in the java
+ */
+ protected void populateGeneratorRepository(GeneratorRepository generatorRepository) {
+ ITableGenerator tableGenerator = getEntity().getTableGenerator();
+ if (tableGenerator != null) {
+ generatorRepository.addGenerator(tableGenerator);
+ }
+ ISequenceGenerator sequenceGenerator = getEntity().getSequenceGenerator();
+ if (sequenceGenerator != null) {
+ generatorRepository.addGenerator(sequenceGenerator);
+ }
+ }
+
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ defaultsContext = wrapDefaultsContext(defaultsContext);
+ super.refreshDefaults(defaultsContext);
+
+ if (this.tableContext != null) {
+ this.tableContext.refreshDefaults(defaultsContext);
+ }
+ refreshDefaultAttributeOverrides();
+ refreshDefaultAssociationOverrides();
+ for (TableContext context : this.secondaryTableContexts) {
+ context.refreshDefaults(defaultsContext);
+ }
+ for (AttributeOverrideContext context : this.attributeOverrideContexts) {
+ context.refreshDefaults(defaultsContext);
+ }
+ for (AssociationOverrideContext context : this.associationOverrideContexts) {
+ context.refreshDefaults(defaultsContext);
+ }
+ for (PrimaryKeyJoinColumnContext context : this.pkJoinColumnContexts) {
+ context.refreshDefaults(defaultsContext);
+ }
+ }
+
+ public DefaultsContext wrapDefaultsContext(final DefaultsContext defaultsContext) {
+ DefaultsContext wrappedDefaultsContext = new DefaultsContext() {
+ public Object getDefault(String key) {
+ if (key.equals(BaseJpaPlatform.DEFAULT_TABLE_NAME_KEY)) {
+ if (getEntity().rootEntity().getInheritanceStrategy().isSingleTable()) {
+ IEntity rootEntity = getEntity().rootEntity();
+ if (rootEntity == getEntity()) {
+ return rootEntity.getName();
+ }
+ return rootEntity.getTable().getName();
+ }
+ return getEntity().getName();
+ }
+ return defaultsContext.getDefault(key);
+ }
+
+ public IPersistentType persistentType(String fullyQualifiedTypeName) {
+ return defaultsContext.persistentType(fullyQualifiedTypeName);
+ }
+ };
+ if (this.tableContext != null) {
+ return this.tableContext.wrapDefaultsContext(wrappedDefaultsContext);
+ }
+ return wrappedDefaultsContext;
+ }
+
+ protected void refreshDefaultAttributeOverrides() {
+ for (Iterator<String> i = getEntity().allOverridableAttributeNames(); i.hasNext(); ) {
+ String override = i.next();
+ if (!getEntity().containsAttributeOverride(override)) {
+ JavaAttributeOverride attributeOverride = JpaJavaMappingsFactory.eINSTANCE.createJavaAttributeOverride(new IEntity.AttributeOverrideOwner(getEntity()), getEntity().getType());
+ getEntity().getDefaultAttributeOverrides().add(attributeOverride);
+ attributeOverride.setName(override);
+ }
+
+ }
+
+ Collection<String> attributeNames = CollectionTools.collection(getEntity().allOverridableAttributeNames());
+
+ //remove any default mappings that are not included in the attributeNames collection
+ Collection<IAttributeOverride> overridesToRemove = new ArrayList<IAttributeOverride>();
+ for (IAttributeOverride attributeOverride : getEntity().getDefaultAttributeOverrides()) {
+ if (!attributeNames.contains(attributeOverride.getName())
+ || getEntity().containsSpecifiedAttributeOverride(attributeOverride.getName())) {
+ overridesToRemove.add(attributeOverride);
+ }
+ }
+
+ getEntity().getDefaultAttributeOverrides().removeAll(overridesToRemove);
+ }
+
+ protected void refreshDefaultAssociationOverrides() {
+ for (Iterator<String> i = getEntity().allOverridableAssociationNames(); i.hasNext(); ) {
+ String override = i.next();
+ if (!getEntity().containsAssociationOverride(override)) {
+ JavaAssociationOverride associationOverride = JpaJavaMappingsFactory.eINSTANCE.createJavaAssociationOverride(new IEntity.AssociationOverrideOwner(getEntity()), getEntity().getType());
+ associationOverride.setName(override);
+ getEntity().getDefaultAssociationOverrides().add(associationOverride);
+ }
+
+ }
+
+ Collection<String> attributeNames = CollectionTools.collection(getEntity().allOverridableAssociationNames());
+
+ //remove any default mappings that are not included in the attributeNames collection
+ Collection<IAssociationOverride> overridesToRemove = new ArrayList<IAssociationOverride>();
+ for (IAssociationOverride associationOverride : getEntity().getDefaultAssociationOverrides()) {
+ if (!attributeNames.contains(associationOverride.getName())
+ || getEntity().containsSpecifiedAssociationOverride(associationOverride.getName())) {
+ overridesToRemove.add(associationOverride);
+ }
+ }
+
+ getEntity().getDefaultAssociationOverrides().removeAll(overridesToRemove);
+ }
+
+
+ public void addToMessages(List<IMessage> messages) {
+ super.addToMessages(messages);
+ addTableMessages(messages);
+ addIdMessages(messages);
+
+ for (AttributeOverrideContext aoContext : attributeOverrideContexts) {
+ aoContext.addToMessages(messages);
+ }
+
+ for (AssociationOverrideContext aoContext : associationOverrideContexts) {
+ aoContext.addToMessages(messages);
+ }
+ }
+
+ protected void addTableMessages(List<IMessage> messages) {
+ ITable table = getEntity().getTable();
+ boolean doContinue = table.isConnected();
+ String schema = table.getSchema();
+
+ if (doContinue && ! table.hasResolvedSchema()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.TABLE_UNRESOLVED_SCHEMA,
+ new String[] {schema, table.getName()},
+ table, table.getSchemaTextRange())
+ );
+ doContinue = false;
+ }
+
+ if (doContinue && ! table.isResolved()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.TABLE_UNRESOLVED_NAME,
+ new String[] {table.getName()},
+ table, table.getNameTextRange())
+ );
+ }
+ }
+
+ protected void addIdMessages(List<IMessage> messages) {
+ addNoIdMessage(messages);
+
+ }
+
+ protected void addNoIdMessage(List<IMessage> messages) {
+ IEntity entity = getEntity();
+ if (entityHasNoId()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.ENTITY_NO_ID,
+ new String[] {entity.getName()},
+ entity, entity.getTextRange())
+ );
+ }
+ }
+
+ private boolean entityHasNoId() {
+ for (Iterator<IPersistentAttribute> stream = getEntity().getPersistentType().allAttributes(); stream.hasNext(); ) {
+ IPersistentAttribute persistentAttribute = stream.next();
+ String mappingKey = persistentAttribute.getMappingKey();
+ if (mappingKey == IMappingKeys.ID_ATTRIBUTE_MAPPING_KEY
+ || mappingKey == IMappingKeys.EMBEDDED_ID_ATTRIBUTE_MAPPING_KEY) {
+ return false;
+ }
+ }
+ return true;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaIdContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaIdContext.java
new file mode 100644
index 0000000000..7550371ce0
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaIdContext.java
@@ -0,0 +1,117 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.List;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaId;
+import org.eclipse.jpt.core.internal.mappings.IColumn;
+import org.eclipse.jpt.core.internal.mappings.IGeneratedValue;
+import org.eclipse.jpt.core.internal.mappings.IGenerator;
+import org.eclipse.jpt.core.internal.mappings.ISequenceGenerator;
+import org.eclipse.jpt.core.internal.mappings.ITableGenerator;
+import org.eclipse.jpt.core.internal.validation.IJpaValidationMessages;
+import org.eclipse.jpt.core.internal.validation.JpaValidationMessages;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public class JavaIdContext extends JavaAttributeContext
+{
+ private ColumnContext columnContext;
+
+ public JavaIdContext(IContext parentContext, JavaId javaId) {
+ super(parentContext, javaId);
+ this.columnContext = new ColumnContext(this, javaId.getColumn());
+ }
+
+ protected JavaId getId() {
+ return (JavaId) attributeMapping;
+ }
+
+ protected void populateGeneratorRepository(GeneratorRepository generatorRepository) {
+ ITableGenerator tableGenerator = getId().getTableGenerator();
+ if (tableGenerator != null) {
+ generatorRepository.addGenerator(tableGenerator);
+ }
+ ISequenceGenerator sequenceGenerator = getId().getSequenceGenerator();
+ if (sequenceGenerator != null) {
+ generatorRepository.addGenerator(sequenceGenerator);
+ }
+ }
+
+ @Override
+ public void refreshDefaultsInternal(DefaultsContext defaultsContext) {
+ super.refreshDefaultsInternal(defaultsContext);
+ this.columnContext.refreshDefaults(defaultsContext);
+ ITableGenerator tableGenerator = getId().getTableGenerator();
+ if (tableGenerator != null) {
+ tableGenerator.refreshDefaults(defaultsContext);
+ }
+ }
+
+ public void addToMessages(List<IMessage> messages) {
+ super.addToMessages(messages);
+
+ addColumnMessages(messages);
+ addGeneratorMessages(messages);
+ }
+
+ protected void addColumnMessages(List<IMessage> messages) {
+ JavaId id = getId();
+ ITypeMapping typeMapping = id.typeMapping();
+ IColumn column = id.getColumn();
+ String table = column.getTable();
+ boolean doContinue = entityOwned() && column.isConnected();
+
+ if (doContinue && typeMapping.tableNameIsInvalid(table)) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.COLUMN_UNRESOLVED_TABLE,
+ new String[] {table, column.getName()},
+ column, column.getTableTextRange())
+ );
+ doContinue = false;
+ }
+
+ if (doContinue && ! column.isResolved()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.COLUMN_UNRESOLVED_NAME,
+ new String[] {column.getName()},
+ column, column.getNameTextRange())
+ );
+ }
+ }
+
+ protected void addGeneratorMessages(List<IMessage> messages) {
+ JavaId id = getId();
+ IGeneratedValue generatedValue = id.getGeneratedValue();
+ if (generatedValue == null) {
+ return;
+ }
+ String generatorName = generatedValue.getGenerator();
+ if (generatorName == null) {
+ return;
+ }
+ IGeneratorRepository generatorRepository = persistenceUnitContext().getGeneratorRepository();
+ IGenerator generator = generatorRepository.generator(generatorName);
+
+ if (generator == null) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.GENERATED_VALUE_UNRESOLVED_GENERATOR,
+ new String[] {generatorName},
+ generatedValue, generatedValue.getTextRange())
+ );
+ }
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaManyToManyContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaManyToManyContext.java
new file mode 100644
index 0000000000..14849d2dc1
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaManyToManyContext.java
@@ -0,0 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaManyToMany;
+
+public class JavaManyToManyContext extends JavaMultiRelationshipMappingContext
+{
+ public JavaManyToManyContext(IContext parentContext, JavaManyToMany javaManyToMany) {
+ super(parentContext, javaManyToMany);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaManyToOneContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaManyToOneContext.java
new file mode 100644
index 0000000000..9b6876d9bd
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaManyToOneContext.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.List;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaManyToOne;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public class JavaManyToOneContext extends JavaSingleRelationshipMappingContext
+{
+ public JavaManyToOneContext(IContext parentContext, JavaManyToOne javaManyToOne) {
+ super(parentContext, javaManyToOne);
+ }
+
+ public void addToMessages(List<IMessage> messages) {
+ super.addToMessages(messages);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaMappedSuperclassContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaMappedSuperclassContext.java
new file mode 100644
index 0000000000..14932212e8
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaMappedSuperclassContext.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.List;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaMappedSuperclass;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public class JavaMappedSuperclassContext extends JavaTypeContext
+{
+ public JavaMappedSuperclassContext(IContext parentContext, JavaMappedSuperclass mapping) {
+ super(parentContext, mapping);
+ }
+
+ public void addToMessages(List<IMessage> messages) {
+ // TODO Auto-generated method stub
+
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaMultiRelationshipMappingContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaMultiRelationshipMappingContext.java
new file mode 100644
index 0000000000..70e356a8b5
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaMultiRelationshipMappingContext.java
@@ -0,0 +1,157 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaMultiRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.IEntity;
+import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.IJoinTable;
+import org.eclipse.jpt.core.internal.mappings.IMultiRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.ITable;
+import org.eclipse.jpt.core.internal.validation.IJpaValidationMessages;
+import org.eclipse.jpt.core.internal.validation.JpaValidationMessages;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public abstract class JavaMultiRelationshipMappingContext extends JavaRelationshipMappingContext
+{
+ private JoinTableContext joinTableContext;
+
+
+ protected JavaMultiRelationshipMappingContext(
+ IContext parentContext, JavaMultiRelationshipMapping mapping) {
+ super(parentContext, mapping);
+ this.joinTableContext = new JoinTableContext(this, mapping.getJoinTable());
+ }
+
+ @Override
+ public void refreshDefaultsInternal(DefaultsContext defaultsContext) {
+ super.refreshDefaultsInternal(defaultsContext);
+ this.joinTableContext.refreshDefaults(defaultsContext);
+ getMapping().getOrderBy().refreshDefaults(defaultsContext);
+ }
+
+ @Override
+ protected Object getDefault(String key, DefaultsContext defaultsContext) {
+ if (key.equals(BaseJpaPlatform.DEFAULT_JOIN_TABLE_NAME_KEY)) {
+ return joinTableDefaultName(defaultsContext);
+ }
+ return super.getDefault(key, defaultsContext);
+ }
+
+ protected String joinTableDefaultName(DefaultsContext defaultsContext) {
+ IEntity entity = getMapping().getEntity();
+ if (entity == null) {
+ return null;
+ }
+ ITable owningTable = entity.getTable();
+ if (owningTable == null) {
+ return null;
+ }
+ IEntity targetEntity = targetEntity(defaultsContext);
+ if (targetEntity == null) {
+ return null;
+ }
+ ITable targetTable = targetEntity.getTable();
+ return (targetTable == null) ? null : owningTable.getName() + "_" + targetTable.getName();
+ }
+
+
+ protected IMultiRelationshipMapping getMapping() {
+ return (IMultiRelationshipMapping) super.getMapping();
+ }
+
+ public void addToMessages(List<IMessage> messages) {
+ super.addToMessages(messages);
+
+ addJoinTableMessages(messages);
+ }
+
+ protected void addJoinTableMessages(List<IMessage> messages) {
+ if (getMapping().getMappedBy() != null) {
+ //do not add joinTable problems for the non-owning side, this is defined
+ //by the side that specifies mappedBy
+ return;
+ }
+ IJoinTable joinTable = getMapping().getJoinTable();
+ boolean doContinue = joinTable.isConnected();
+ String schema = joinTable.getSchema();
+
+ if (doContinue && ! joinTable.hasResolvedSchema()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.JOIN_TABLE_UNRESOLVED_SCHEMA,
+ new String[] {schema, joinTable.getName()},
+ joinTable, joinTable.getSchemaTextRange())
+ );
+ doContinue = false;
+ }
+
+ if (doContinue && ! joinTable.isResolved()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.JOIN_TABLE_UNRESOLVED_NAME,
+ new String[] {joinTable.getName()},
+ joinTable, joinTable.getNameTextRange())
+ );
+ doContinue = false;
+ }
+
+ for (Iterator<IJoinColumn> stream = joinTable.getJoinColumns().iterator(); stream.hasNext(); ) {
+ IJoinColumn joinColumn = stream.next();
+
+ if (doContinue && ! joinColumn.isResolved()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.JOIN_COLUMN_UNRESOLVED_NAME,
+ new String[] {joinColumn.getName()},
+ joinColumn, joinColumn.getNameTextRange())
+ );
+ }
+
+ if (doContinue && ! joinColumn.isReferencedColumnResolved()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.JOIN_COLUMN_REFERENCED_COLUMN_UNRESOLVED_NAME,
+ new String[] {joinColumn.getReferencedColumnName(), joinColumn.getName()},
+ joinColumn, joinColumn.getReferencedColumnNameTextRange())
+ );
+ }
+ }
+
+ for (Iterator<IJoinColumn> stream = joinTable.getInverseJoinColumns().iterator(); stream.hasNext(); ) {
+ IJoinColumn joinColumn = stream.next();
+
+ if (doContinue && ! joinColumn.isResolved()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.JOIN_COLUMN_UNRESOLVED_NAME,
+ new String[] {joinColumn.getName()},
+ joinColumn, joinColumn.getNameTextRange())
+ );
+ }
+
+ if (doContinue && ! joinColumn.isReferencedColumnResolved()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.JOIN_COLUMN_REFERENCED_COLUMN_UNRESOLVED_NAME,
+ new String[] {joinColumn.getReferencedColumnName(), joinColumn.getName()},
+ joinColumn, joinColumn.getReferencedColumnNameTextRange())
+ );
+ }
+ }
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaNullAttributeMappingContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaNullAttributeMappingContext.java
new file mode 100644
index 0000000000..36c85345bc
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaNullAttributeMappingContext.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.List;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaNullAttributeMapping;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public class JavaNullAttributeMappingContext extends JavaAttributeContext
+{
+ public JavaNullAttributeMappingContext(
+ IContext parentContext, JavaNullAttributeMapping javaNullAttributeMapping) {
+ super(parentContext, javaNullAttributeMapping);
+ }
+
+ public void addToMessages(List<IMessage> messages) {
+ super.addToMessages(messages);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaNullTypeMappingContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaNullTypeMappingContext.java
new file mode 100644
index 0000000000..93d371fb43
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaNullTypeMappingContext.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.List;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaNullTypeMapping;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public class JavaNullTypeMappingContext extends JavaTypeContext
+{
+ public JavaNullTypeMappingContext(IContext parentContext, JavaNullTypeMapping mapping) {
+ super(parentContext, mapping);
+ }
+
+ public void addToMessages(List<IMessage> messages) {
+ // no-op, nothing to really add
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaOneToManyContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaOneToManyContext.java
new file mode 100644
index 0000000000..603d50f56e
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaOneToManyContext.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.List;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaOneToMany;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public class JavaOneToManyContext extends JavaMultiRelationshipMappingContext
+{
+ public JavaOneToManyContext(IContext parentContext, JavaOneToMany javaOneToMany) {
+ super(parentContext, javaOneToMany);
+ }
+
+ @Override
+ protected void addJoinTableMessages(List<IMessage> messages) {
+ // TODO
+ // a 1-M doesn't *have* to have a join table
+ return;
+
+ //super.addJoinTableMessages(messages);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaOneToOneContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaOneToOneContext.java
new file mode 100644
index 0000000000..3adb478bff
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaOneToOneContext.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.List;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaOneToOne;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public class JavaOneToOneContext extends JavaSingleRelationshipMappingContext
+{
+ public JavaOneToOneContext(IContext parentContext, JavaOneToOne javaOneToOne) {
+ super(parentContext, javaOneToOne);
+ }
+
+ public void addToMessages(List<IMessage> messages) {
+ super.addToMessages(messages);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaPersistentAttributeContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaPersistentAttributeContext.java
new file mode 100644
index 0000000000..573dab570d
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaPersistentAttributeContext.java
@@ -0,0 +1,115 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.List;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.content.java.IJavaAttributeMapping;
+import org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public class JavaPersistentAttributeContext extends BaseContext
+{
+ private JavaPersistentAttribute javaPersistentAttribute;
+
+ private JavaAttributeContext javaAttributeMappingContext;
+
+ private JavaAttributeContext defaultJavaAttributeMappingContext;
+
+ public JavaPersistentAttributeContext(IContext parentContext, JavaPersistentAttribute javaPersistentAttribute) {
+ super(parentContext);
+ this.javaPersistentAttribute = javaPersistentAttribute;
+ this.javaAttributeMappingContext = buildJavaAttributeMappingContext();
+ }
+
+ protected JavaTypeContext javaTypeContext() {
+ return (JavaTypeContext) getParentContext();
+ }
+
+ protected JavaAttributeContext buildJavaAttributeMappingContext() {
+ IJavaAttributeMapping javaAttributeMapping = this.javaPersistentAttribute.getSpecifiedMapping();
+ if (javaAttributeMapping != null) {
+ return (JavaAttributeContext) getPlatform().buildJavaAttributeContext(this,javaAttributeMapping );
+ }
+ return null;
+ }
+
+ @Override
+ protected void initialize() {}
+
+ protected void populateGeneratorRepository(GeneratorRepository generatorRepository) {
+ if (this.javaAttributeMappingContext != null) {
+ this.javaAttributeMappingContext.populateGeneratorRepository(generatorRepository);
+ }
+ }
+
+ protected boolean embeddableOwned() {
+ return getPersistentAttribute().typeMapping().getKey() == IMappingKeys.EMBEDDABLE_TYPE_MAPPING_KEY;
+ }
+
+ protected boolean entityOwned() {
+ return getPersistentAttribute().typeMapping().getKey() == IMappingKeys.ENTITY_TYPE_MAPPING_KEY;
+ }
+
+ public final void refreshDefaults(DefaultsContext defaultsContext) {
+ defaultsContext = wrapDefaultsContext(defaultsContext);
+ refreshDefaultsInternal(defaultsContext);
+ }
+
+ protected void refreshDefaultsInternal(DefaultsContext defaultsContext) {
+ this.javaPersistentAttribute.refreshDefaults(defaultsContext);
+
+ if (this.javaAttributeMappingContext != null) {
+ this.javaAttributeMappingContext.refreshDefaults(defaultsContext);
+ this.defaultJavaAttributeMappingContext = null;
+ }
+ else {
+ IJavaAttributeMapping javaAttributeMapping = this.javaPersistentAttribute.getDefaultMapping();
+ if (javaAttributeMapping != null) {
+ this.defaultJavaAttributeMappingContext = (JavaAttributeContext) getPlatform().buildJavaAttributeContext(this, javaAttributeMapping);
+ this.defaultJavaAttributeMappingContext.refreshDefaults(defaultsContext);
+ }
+ }
+ }
+
+ protected JavaPersistentAttribute getPersistentAttribute() {
+ return this.javaPersistentAttribute;
+ }
+
+ public final DefaultsContext wrapDefaultsContext(final DefaultsContext defaultsContext) {
+ return new DefaultsContext() {
+ public Object getDefault(String key) {
+ return JavaPersistentAttributeContext.this.getDefault(key, defaultsContext);
+ }
+
+ public IPersistentType persistentType(String fullyQualifiedTypeName) {
+ return defaultsContext.persistentType(fullyQualifiedTypeName);
+ }
+ };
+ }
+
+ protected Object getDefault(String key, DefaultsContext defaultsContext) {
+ if (key.equals(BaseJpaPlatform.DEFAULT_COLUMN_NAME_KEY)) {
+ return getPersistentAttribute().getName();
+ }
+ return defaultsContext.getDefault(key);
+ }
+
+ @Override
+ public void addToMessages(List<IMessage> messages) {
+ super.addToMessages(messages);
+ if (this.javaAttributeMappingContext != null) {
+ this.javaAttributeMappingContext.addToMessages(messages);
+ }
+ else if (this.defaultJavaAttributeMappingContext != null) {
+ this.defaultJavaAttributeMappingContext.addToMessages(messages);
+ }
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaRelationshipMappingContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaRelationshipMappingContext.java
new file mode 100644
index 0000000000..8c5b1f40b7
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaRelationshipMappingContext.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.IEntity;
+import org.eclipse.jpt.core.internal.mappings.IRelationshipMapping;
+
+public abstract class JavaRelationshipMappingContext extends JavaAttributeContext
+{
+ protected JavaRelationshipMappingContext(IContext parentContext, JavaRelationshipMapping mapping) {
+ super(parentContext, mapping);
+ }
+
+ protected IRelationshipMapping getMapping() {
+ return (IRelationshipMapping) super.getMapping();
+ }
+
+ protected IEntity targetEntity(DefaultsContext defaultsContext) {
+ String targetEntity = getMapping().fullyQualifiedTargetEntity();
+ if (targetEntity == null) {
+ return null;
+ }
+ IPersistentType persistentType = defaultsContext.persistentType(targetEntity);
+ if (persistentType != null) {
+ ITypeMapping typeMapping = persistentType.getMapping();
+ if (typeMapping instanceof IEntity) {
+ return (IEntity) typeMapping;
+ }
+ }
+ return null;
+ }
+
+
+ @Override
+ protected Object getDefault(String key, DefaultsContext defaultsContext) {
+ if (key.equals(BaseJpaPlatform.DEFAULT_TARGET_ENTITY_KEY)) {
+ return getMapping().fullyQualifiedTargetEntity();
+ }
+ return super.getDefault(key, defaultsContext);
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaSingleRelationshipMappingContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaSingleRelationshipMappingContext.java
new file mode 100644
index 0000000000..aae02ab7df
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaSingleRelationshipMappingContext.java
@@ -0,0 +1,124 @@
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaSingleRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.IEntity;
+import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.ITable;
+import org.eclipse.jpt.core.internal.validation.IJpaValidationMessages;
+import org.eclipse.jpt.core.internal.validation.JpaValidationMessages;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public abstract class JavaSingleRelationshipMappingContext
+ extends JavaRelationshipMappingContext
+{
+ private Collection<JoinColumnContext> joinColumnContexts;
+
+ protected JavaSingleRelationshipMappingContext(
+ IContext parentContext, JavaSingleRelationshipMapping mapping) {
+ super(parentContext, mapping);
+ this.joinColumnContexts = buildJoinColumnContexts();
+ }
+
+ protected Collection<JoinColumnContext> buildJoinColumnContexts() {
+ Collection<JoinColumnContext> contexts = new ArrayList<JoinColumnContext>();
+ for (Iterator i = getMapping().getJoinColumns().iterator(); i.hasNext(); ) {
+ IJoinColumn column = (IJoinColumn) i.next();
+ contexts.add(new JoinColumnContext(this, column));
+ }
+ return contexts;
+ }
+
+ protected ISingleRelationshipMapping getMapping() {
+ return (ISingleRelationshipMapping) super.getMapping();
+ }
+
+ protected ITable getTable() {
+ IEntity entity = getMapping().getEntity();
+ if (entity == null) {
+ return null;
+ }
+ return entity.getTable();
+ }
+
+ public void refreshDefaultsInternal(DefaultsContext defaultsContext) {
+ super.refreshDefaultsInternal(defaultsContext);
+ DefaultsContext joinColumnsDefaultsContext = wrapDefaultsContextForJoinColumn(defaultsContext);
+ for (JoinColumnContext context : this.joinColumnContexts) {
+ context.refreshDefaults(joinColumnsDefaultsContext);
+ }
+ }
+
+ protected DefaultsContext wrapDefaultsContextForJoinColumn(final DefaultsContext defaultsContext) {
+ return new DefaultsContext() {
+ public Object getDefault(String key) {
+ if (key.equals(BaseJpaPlatform.DEFAULT_JOIN_COLUMN_TABLE_KEY)) {
+ ITable table = getTable();
+ if (table == null) {
+ return null;
+ }
+ return table.getName();
+ }
+ return defaultsContext.getDefault(key);
+ }
+
+ public IPersistentType persistentType(String fullyQualifiedTypeName) {
+ return defaultsContext.persistentType(fullyQualifiedTypeName);
+ }
+ };
+ }
+
+ @Override
+ public void addToMessages(List<IMessage> messages) {
+ super.addToMessages(messages);
+
+ addJoinColumnMessages(messages);
+ }
+
+ protected void addJoinColumnMessages(List<IMessage> messages) {
+ ISingleRelationshipMapping mapping = getMapping();
+ ITypeMapping typeMapping = mapping.typeMapping();
+
+ for (IJoinColumn joinColumn : mapping.getJoinColumns()) {
+ String table = joinColumn.getTable();
+ boolean doContinue = joinColumn.isConnected();
+
+ if (doContinue && typeMapping.tableNameIsInvalid(table)) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.JOIN_COLUMN_UNRESOLVED_TABLE,
+ new String[] {table, joinColumn.getName()},
+ joinColumn, joinColumn.getTableTextRange())
+ );
+ doContinue = false;
+ }
+
+ if (doContinue && ! joinColumn.isResolved()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.JOIN_COLUMN_UNRESOLVED_NAME,
+ new String[] {joinColumn.getName()},
+ joinColumn, joinColumn.getNameTextRange())
+ );
+ }
+
+ if (doContinue && ! joinColumn.isReferencedColumnResolved()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.JOIN_COLUMN_REFERENCED_COLUMN_UNRESOLVED_NAME,
+ new String[] {joinColumn.getReferencedColumnName(), joinColumn.getName()},
+ joinColumn, joinColumn.getReferencedColumnNameTextRange())
+ );
+ }
+ }
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaTransientContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaTransientContext.java
new file mode 100644
index 0000000000..088e34a48a
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaTransientContext.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.List;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaTransient;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public class JavaTransientContext extends JavaAttributeContext
+{
+ public JavaTransientContext(IContext parentContext, JavaTransient javaTransient) {
+ super(parentContext, javaTransient);
+ }
+
+ public void addToMessages(List<IMessage> messages) {
+ super.addToMessages(messages);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaTypeContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaTypeContext.java
new file mode 100644
index 0000000000..12ce71d299
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaTypeContext.java
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.content.java.IJavaTypeMapping;
+import org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute;
+import org.eclipse.jpt.core.internal.content.java.JavaPersistentType;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public abstract class JavaTypeContext extends BaseContext
+ implements TypeContext
+{
+ private IJavaTypeMapping typeMapping;
+
+ private Collection<JavaPersistentAttributeContext> javaPersistentAttributeContexts;
+
+ private boolean refreshed;
+
+ public JavaTypeContext(IContext parentContext, IJavaTypeMapping typeMapping) {
+ super(parentContext);
+ this.typeMapping = typeMapping;
+ this.javaPersistentAttributeContexts = buildJavaPersistentAttributeContexts();
+ }
+
+ protected Collection<JavaPersistentAttributeContext> buildJavaPersistentAttributeContexts() {
+ Collection<JavaPersistentAttributeContext> persistentAttributes = new ArrayList<JavaPersistentAttributeContext>();
+ for (Iterator<JavaPersistentAttribute> i = getPersistentType().getAttributes().iterator(); i.hasNext(); ) {
+ persistentAttributes.add(new JavaPersistentAttributeContext(this, i.next()));
+ }
+
+ return persistentAttributes;
+ }
+
+
+ @Override
+ protected void initialize() {}
+
+ protected void populateGeneratorRepository(GeneratorRepository generatorRepository) {
+ for (JavaPersistentAttributeContext context : getJavaPersistentAttributeContexts()) {
+ context.populateGeneratorRepository(generatorRepository);
+ }
+ }
+
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ this.refreshed = true;
+ this.getPersistentType().refreshDefaults(defaultsContext);
+ for (JavaPersistentAttributeContext context : this.javaPersistentAttributeContexts) {
+ context.refreshDefaults(defaultsContext);
+ }
+ }
+
+ public JavaPersistentType getPersistentType() {
+ return (JavaPersistentType) typeMapping.getPersistentType();
+ }
+
+ protected IJavaTypeMapping getTypeMapping() {
+ return typeMapping;
+ }
+
+ protected Collection<JavaPersistentAttributeContext> getJavaPersistentAttributeContexts() {
+ return this.javaPersistentAttributeContexts;
+ }
+
+ public boolean isRefreshed() {
+ return this.refreshed;
+ }
+
+ public boolean contains(IPersistentType persistentType) {
+ return persistentType == getPersistentType();
+ }
+
+ public void addToMessages(List<IMessage> messages) {
+ addAttributeMessages(messages);
+ }
+
+ protected void addAttributeMessages(List<IMessage> messages) {
+ for (JavaPersistentAttributeContext attributeContext : javaPersistentAttributeContexts) {
+ attributeContext.addToMessages(messages);
+ }
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaVersionContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaVersionContext.java
new file mode 100644
index 0000000000..63bd755a35
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JavaVersionContext.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.List;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaVersion;
+import org.eclipse.jpt.core.internal.mappings.IColumn;
+import org.eclipse.jpt.core.internal.validation.IJpaValidationMessages;
+import org.eclipse.jpt.core.internal.validation.JpaValidationMessages;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public class JavaVersionContext extends JavaAttributeContext
+{
+ private ColumnContext columnContext;
+
+ public JavaVersionContext(IContext parentContext, JavaVersion javaVersion) {
+ super(parentContext, javaVersion);
+ this.columnContext = new ColumnContext(this, javaVersion.getColumn());
+ }
+
+ protected JavaVersion version() {
+ return (JavaVersion) attributeMapping;
+ }
+
+ @Override
+ public void refreshDefaultsInternal(DefaultsContext defaultsContext) {
+ super.refreshDefaultsInternal(defaultsContext);
+ this.columnContext.refreshDefaults(defaultsContext);
+ }
+
+ public void addToMessages(List<IMessage> messages) {
+ super.addToMessages(messages);
+
+ addColumnMessages(messages);
+ }
+
+ protected void addColumnMessages(List<IMessage> messages) {
+ JavaVersion version = version();
+ ITypeMapping typeMapping = version.typeMapping();
+ IColumn column = version.getColumn();
+ String table = column.getTable();
+ boolean doContinue = entityOwned() && column.isConnected();
+
+ if (doContinue && typeMapping.tableNameIsInvalid(table)) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.COLUMN_UNRESOLVED_TABLE,
+ new String[] {table, column.getName()},
+ column, column.getTableTextRange())
+ );
+ doContinue = false;
+ }
+
+ if (doContinue && ! column.isResolved()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.COLUMN_UNRESOLVED_NAME,
+ new String[] {column.getName()},
+ column, column.getNameTextRange())
+ );
+ }
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JoinColumnContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JoinColumnContext.java
new file mode 100644
index 0000000000..0b24d39ded
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JoinColumnContext.java
@@ -0,0 +1,137 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.List;
+import org.eclipse.jpt.core.internal.content.orm.XmlRelationshipMapping;
+import org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping;
+import org.eclipse.jpt.core.internal.mappings.IEntity;
+import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
+import org.eclipse.jpt.core.internal.validation.IJpaValidationMessages;
+import org.eclipse.jpt.core.internal.validation.JpaValidationMessages;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public class JoinColumnContext extends AbstractJoinColumnContext<IJoinColumn>
+{
+ public JoinColumnContext(IContext parentContext, IJoinColumn column) {
+ super(parentContext, column);
+ }
+
+ /**
+ * return the join column's default name;
+ * which is typically &lt;attribute name&gt;_&lt;referenced column name&gt;
+ * but, if we don't have an attribute name (e.g. in a unidirectional
+ * OneToMany or ManyToMany) is
+ * &lt;target entity name&gt;_&lt;referenced column name&gt;
+ */
+ // <attribute name>_<referenced column name>
+ // or
+ // <target entity name>_<referenced column name>
+ protected String buildDefaultName() {
+ if (getColumn().getOwner().joinColumns().size() != 1) {
+ return null;
+ }
+ String prefix = getColumn().getOwner().attributeName();
+ if (prefix == null) {
+ prefix = targetEntityName();
+ }
+ if (prefix == null) {
+ return null;
+ }
+ // TODO not sure which of these is correct...
+ // (the spec implies that the referenced column is always the
+ // primary key column of the target entity)
+ // String targetColumn = this.targetPrimaryKeyColumnName();
+ String targetColumn = getColumn().getReferencedColumnName();
+ if (targetColumn == null) {
+ return null;
+ }
+ return prefix + "_" + targetColumn;
+ }
+
+ /**
+ * return the name of the target entity
+ */
+ private String targetEntityName() {
+ IEntity targetEntity = getColumn().getOwner().targetEntity();
+ return (targetEntity == null) ? null : targetEntity.getName();
+ }
+
+ protected String buildDefaultReferencedColumnName() {
+ if (getColumn().getOwner().joinColumns().size() != 1) {
+ return null;
+ }
+ return this.targetPrimaryKeyColumnName();
+ }
+ /**
+ * return the name of the single primary key column of the target entity
+ */
+ private String targetPrimaryKeyColumnName() {
+ IEntity targetEntity = getColumn().getOwner().targetEntity();
+ return (targetEntity == null) ? null : targetEntity.primaryKeyColumnName();
+ }
+
+ /** used internally as a mechanism to short circuit continued message adding */
+ private boolean doContinue;
+
+ @Override
+ public void addToMessages(List<IMessage> messages) {
+ super.addToMessages(messages);
+
+ String table = column.getTable();
+ XmlRelationshipMapping mapping =
+ (XmlRelationshipMapping) column.getOwner().getRelationshipMapping();
+ XmlTypeMapping typeMapping =
+ (XmlTypeMapping) column.getOwner().getTypeMapping();
+ doContinue = column.isConnected();
+
+// if (doContinue && typeMapping.tableNameIsInvalid(table)) {
+// if (mapping.isVirtual()) {
+// messages.add(
+// JpaValidationMessages.buildMessage(
+// IMessage.HIGH_SEVERITY,
+// IJpaValidationMessages.VIRTUAL_ATTRIBUTE_COLUMN_UNRESOLVED_TABLE,
+// new String[] {mapping.getPersistentAttribute().getName(), table, column.getName()},
+// column, column.getTableTextRange())
+// );
+// }
+// else {
+// messages.add(
+// JpaValidationMessages.buildMessage(
+// IMessage.HIGH_SEVERITY,
+// IJpaValidationMessages.COLUMN_UNRESOLVED_TABLE,
+// new String[] {table, column.getName()},
+// column, column.getTableTextRange())
+// );
+// }
+// doContinue = false;
+// }
+//
+ if (doContinue && ! column.isResolved()) {
+ if (mapping.isVirtual()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.VIRTUAL_ATTRIBUTE_COLUMN_UNRESOLVED_NAME,
+ new String[] {mapping.getPersistentAttribute().getName(), column.getName()},
+ column, column.getNameTextRange())
+ );
+ }
+ else {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.COLUMN_UNRESOLVED_NAME,
+ new String[] {column.getName()},
+ column, column.getNameTextRange())
+ );
+ }
+ }
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JoinTableContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JoinTableContext.java
new file mode 100644
index 0000000000..28fba0f23a
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/JoinTableContext.java
@@ -0,0 +1,176 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.content.orm.XmlRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
+import org.eclipse.jpt.core.internal.mappings.IJoinTable;
+import org.eclipse.jpt.core.internal.validation.IJpaValidationMessages;
+import org.eclipse.jpt.core.internal.validation.JpaValidationMessages;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public class JoinTableContext extends BaseContext
+{
+ private IJoinTable table;
+
+ private Collection<JoinColumnContext> joinColumnContexts;
+
+ private Collection<JoinColumnContext> inverseJoinColumnContexts;
+
+ public JoinTableContext(IContext parentContext, IJoinTable table) {
+ super(parentContext);
+ this.table = table;
+ this.joinColumnContexts = buildJoinColumnContexts();
+ this.inverseJoinColumnContexts = buildInverseJoinColumnContexts();
+ }
+
+ @Override
+ protected void initialize() {}
+
+ protected Collection<JoinColumnContext> buildJoinColumnContexts() {
+ Collection<JoinColumnContext> contexts = new ArrayList<JoinColumnContext>();
+ for (IJoinColumn joinColumn : this.table.getJoinColumns() ) {
+ contexts.add(new JoinColumnContext(this, joinColumn));
+ }
+ return contexts;
+ }
+
+ protected Collection<JoinColumnContext> buildInverseJoinColumnContexts() {
+ Collection<JoinColumnContext> contexts = new ArrayList<JoinColumnContext>();
+ for (IJoinColumn joinColumn : this.table.getInverseJoinColumns() ) {
+ contexts.add(new JoinColumnContext(this, joinColumn));
+ }
+ return contexts;
+ }
+
+
+ public IJoinTable getTable() {
+ return this.table;
+ }
+
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ this.table.refreshDefaults(defaultsContext);
+ DefaultsContext joinColumnsDefaultsContext = wrapDefaultsContextForJoinColumn(defaultsContext);
+ for (JoinColumnContext context : this.joinColumnContexts) {
+ context.refreshDefaults(joinColumnsDefaultsContext);
+ }
+ DefaultsContext inverseJoinColumnsDefaultsContext = wrapDefaultsContextForInverseJoinColumn(defaultsContext);
+ for (JoinColumnContext context : this.inverseJoinColumnContexts) {
+ context.refreshDefaults(inverseJoinColumnsDefaultsContext);
+ }
+ }
+
+ protected DefaultsContext wrapDefaultsContextForJoinColumn(final DefaultsContext defaultsContext) {
+ return new DefaultsContext() {
+ public Object getDefault(String key) {
+ /**
+ * by default, the join column is, obviously, in the join table;
+ * not sure whether it can be anywhere else...
+ */
+ if (key.equals(BaseJpaPlatform.DEFAULT_JOIN_COLUMN_TABLE_KEY)) {
+ return getTable().getName();
+ }
+ return defaultsContext.getDefault(key);
+ }
+
+ public IPersistentType persistentType(String fullyQualifiedTypeName) {
+ return defaultsContext.persistentType(fullyQualifiedTypeName);
+ }
+ };
+ }
+
+ protected DefaultsContext wrapDefaultsContextForInverseJoinColumn(final DefaultsContext defaultsContext) {
+ return new DefaultsContext() {
+ public Object getDefault(String key) {
+ if (key.equals(BaseJpaPlatform.DEFAULT_JOIN_COLUMN_TABLE_KEY)) {
+ return getTable().getName();
+ }
+ return defaultsContext.getDefault(key);
+ }
+
+ public IPersistentType persistentType(String fullyQualifiedTypeName) {
+ return defaultsContext.persistentType(fullyQualifiedTypeName);
+ }
+ };
+ }
+
+ /** used internally as a mechanism to short circuit continued message adding */
+ private boolean doContinue;
+
+ @Override
+ public void addToMessages(List<IMessage> messages) {
+ super.addToMessages(messages);
+
+ addTableMessages(messages);
+
+ if (doContinue) {
+ for (JoinColumnContext context : joinColumnContexts) {
+ context.addToMessages(messages);
+ }
+
+ for (JoinColumnContext context : inverseJoinColumnContexts) {
+ context.addToMessages(messages);
+ }
+ }
+ }
+
+ protected void addTableMessages(List<IMessage> messages) {
+ doContinue = table.isConnected();
+ String schema = table.getSchema();
+ XmlRelationshipMapping mapping = (XmlRelationshipMapping) table.relationshipMapping();
+
+ if (doContinue && ! table.hasResolvedSchema()) {
+ if (mapping.isVirtual()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.VIRTUAL_ATTRIBUTE_JOIN_TABLE_UNRESOLVED_SCHEMA,
+ new String[] {mapping.getPersistentAttribute().getName(), schema, table.getName()},
+ table, table.getSchemaTextRange())
+ );
+
+ }
+ else {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.JOIN_TABLE_UNRESOLVED_SCHEMA,
+ new String[] {schema, table.getName()},
+ table, table.getSchemaTextRange())
+ );
+ }
+ doContinue = false;
+ }
+
+ if (doContinue && ! table.isResolved()) {
+ if (mapping.isVirtual()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.VIRTUAL_ATTRIBUTE_JOIN_TABLE_UNRESOLVED_NAME,
+ new String[] {mapping.getPersistentAttribute().getName(), table.getName()},
+ table, table.getNameTextRange())
+ );
+ }
+ else {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.JOIN_TABLE_UNRESOLVED_NAME,
+ new String[] {table.getName()},
+ table, table.getNameTextRange())
+ );
+ }
+ }
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/MappingFileContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/MappingFileContext.java
new file mode 100644
index 0000000000..adb8d70e5e
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/MappingFileContext.java
@@ -0,0 +1,158 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.content.java.IJavaTypeMapping;
+import org.eclipse.jpt.core.internal.content.orm.XmlEmbeddable;
+import org.eclipse.jpt.core.internal.content.orm.XmlEntity;
+import org.eclipse.jpt.core.internal.content.orm.XmlMappedSuperclass;
+import org.eclipse.jpt.core.internal.content.orm.XmlRootContentNode;
+import org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping;
+import org.eclipse.jpt.core.internal.mappings.ISequenceGenerator;
+import org.eclipse.jpt.core.internal.mappings.ITableGenerator;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public class MappingFileContext extends BaseContext
+{
+ private XmlRootContentNode ormRoot;
+
+ private List<XmlTypeContext> xmlTypeContexts;
+
+
+ public MappingFileContext(
+ PersistenceUnitContext parentContext, XmlRootContentNode xmlRootContentNode) {
+ super(parentContext);
+ this.ormRoot = xmlRootContentNode;
+ this.xmlTypeContexts = buildXmlTypeContexts();
+ }
+
+ protected List<XmlTypeContext> buildXmlTypeContexts() {
+ List<XmlTypeContext> contexts = new ArrayList<XmlTypeContext>();
+ for (XmlTypeMapping typeMapping : this.ormRoot.getEntityMappings().getTypeMappings()) {
+ XmlTypeContext xmlTypeContext = buildContext(typeMapping);
+ contexts.add(xmlTypeContext);
+ }
+ return contexts;
+ }
+
+ protected void populateGeneratorRepository(GeneratorRepository generatorRepository) {
+ for (ISequenceGenerator generator : this.ormRoot.getEntityMappings().getSequenceGenerators()) {
+ generatorRepository.addGenerator(generator);
+ }
+ for (ITableGenerator generator : this.ormRoot.getEntityMappings().getTableGenerators()) {
+ generatorRepository.addGenerator(generator);
+ }
+ for (XmlTypeContext context : this.xmlTypeContexts) {
+ context.populateGeneratorRepository(generatorRepository);
+ }
+ }
+
+ @Override
+ protected void initialize() {
+ // nothing yet ...
+ }
+
+ protected XmlTypeContext buildContext(XmlTypeMapping typeMapping) {
+ String key = typeMapping.getKey();
+ if (key == IMappingKeys.ENTITY_TYPE_MAPPING_KEY) {
+ return new XmlEntityContext(this, (XmlEntity) typeMapping);
+ }
+ else if (key == IMappingKeys.EMBEDDABLE_TYPE_MAPPING_KEY) {
+ return new XmlEmbeddableContext(this, (XmlEmbeddable) typeMapping);
+ }
+ else if (key == IMappingKeys.MAPPED_SUPERCLASS_TYPE_MAPPING_KEY) {
+ return new XmlMappedSuperclassContext(this, (XmlMappedSuperclass) typeMapping);
+ }
+ else {
+ throw new IllegalArgumentException(typeMapping.toString());
+ }
+ }
+
+ protected XmlTypeContext xmlTypeMappingContextFor(IJavaTypeMapping javaTypeMapping) {
+ for (XmlTypeContext context : this.xmlTypeContexts) {
+ if (javaTypeMapping == context.getJavaTypeMapping()) {
+ return context;
+ }
+ }
+ return null;
+ }
+
+ public void refreshDefaults(DefaultsContext parentDefaults) {
+ super.refreshDefaults(parentDefaults);
+ ormRoot.getEntityMappings().refreshDefaults(parentDefaults);
+ DefaultsContext wrappedDefaultsContext = wrapDefaultsContext(parentDefaults);
+ for (XmlTypeContext context : this.xmlTypeContexts) {
+ if (!context.isRefreshed()) {
+ context.refreshDefaults(wrappedDefaultsContext);
+ }
+ }
+ }
+
+ private DefaultsContext wrapDefaultsContext(final DefaultsContext defaultsContext) {
+ return new DefaultsContext() {
+ public Object getDefault(String key) {
+ if (key.equals(BaseJpaPlatform.DEFAULT_TABLE_SCHEMA_KEY)
+ || key.equals(BaseJpaPlatform.DEFAULT_TABLE_GENERATOR_SCHEMA_KEY)) {
+ String schema = ormRoot.getEntityMappings().getSchema();
+ if (schema != null) {
+ return schema;
+ }
+ }
+ if (key.equals(BaseJpaPlatform.DEFAULT_TABLE_CATALOG_KEY)) {
+ String catalog = ormRoot.getEntityMappings().getCatalog();
+ if (catalog != null) {
+ return catalog;
+ }
+ }
+
+ return defaultsContext.getDefault(key);
+ }
+
+ public IPersistentType persistentType(String fullyQualifiedTypeName) {
+ return defaultsContext.persistentType(fullyQualifiedTypeName);
+ }
+ };
+ }
+
+ public XmlRootContentNode getXmlRootContentNode() {
+ return ormRoot;
+ }
+
+ public PersistenceUnitContext getPersistenceUnitContext() {
+ return (PersistenceUnitContext) getParentContext();
+ }
+
+ public Iterator<XmlTypeContext> typeContexts() {
+ return this.xmlTypeContexts.iterator();
+ }
+
+ public boolean contains(IPersistentType persistentType) {
+ for (XmlTypeContext context : this.xmlTypeContexts) {
+ if (persistentType == context.getPersistentType()) {
+ return true;
+ }
+ if (persistentType == context.javaPersistentType()) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public void addToMessages(List<IMessage> messages) {
+ for (XmlTypeContext typeMappingContext : this.xmlTypeContexts) {
+ typeMappingContext.addToMessages(messages);
+ }
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/NullGeneratorRepository.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/NullGeneratorRepository.java
new file mode 100644
index 0000000000..dc329d473f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/NullGeneratorRepository.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.Iterator;
+import org.eclipse.jpt.core.internal.mappings.IGenerator;
+import org.eclipse.jpt.utility.internal.iterators.EmptyIterator;
+
+public class NullGeneratorRepository implements IGeneratorRepository
+{
+ // singleton
+ private static final NullGeneratorRepository INSTANCE = new NullGeneratorRepository();
+
+ /**
+ * Return the singleton.
+ */
+ public static NullGeneratorRepository instance() {
+ return INSTANCE;
+ }
+
+ /**
+ * Ensure non-instantiability.
+ */
+ private NullGeneratorRepository() {
+ super();
+ }
+
+ public IGenerator generator(String name) {
+ return null;
+ }
+
+ public Iterator<String> generatorNames() {
+ return EmptyIterator.instance();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/PersistenceUnitContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/PersistenceUnitContext.java
new file mode 100644
index 0000000000..4fae0acdbc
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/PersistenceUnitContext.java
@@ -0,0 +1,484 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jem.java.JavaClass;
+import org.eclipse.jpt.core.internal.AccessType;
+import org.eclipse.jpt.core.internal.IJpaFile;
+import org.eclipse.jpt.core.internal.IJpaProject;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.content.java.IJavaTypeMapping;
+import org.eclipse.jpt.core.internal.content.java.JavaPersistentType;
+import org.eclipse.jpt.core.internal.content.orm.PersistenceUnitDefaults;
+import org.eclipse.jpt.core.internal.content.orm.PersistenceUnitMetadata;
+import org.eclipse.jpt.core.internal.content.orm.XmlRootContentNode;
+import org.eclipse.jpt.core.internal.content.persistence.JavaClassRef;
+import org.eclipse.jpt.core.internal.content.persistence.MappingFileRef;
+import org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit;
+import org.eclipse.jpt.core.internal.validation.IJpaValidationMessages;
+import org.eclipse.jpt.core.internal.validation.JpaValidationMessages;
+import org.eclipse.jpt.utility.internal.CollectionTools;
+import org.eclipse.jpt.utility.internal.HashBag;
+import org.eclipse.jpt.utility.internal.iterators.CompositeIterator;
+import org.eclipse.jpt.utility.internal.iterators.TransformationIterator;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public class PersistenceUnitContext extends BaseContext
+{
+ private PersistenceUnit persistenceUnit;
+
+ private List<PersistenceUnitMetadata> persistenceUnitMetadatas; // datas ?? datae ?? datata ??
+
+ private List<MappingFileContext> mappingFileContexts;
+ private List<JavaTypeContext> javaPersistentTypeContexts;
+ //private Collection<JarFileContext> jarFilesContexts;
+
+ private IGeneratorRepository generatorRepository;
+ /**
+ * Stores the JavaPersistentTypeContext for JavaPersistentTypes that are referenced
+ * by more than one orm.xml file. An error will be given to the user for this condition
+ * and the defaults will not be based on a persistence unit or orm.xml file.
+ */
+ private Collection<JavaTypeContext> duplicateJavaPersistentTypes;
+
+
+ public PersistenceUnitContext(IContext parentContext, PersistenceUnit persistenceUnit) {
+ super(parentContext);
+ this.persistenceUnit = persistenceUnit;
+ this.persistenceUnitMetadatas = buildPersistenceUnitMetadatas();
+ this.duplicateJavaPersistentTypes = new ArrayList<JavaTypeContext>();
+ this.mappingFileContexts = buildMappingFileContexts();
+ this.javaPersistentTypeContexts = buildJavaClassesContexts();
+ this.generatorRepository = buildGeneratorRepository();
+ }
+
+ @Override
+ protected void initialize() {
+ }
+
+ private List<PersistenceUnitMetadata> buildPersistenceUnitMetadatas() {
+ List<PersistenceUnitMetadata> metadatas = new ArrayList<PersistenceUnitMetadata>();
+ for (MappingFileRef mappingFileRef : persistenceUnit.getMappingFiles()) {
+ XmlRootContentNode content = xmlRootContentNodeFor(mappingFileRef);
+ if (content != null && content.getEntityMappings() != null
+ && ! content.getEntityMappings().getPersistenceUnitMetadata().isAllFeaturesUnset()) {
+ metadatas.add(content.getEntityMappings().getPersistenceUnitMetadata());
+ }
+ }
+ return metadatas;
+ }
+
+ protected List<MappingFileContext> buildMappingFileContexts() {
+ List<MappingFileContext> contexts = new ArrayList<MappingFileContext>();
+ for (MappingFileRef mappingFileRef : persistenceUnit.getMappingFiles()) {
+ XmlRootContentNode xmlRootContentNode = xmlRootContentNodeFor(mappingFileRef);
+ if (xmlRootContentNode != null && xmlRootContentNode.getEntityMappings() != null) {
+ contexts.add(new MappingFileContext(this, xmlRootContentNode));
+ }
+ }
+ return contexts;
+ }
+
+ private XmlRootContentNode xmlRootContentNodeFor(MappingFileRef mappingFileRef) {
+ IJpaFile jpaFile = mappingFileRef.getMappingFile();
+ if (jpaFile != null) {
+ try {
+ return (XmlRootContentNode) jpaFile.getContent();
+ }
+ catch (ClassCastException cce) { /* do nothing, return null */ }
+ }
+ return null;
+ }
+
+ protected List<JavaTypeContext> buildJavaClassesContexts() {
+ List<JavaTypeContext> javaPersistentTypeContexts = new ArrayList<JavaTypeContext>();
+ for (JavaClassRef javaClassRef : persistenceUnit.getClasses()) {
+ JavaPersistentType javaPersistentType = javaPersistentTypeFor(javaClassRef);
+ if (javaPersistentType != null) {
+ //if it's already specified in an orm.xml file then that is its context,
+ //no need to add a javaTypeMappingContext
+ if (xmlTypeMappingContextFor(javaPersistentType.getMapping())== null) {
+ JavaTypeContext javaTypeContext =
+ (JavaTypeContext) getPlatform().buildJavaTypeContext(this, javaPersistentType.getMapping());
+ javaPersistentTypeContexts.add(javaTypeContext);
+ }
+ }
+ }
+
+ return javaPersistentTypeContexts;
+ }
+
+ /**
+ * Iterate JavaTypeContexts firt to add generators to the repository.
+ * Then iterator through the MappingFileContexts and override any generators
+ * with the same name in the java
+ *
+ * @return
+ */
+ protected IGeneratorRepository buildGeneratorRepository() {
+ GeneratorRepository generatorRepository = new GeneratorRepository();
+ for (JavaTypeContext context : this.javaPersistentTypeContexts) {
+ context.populateGeneratorRepository(generatorRepository);
+ }
+ for (MappingFileContext context : this.mappingFileContexts) {
+ context.populateGeneratorRepository(generatorRepository);
+ }
+
+ return generatorRepository;
+ }
+
+ private JavaPersistentType javaPersistentTypeFor(JavaClassRef javaClassRef) {
+ JavaClass javaClass = javaClassRef.getJavaClass();
+ if (javaClass == null) {
+ return null;
+ }
+ IType type = (IType) javaClass.getReflectionType();
+ return jpaProject().findJavaPersistentType(type);
+ }
+
+ /**
+ * Find an XmlTypeMappingContext that references the given IJavaTYpeMapping by
+ * specifying that java class for one of its entities, embeddables, or mapped superclasses
+
+ */
+ public XmlTypeContext xmlTypeMappingContextFor(IJavaTypeMapping javaTypeMapping) {
+ for (MappingFileContext context : this.mappingFileContexts) {
+ XmlTypeContext xmlTypeMappingContext = context.xmlTypeMappingContextFor(javaTypeMapping);
+ if (xmlTypeMappingContext != null) {
+ return xmlTypeMappingContext;
+ }
+ }
+ return null;
+ }
+
+ protected IJpaProject jpaProject() {
+ return this.persistenceUnit.getJpaProject();
+ }
+
+ public void refreshDefaults(DefaultsContext parentDefaults) {
+ super.refreshDefaults(parentDefaults);
+ for (JavaTypeContext context : this.duplicateJavaPersistentTypes) {
+ // context for duplicates not be based on the persistenceUnit defaults,
+ // so we're going to use the one passed here without wrapping it
+ context.refreshDefaults(parentDefaults);
+ }
+ DefaultsContext defaults = wrapDefaultsContext(parentDefaults);
+ for (MappingFileContext context : this.mappingFileContexts) {
+ context.refreshDefaults(defaults);
+ }
+ for (JavaTypeContext context : this.javaPersistentTypeContexts) {
+ context.refreshDefaults(defaults);
+ }
+
+ //TODO somehow need to clear out defaults for the duplicateJpaFiles,
+ //do i have to build JavaTypeContext for those as well?
+ }
+
+ protected DefaultsContext wrapDefaultsContext(DefaultsContext defaults) {
+ final DefaultsContext puDefaults = buildPersistenceUnitDefaults(defaults);
+ return new DefaultsContext(){
+ public Object getDefault(String key) {
+ return puDefaults.getDefault(key);
+ }
+ public IPersistentType persistentType(String fullyQualifiedTypeName) {
+ for (Iterator<TypeContext> i = typeContexts(); i.hasNext(); ) {
+ TypeContext typeContext = i.next();
+ IPersistentType persistentType = typeContext.getPersistentType();
+ IType jdtType = persistentType.findJdtType();
+ if (jdtType != null
+ && fullyQualifiedTypeName.equals(jdtType.getFullyQualifiedName())) {
+ if (! typeContext.isRefreshed()) {
+ typeContext.refreshDefaults(this);
+ }
+ return persistentType;
+ }
+ }
+ return null;
+ }
+ };
+ }
+
+ protected DefaultsContext buildPersistenceUnitDefaults(final DefaultsContext defaults) {
+ if (persistenceUnitMetadatas.size() == 1) {
+ final PersistenceUnitDefaults puDefaults = persistenceUnitMetadatas.get(0).getPersistenceUnitDefaults();
+ if (puDefaults.isAllFeaturesUnset()) {
+ return defaults;
+ }
+
+ return new DefaultsContext() {
+ public Object getDefault(String key) {
+ if (key.equals(BaseJpaPlatform.DEFAULT_TABLE_SCHEMA_KEY)
+ || key.equals(BaseJpaPlatform.DEFAULT_TABLE_GENERATOR_SCHEMA_KEY)) {
+ String schema = puDefaults.getSchema();
+ if (schema != null) {
+ return schema;
+ }
+ }
+ if (key.equals(BaseJpaPlatform.DEFAULT_TABLE_CATALOG_KEY)) {
+ String catalog = puDefaults.getCatalog();
+ if (catalog != null) {
+ return catalog;
+ }
+ }
+ if (key.equals(BaseJpaPlatform.DEFAULT_ACCESS_KEY)) {
+ AccessType access = puDefaults.getAccess();
+ if (access != null) {
+ return access;
+ }
+ }
+ return defaults.getDefault(key);
+ }
+ public IPersistentType persistentType(String fullyQualifiedTypeName) {
+ return defaults.persistentType(fullyQualifiedTypeName);
+ }
+ };
+ }
+
+ return defaults;
+ }
+
+ private Iterator<TypeContext> typeContexts() {
+ return new CompositeIterator<TypeContext>(mappingFileTypeContexts(), javaTypeContexts());
+ }
+
+ private Iterator mappingFileTypeContexts() {
+ return new CompositeIterator(
+ new TransformationIterator(this.mappingFileContexts.iterator()) {
+ protected Object transform(Object next) {
+ return ((MappingFileContext) next).typeContexts();
+ }
+ }
+ );
+ }
+
+ private Iterator javaTypeContexts() {
+ return this.javaPersistentTypeContexts.iterator();
+ }
+
+ public void addDuplicateJpaFile(JavaTypeContext javaPersistentTypeContext) {
+ this.duplicateJavaPersistentTypes.add(javaPersistentTypeContext);
+ }
+
+ public boolean containsDuplicateJavaPersistentType(JavaPersistentType javaPersistentType) {
+ for (JavaTypeContext context : this.duplicateJavaPersistentTypes) {
+ if (context.getPersistentType() == javaPersistentType) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public boolean contains(IPersistentType persistentType) {
+ for (MappingFileContext context : this.mappingFileContexts) {
+ if (context.contains(persistentType)) {
+ return true;
+ }
+ }
+ for (JavaTypeContext context : this.javaPersistentTypeContexts) {
+ if (context.contains(persistentType)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public IGeneratorRepository getGeneratorRepository() {
+ return this.generatorRepository;
+ }
+
+ public void addToMessages(List<IMessage> messages) {
+ super.addToMessages(messages);
+ addMappingFileMessages(messages);
+ addClassMessages(messages);
+ }
+
+ protected void addMappingFileMessages(List<IMessage> messages) {
+ addMultipleMetadataMessages(messages);
+ addUnspecifiedMappingFileMessages(messages);
+ addUnresolvedMappingFileMessages(messages);
+ addInvalidMappingFileContentMessage(messages);
+ addDuplicateMappingFileMessages(messages);
+
+ for (MappingFileContext mappingFileContext : mappingFileContexts) {
+ mappingFileContext.addToMessages(messages);
+ }
+ }
+
+ protected void addMultipleMetadataMessages(List<IMessage> messages) {
+ if (persistenceUnitMetadatas.size() > 1) {
+ for (PersistenceUnitMetadata metadata : persistenceUnitMetadatas) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.ENTITY_MAPPINGS_MULTIPLE_METADATA,
+ new String[] {persistenceUnit.getName()},
+ metadata, metadata.getTextRange())
+ );
+ }
+ }
+ }
+
+ protected void addUnspecifiedMappingFileMessages(List<IMessage> messages) {
+ for (MappingFileRef mappingFileRef : persistenceUnit.getMappingFiles()) {
+ if (mappingFileRef.getFileName() == null || mappingFileRef.getFileName().equals("")) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.PERSISTENCE_UNIT_UNSPECIFIED_MAPPING_FILE,
+ mappingFileRef, mappingFileRef.getTextRange())
+ );
+ }
+ }
+ }
+
+ protected void addUnresolvedMappingFileMessages(List<IMessage> messages) {
+ for (Iterator stream = persistenceUnit.getMappingFiles().iterator(); stream.hasNext(); ) {
+ MappingFileRef mappingFileRef = (MappingFileRef) stream.next();
+ if (! (mappingFileRef.getFileName() == null || mappingFileRef.getFileName().equals(""))
+ && mappingFileRef.getMappingFile() == null) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.PERSISTENCE_UNIT_NONEXISTENT_MAPPING_FILE,
+ new String[] {mappingFileRef.getFileName()},
+ mappingFileRef, mappingFileRef.getTextRange())
+ );
+ }
+ }
+ }
+
+ protected void addInvalidMappingFileContentMessage(List<IMessage> messages) {
+ for (Iterator stream = persistenceUnit.getMappingFiles().iterator(); stream.hasNext(); ) {
+ MappingFileRef mappingFileRef = (MappingFileRef) stream.next();
+ if (mappingFileRef.getMappingFile() != null
+ && xmlRootContentNodeFor(mappingFileRef) == null) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.PERSISTENCE_UNIT_INVALID_MAPPING_FILE,
+ new String[] {mappingFileRef.getFileName()},
+ mappingFileRef, mappingFileRef.getTextRange())
+ );
+ }
+ }
+ }
+
+ protected void addDuplicateMappingFileMessages(List<IMessage> messages) {
+ HashBag fileBag = new HashBag(
+ CollectionTools.collection(
+ new TransformationIterator(persistenceUnit.getMappingFiles().iterator()) {
+ @Override
+ protected Object transform(Object next) {
+ return ((MappingFileRef) next).getFileName();
+ }
+ }
+ )
+ );
+ for (MappingFileRef mappingFileRef : persistenceUnit.getMappingFiles()) {
+ if (fileBag.count(mappingFileRef.getFileName()) > 1) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.PERSISTENCE_UNIT_DUPLICATE_MAPPING_FILE,
+ new String[] {mappingFileRef.getFileName()},
+ mappingFileRef, mappingFileRef.getTextRange())
+ );
+ }
+ }
+ }
+
+ protected void addClassMessages(List<IMessage> messages) {
+ addUnspecifiedClassMessages(messages);
+ addUnresolvedClassMessages(messages);
+ addInvalidClassContentMessages(messages);
+ addDuplicateClassMessages(messages);
+
+ for (JavaTypeContext persistentTypeContext : javaPersistentTypeContexts) {
+ persistentTypeContext.addToMessages(messages);
+ }
+ }
+
+ protected void addUnspecifiedClassMessages(List<IMessage> messages) {
+ for (JavaClassRef javaClassRef : persistenceUnit.getClasses()) {
+ JavaClass javaClass = javaClassRef.getJavaClass();
+ if (javaClass == null) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.PERSISTENCE_UNIT_UNSPECIFIED_CLASS,
+ javaClassRef, javaClassRef.getTextRange())
+ );
+ }
+ }
+ }
+
+ protected void addUnresolvedClassMessages(List<IMessage> messages) {
+ for (JavaClassRef javaClassRef : persistenceUnit.getClasses()) {
+ JavaClass javaClass = javaClassRef.getJavaClass();
+ if (javaClass != null && javaClass.getReflectionType() == null) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.PERSISTENCE_UNIT_NONEXISTENT_CLASS,
+ new String[] {javaClass.getQualifiedName()},
+ javaClassRef, javaClassRef.getTextRange())
+ );
+ }
+ }
+ }
+
+ protected void addInvalidClassContentMessages(List<IMessage> messages) {
+ for (JavaClassRef javaClassRef : persistenceUnit.getClasses()) {
+ JavaClass javaClass = javaClassRef.getJavaClass();
+ if (javaClass != null && javaClass.getReflectionType() != null
+ && (javaPersistentTypeFor(javaClassRef) == null
+ || javaPersistentTypeFor(javaClassRef).getMappingKey() == IMappingKeys.NULL_TYPE_MAPPING_KEY)) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.PERSISTENCE_UNIT_INVALID_CLASS,
+ new String[] {javaClassRef.getJavaClass().getQualifiedName()},
+ javaClassRef, javaClassRef.getTextRange())
+ );
+ }
+ }
+ }
+
+ protected void addDuplicateClassMessages(List<IMessage> messages) {
+ HashBag fileBag = new HashBag(
+ CollectionTools.collection(
+ new TransformationIterator(persistenceUnit.getClasses().iterator()) {
+ @Override
+ protected Object transform(Object next) {
+ JavaClass javaClass = ((JavaClassRef) next).getJavaClass();
+ return (javaClass == null) ? null : javaClass.getQualifiedName();
+ }
+ }
+ )
+ );
+ for (JavaClassRef javaClassRef : persistenceUnit.getClasses()) {
+ if (javaClassRef.getJavaClass() != null
+ && fileBag.count(javaClassRef.getJavaClass().getQualifiedName()) > 1) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.PERSISTENCE_UNIT_DUPLICATE_CLASS,
+ new String[] {javaClassRef.getJavaClass().getQualifiedName()},
+ javaClassRef, javaClassRef.getTextRange())
+ );
+ }
+ }
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/PrimaryKeyJoinColumnContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/PrimaryKeyJoinColumnContext.java
new file mode 100644
index 0000000000..002d7c576e
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/PrimaryKeyJoinColumnContext.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import org.eclipse.jpt.core.internal.mappings.IEntity;
+import org.eclipse.jpt.core.internal.mappings.IPrimaryKeyJoinColumn;
+
+public class PrimaryKeyJoinColumnContext extends AbstractJoinColumnContext<IPrimaryKeyJoinColumn>
+{
+
+ public PrimaryKeyJoinColumnContext(IContext parentContext, IPrimaryKeyJoinColumn column) {
+ super(parentContext, column);
+ }
+
+
+ protected String buildDefaultReferencedColumnName() {
+ return this.buildDefaultName();
+ }
+
+ protected String buildDefaultName() {
+ IEntity entity = (IEntity) getColumn().getOwner().getTypeMapping();
+
+ if (entity.getPrimaryKeyJoinColumns().size() != 1) {
+ return null;
+ }
+ String pkColumnName = entity.parentEntity().primaryKeyColumnName();
+ return pkColumnName;
+ }
+
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/TableContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/TableContext.java
new file mode 100644
index 0000000000..909639a976
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/TableContext.java
@@ -0,0 +1,81 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.List;
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.mappings.ITable;
+import org.eclipse.jpt.core.internal.validation.IJpaValidationMessages;
+import org.eclipse.jpt.core.internal.validation.JpaValidationMessages;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public class TableContext extends BaseContext
+{
+ private ITable table;
+
+ public TableContext(IContext parentContext, ITable table) {
+ super(parentContext);
+ this.table = table;
+ }
+
+ @Override
+ protected void initialize() {}
+
+ public ITable getTable() {
+ return this.table;
+ }
+
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ this.table.refreshDefaults(defaultsContext);
+ }
+
+ public DefaultsContext wrapDefaultsContext(final DefaultsContext defaultsContext) {
+ return new DefaultsContext() {
+ public Object getDefault(String key) {
+ if (key.equals(BaseJpaPlatform.DEFAULT_COLUMN_TABLE_KEY)) {
+ return getTable().getName();
+ }
+ return defaultsContext.getDefault(key);
+ }
+
+ public IPersistentType persistentType(String fullyQualifiedTypeName) {
+ return defaultsContext.persistentType(fullyQualifiedTypeName);
+ }
+ };
+ }
+
+ @Override
+ public void addToMessages(List<IMessage> messages) {
+ super.addToMessages(messages);
+
+ boolean doContinue = table.isConnected();
+ String schema = table.getSchema();
+
+ if (doContinue && ! table.hasResolvedSchema()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.TABLE_UNRESOLVED_SCHEMA,
+ new String[] {schema, table.getName()},
+ table, table.getSchemaTextRange())
+ );
+ doContinue = false;
+ }
+
+ if (doContinue && ! table.isResolved()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.TABLE_UNRESOLVED_NAME,
+ new String[] {table.getName()},
+ table, table.getNameTextRange())
+ );
+ }
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/TypeContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/TypeContext.java
new file mode 100644
index 0000000000..dc23fd424f
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/TypeContext.java
@@ -0,0 +1,20 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import org.eclipse.jpt.core.internal.IPersistentType;
+
+public interface TypeContext
+{
+ IPersistentType getPersistentType();
+
+ void refreshDefaults(DefaultsContext defaultsContext);
+
+ boolean isRefreshed();
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlAttributeContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlAttributeContext.java
new file mode 100644
index 0000000000..65cc75aa7c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlAttributeContext.java
@@ -0,0 +1,141 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.List;
+import org.eclipse.jpt.core.internal.IAttributeMapping;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.content.java.JavaPersistentAttribute;
+import org.eclipse.jpt.core.internal.content.java.JavaPersistentType;
+import org.eclipse.jpt.core.internal.content.orm.XmlAttributeMapping;
+import org.eclipse.jpt.core.internal.content.orm.XmlPersistentAttribute;
+import org.eclipse.jpt.core.internal.validation.IJpaValidationMessages;
+import org.eclipse.jpt.core.internal.validation.JpaValidationMessages;
+import org.eclipse.jpt.utility.internal.StringTools;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public abstract class XmlAttributeContext extends BaseContext
+{
+ private XmlAttributeMapping xmlAttributeMapping;
+
+ private JavaAttributeContext javaAttributeContext;
+
+ protected XmlAttributeContext(IContext parentContext, XmlAttributeMapping xmlAttributeMapping) {
+ super(parentContext);
+ this.xmlAttributeMapping = xmlAttributeMapping;
+ }
+
+ @Override
+ protected void initialize() {
+
+ }
+
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ JavaPersistentType javaPersistentType = this.xmlAttributeMapping.getPersistentType().findJavaPersistentType();
+ String name = this.xmlAttributeMapping.getPersistentAttribute().getName();
+ if (name != null && javaPersistentType != null) {
+ JavaPersistentAttribute javaPersistentAttribute = javaPersistentType.attributeNamed(name);
+ if (javaPersistentAttribute != null) {
+ this.javaAttributeContext =
+ (JavaAttributeContext) getPlatform().buildJavaAttributeContext(this, javaPersistentAttribute.getMapping());
+ }
+ }
+ this.xmlAttributeMapping.refreshDefaults(defaultsContext);
+ }
+
+ protected XmlAttributeMapping attributeMapping() {
+ return this.xmlAttributeMapping;
+ }
+
+ protected IAttributeMapping javaAttributeMapping() {
+ if (this.javaAttributeContext != null) {
+ return this.javaAttributeContext.getMapping();
+ }
+ return null;
+ }
+
+ protected boolean embeddableOwned() {
+ return attributeMapping().typeMapping().getKey() == IMappingKeys.EMBEDDABLE_TYPE_MAPPING_KEY;
+ }
+
+ protected boolean entityOwned() {
+ return attributeMapping().typeMapping().getKey() == IMappingKeys.ENTITY_TYPE_MAPPING_KEY;
+ }
+
+ public final DefaultsContext wrapDefaultsContext(final DefaultsContext defaultsContext) {
+ return new DefaultsContext() {
+ public Object getDefault(String key) {
+ return XmlAttributeContext.this.getDefault(key, defaultsContext);
+ }
+
+ public IPersistentType persistentType(String fullyQualifiedTypeName) {
+ return defaultsContext.persistentType(fullyQualifiedTypeName);
+ }
+ };
+ }
+
+ protected Object getDefault(String key, DefaultsContext defaultsContext) {
+ return defaultsContext.getDefault(key);
+ }
+
+ @Override
+ public void addToMessages(List<IMessage> messages) {
+ super.addToMessages(messages);
+ addAttributeMessages(messages);
+ addInvalidMappingMessage(messages);
+ }
+
+ protected void addAttributeMessages(List<IMessage> messages) {
+ addUnspecifiedAttributeMessage(messages);
+ addUnresolvedAttributeMessage(messages);
+ }
+
+ protected void addUnspecifiedAttributeMessage(List<IMessage> messages) {
+ XmlPersistentAttribute persistentAttribute = xmlAttributeMapping.getPersistentAttribute();
+ if (StringTools.stringIsEmpty(persistentAttribute.getName())) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.PERSISTENT_ATTRIBUTE_UNSPECIFIED_NAME,
+ persistentAttribute, persistentAttribute.getNameTextRange())
+ );
+ }
+ }
+
+ protected void addUnresolvedAttributeMessage(List<IMessage> messages) {
+ XmlPersistentAttribute persistentAttribute = xmlAttributeMapping.getPersistentAttribute();
+ if (! StringTools.stringIsEmpty(persistentAttribute.getName())
+ && persistentAttribute.persistentType().findJdtType() != null
+ && persistentAttribute.getAttribute() == null) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.PERSISTENT_ATTRIBUTE_UNRESOLVED_NAME,
+ new String[] {persistentAttribute.getName(), persistentAttribute.persistentType().getClass_()},
+ persistentAttribute, persistentAttribute.getNameTextRange())
+ );
+ }
+ }
+
+ protected void addInvalidMappingMessage(List<IMessage> messages) {
+ IAttributeMapping attributeMapping = attributeMapping();
+ ITypeMapping typeMapping = attributeMapping.typeMapping();
+ if (! typeMapping.attributeMappingKeyAllowed(attributeMapping.getKey())) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.PERSISTENT_ATTRIBUTE_INVALID_MAPPING,
+ new String[] {attributeMapping.getPersistentAttribute().getName()},
+ attributeMapping, attributeMapping.getTextRange())
+ );
+ }
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlBasicContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlBasicContext.java
new file mode 100644
index 0000000000..82c439d6cf
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlBasicContext.java
@@ -0,0 +1,124 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.List;
+import org.eclipse.jpt.core.internal.IAttributeMapping;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaBasic;
+import org.eclipse.jpt.core.internal.content.orm.XmlBasic;
+import org.eclipse.jpt.core.internal.mappings.IColumn;
+import org.eclipse.jpt.core.internal.validation.IJpaValidationMessages;
+import org.eclipse.jpt.core.internal.validation.JpaValidationMessages;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public class XmlBasicContext extends XmlAttributeContext
+{
+ private ColumnContext columnContext;
+
+ public XmlBasicContext(IContext parentContext, XmlBasic xmlBasic) {
+ super(parentContext, xmlBasic);
+ this.columnContext = new ColumnContext(this, xmlBasic.getColumn());
+ }
+
+ @Override
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ super.refreshDefaults(defaultsContext);
+ this.columnContext.refreshDefaults(defaultsContext);
+ }
+
+ @Override
+ protected Object getDefault(String key, DefaultsContext defaultsContext) {
+ if (key.equals(BaseJpaPlatform.DEFAULT_COLUMN_NAME_KEY)) {
+ if (attributeMapping().getPersistentAttribute().isVirtual()) {
+ if (javaBasicMapping() != null) {
+ if (!attributeMapping().getPersistentType().getMapping().isXmlMetadataComplete()) {
+ return javaBasicMapping().getColumn().getName();
+ }
+ return javaBasicMapping().getColumn().getDefaultName();
+ }
+ }
+ //doesn't matter what's in the java @Column annotation because it is completely
+ //overriden as soon as you specify the attribute in xml.
+ return attributeMapping().getPersistentAttribute().getName();
+ }
+
+ return super.getDefault(key, defaultsContext);
+ }
+
+ protected JavaBasic javaBasicMapping() {
+ IAttributeMapping attributeMapping = javaAttributeMapping();
+ if (attributeMapping.getKey() == IMappingKeys.BASIC_ATTRIBUTE_MAPPING_KEY) {
+ return (JavaBasic) attributeMapping;
+ }
+ return null;
+ }
+
+ protected XmlBasic getBasic() {
+ return (XmlBasic) attributeMapping();
+ }
+
+ public void addToMessages(List<IMessage> messages) {
+ if (entityOwned()) {
+ addColumnMessages(messages);
+ }
+ }
+
+ protected void addColumnMessages(List<IMessage> messages) {
+ XmlBasic basic = getBasic();
+ ITypeMapping typeMapping = basic.typeMapping();
+ IColumn column = basic.getColumn();
+ String table = column.getTable();
+ boolean doContinue = column.isConnected();
+
+ if (doContinue && typeMapping.tableNameIsInvalid(table)) {
+ if (basic.isVirtual()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.VIRTUAL_ATTRIBUTE_COLUMN_UNRESOLVED_TABLE,
+ new String[] {basic.getPersistentAttribute().getName(), table, column.getName()},
+ column, column.getTableTextRange())
+ );
+ }
+ else {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.COLUMN_UNRESOLVED_TABLE,
+ new String[] {table, column.getName()},
+ column, column.getTableTextRange())
+ );
+ }
+ doContinue = false;
+ }
+
+ if (doContinue && ! column.isResolved()) {
+ if (basic.isVirtual()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.VIRTUAL_ATTRIBUTE_COLUMN_UNRESOLVED_NAME,
+ new String[] {basic.getPersistentAttribute().getName(), column.getName()},
+ column, column.getNameTextRange())
+ );
+ }
+ else {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.COLUMN_UNRESOLVED_NAME,
+ new String[] {column.getName()},
+ column, column.getNameTextRange())
+ );
+ }
+ }
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlEmbeddableContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlEmbeddableContext.java
new file mode 100644
index 0000000000..891269c1dc
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlEmbeddableContext.java
@@ -0,0 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import org.eclipse.jpt.core.internal.content.orm.XmlEmbeddable;
+
+public class XmlEmbeddableContext extends XmlTypeContext
+{
+ public XmlEmbeddableContext(MappingFileContext parentContext, XmlEmbeddable xmlEmbeddable) {
+ super(parentContext, xmlEmbeddable);
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlEmbeddedContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlEmbeddedContext.java
new file mode 100644
index 0000000000..e4496abb77
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlEmbeddedContext.java
@@ -0,0 +1,106 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.jpt.core.internal.IAttributeMapping;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaAttributeOverride;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaEmbedded;
+import org.eclipse.jpt.core.internal.content.java.mappings.JpaJavaMappingsFactory;
+import org.eclipse.jpt.core.internal.content.orm.XmlEmbedded;
+import org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping;
+import org.eclipse.jpt.core.internal.mappings.IAttributeOverride;
+import org.eclipse.jpt.core.internal.mappings.IEmbedded;
+import org.eclipse.jpt.utility.internal.CollectionTools;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public class XmlEmbeddedContext
+ extends XmlAttributeContext
+{
+ private Collection<AttributeOverrideContext> attributeOverrideContexts;
+
+ public XmlEmbeddedContext(IContext parentContext, XmlEmbedded mapping) {
+ super(parentContext, mapping);
+ this.attributeOverrideContexts = buildAttributeOverrideContexts();
+ }
+
+ protected Collection<AttributeOverrideContext> buildAttributeOverrideContexts() {
+ Collection<AttributeOverrideContext> contexts = new ArrayList<AttributeOverrideContext>();
+ for (IAttributeOverride attributeOverride : getEmbedded().getAttributeOverrides()) {
+ contexts.add(new AttributeOverrideContext(this, attributeOverride));
+ }
+
+ return contexts;
+ }
+
+ @Override
+ public void refreshDefaults(DefaultsContext parentDefaults) {
+ super.refreshDefaults(parentDefaults);
+ refreshDefaultAttributeOverrides();
+ for (AttributeOverrideContext context : this.attributeOverrideContexts) {
+ context.refreshDefaults(parentDefaults);
+ }
+ }
+
+
+ protected void refreshDefaultAttributeOverrides() {
+ for (Iterator<String> i = getEmbedded().allOverridableAttributeNames(); i.hasNext(); ) {
+ String override = i.next();
+ if (!getEmbedded().containsAttributeOverride(override)) {
+ JavaAttributeOverride attributeOverride = JpaJavaMappingsFactory.eINSTANCE.createJavaAttributeOverride(new IEmbedded.AttributeOverrideOwner(getEmbedded()), getEmbedded().getPersistentAttribute().getAttribute());
+ attributeOverride.setName(override);
+ getEmbedded().getDefaultAttributeOverrides().add(attributeOverride);
+ }
+ }
+
+ Collection<String> attributeNames = CollectionTools.collection(getEmbedded().allOverridableAttributeNames());
+
+ //remove any default mappings that are not included in the attributeNames collection
+ Collection<IAttributeOverride> overridesToRemove = new ArrayList<IAttributeOverride>();
+ for (IAttributeOverride attributeOverride : getEmbedded().getDefaultAttributeOverrides()) {
+ if (!attributeNames.contains(attributeOverride.getName())
+ || getEmbedded().containsSpecifiedAttributeOverride(attributeOverride.getName())) {
+ overridesToRemove.add(attributeOverride);
+ }
+ }
+
+ getEmbedded().getDefaultAttributeOverrides().removeAll(overridesToRemove);
+ }
+
+ protected XmlTypeMapping getXmlTypeMapping() {
+ return (XmlTypeMapping) getEmbedded().getPersistentAttribute().typeMapping();
+ }
+
+ private IEmbedded getEmbedded() {
+ return (IEmbedded) attributeMapping();
+ }
+
+ protected JavaEmbedded getJavaEmbedded() {
+ IAttributeMapping javaAttributeMapping = javaAttributeMapping();
+ if (javaAttributeMapping != null
+ && javaAttributeMapping.getKey() == IMappingKeys.EMBEDDED_ATTRIBUTE_MAPPING_KEY) {
+ return (JavaEmbedded) javaAttributeMapping;
+ }
+ return null;
+ }
+
+ @Override
+ public void addToMessages(List<IMessage> messages) {
+ super.addToMessages(messages);
+
+ for (AttributeOverrideContext aoContext : attributeOverrideContexts) {
+ aoContext.addToMessages(messages);
+ }
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlEmbeddedIdContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlEmbeddedIdContext.java
new file mode 100644
index 0000000000..dc9e55f323
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlEmbeddedIdContext.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import org.eclipse.jpt.core.internal.content.orm.XmlEmbeddedId;
+
+public class XmlEmbeddedIdContext
+ extends XmlAttributeContext
+{
+ public XmlEmbeddedIdContext(IContext parentContext, XmlEmbeddedId mapping) {
+ super(parentContext, mapping);
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlEntityContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlEntityContext.java
new file mode 100644
index 0000000000..380d659478
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlEntityContext.java
@@ -0,0 +1,364 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.IPersistentAttribute;
+import org.eclipse.jpt.core.internal.content.java.IJavaTypeMapping;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaEntity;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaTable;
+import org.eclipse.jpt.core.internal.content.orm.XmlEntity;
+import org.eclipse.jpt.core.internal.content.orm.XmlTable;
+import org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping;
+import org.eclipse.jpt.core.internal.mappings.IAssociationOverride;
+import org.eclipse.jpt.core.internal.mappings.IAttributeOverride;
+import org.eclipse.jpt.core.internal.mappings.IEntity;
+import org.eclipse.jpt.core.internal.mappings.ISecondaryTable;
+import org.eclipse.jpt.core.internal.validation.IJpaValidationMessages;
+import org.eclipse.jpt.core.internal.validation.JpaValidationMessages;
+import org.eclipse.jpt.utility.internal.ClassTools;
+import org.eclipse.jpt.utility.internal.CollectionTools;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public class XmlEntityContext extends XmlTypeContext
+{
+ private TableContext tableContext;
+
+ private Collection<TableContext> secondaryTableContexts;
+
+ private JavaTable javaTable;
+
+ private Collection<AttributeOverrideContext> attributeOverrideContexts;
+
+ private Collection<AssociationOverrideContext> associationOverrideContexts;
+
+ public XmlEntityContext(MappingFileContext parentContext, XmlEntity xmlEntity) {
+ super(parentContext, (XmlTypeMapping) xmlEntity);
+ this.attributeOverrideContexts = buildAttributeOverrideContexts();
+ this.associationOverrideContexts = buildAssociationOverrideContexts();
+ this.secondaryTableContexts = buildSecondaryTableContexts();
+ }
+
+ protected Collection<AttributeOverrideContext> buildAttributeOverrideContexts() {
+ Collection<AttributeOverrideContext> contexts = new ArrayList<AttributeOverrideContext>();
+ for (IAttributeOverride attributeOverride : getEntity().getAttributeOverrides()) {
+ contexts.add(new AttributeOverrideContext(this, attributeOverride));
+ }
+
+ return contexts;
+ }
+
+ //only support default joinColumn information for the default association overrides,
+ //AssociationOverride has no defaults, the name and joinColumns must be specified
+ protected Collection<AssociationOverrideContext> buildAssociationOverrideContexts() {
+ Collection<AssociationOverrideContext> contexts = new ArrayList<AssociationOverrideContext>();
+ for (IAssociationOverride associationOverride : getEntity().getDefaultAssociationOverrides()) {
+ contexts.add(new AssociationOverrideContext(this, associationOverride));
+ }
+
+ return contexts;
+ }
+
+ protected Collection<TableContext> buildSecondaryTableContexts() {
+ Collection<TableContext> contexts = new ArrayList<TableContext>();
+ for (ISecondaryTable secondaryTable : getEntity().getSecondaryTables()) {
+ contexts.add(new TableContext(this, secondaryTable));
+ }
+
+ return contexts;
+ }
+
+ protected XmlEntity getEntity() {
+ return (XmlEntity) getXmlTypeMapping();
+ }
+
+ protected JavaEntity getJavaEntity() {
+ IJavaTypeMapping javaTypeMapping = javaTypeMapping();
+ if (javaTypeMapping != null
+ && javaTypeMapping.getKey() == IMappingKeys.ENTITY_TYPE_MAPPING_KEY) {
+ return (JavaEntity) javaTypeMapping;
+ }
+ return null;
+ }
+
+ @Override
+ public void initialize() {
+ super.initialize();
+ IJavaTypeMapping javaTypeMapping = javaTypeMapping();
+ XmlTable xmlTable = (XmlTable)((XmlEntity) getXmlTypeMapping()).getTable();
+ if (javaTypeMapping instanceof IEntity) {
+ this.javaTable = (JavaTable) ((IEntity) javaTypeMapping).getTable();
+ }
+ this.tableContext = new TableContext(this, xmlTable);
+ }
+
+ /**
+ * XmlIdContexts will populate the generatorRepository themselves.
+ * XmlAttributeContexts are not built until the initialize method, so we
+ * don't have any yet to populate the generatorRepository.
+ */
+ protected void populateGeneratorRepository(GeneratorRepository generatorRepository) {
+ if (getEntity().getTableGenerator() != null) {
+ generatorRepository.addGenerator(getEntity().getTableGenerator());
+ }
+ if (getEntity().getSequenceGenerator() != null) {
+ generatorRepository.addGenerator(getEntity().getSequenceGenerator());
+ }
+ }
+
+ public PersistenceUnitContext getPersistenceUnitContext() {
+ return ((MappingFileContext) getParentContext()).getPersistenceUnitContext();
+ }
+
+ @Override
+ public void refreshDefaults(DefaultsContext parentDefaults) {
+ super.refreshDefaults(parentDefaults);
+ refreshDefaultAttributeOverrides();
+ refreshDefaultAssociationOverrides();
+ refreshDefaultSecondaryTables();
+ for (TableContext context : this.secondaryTableContexts) {
+ context.refreshDefaults(parentDefaults);
+ }
+ for (AttributeOverrideContext context : this.attributeOverrideContexts) {
+ context.refreshDefaults(parentDefaults);
+ }
+ for (AssociationOverrideContext context : this.associationOverrideContexts) {
+ context.refreshDefaults(parentDefaults);
+ }
+ }
+
+ protected void refreshTableContext(DefaultsContext defaultsContext) {
+ this.tableContext.refreshDefaults(defaultsContext);
+ }
+
+ protected void refreshDefaultAttributeOverrides() {
+
+ JavaEntity javaEntity = getJavaEntity();
+ if (javaEntity != null && !getXmlTypeMapping().isXmlMetadataComplete()) {
+ for (IAttributeOverride attributeOverride : javaEntity.getAttributeOverrides()) {
+ if (!getEntity().containsAttributeOverride(attributeOverride.getName())) {
+ IAttributeOverride defaultAttributeOverride = getEntity().createAttributeOverride(0);
+ defaultAttributeOverride.setName(attributeOverride.getName());
+ getEntity().getDefaultAttributeOverrides().add(defaultAttributeOverride);
+ }
+ }
+ }
+ else {
+ for (Iterator<String> i = getEntity().allOverridableAttributeNames(); i.hasNext(); ) {
+ String override = i.next();
+ if (!getEntity().containsAttributeOverride(override)) {
+ IAttributeOverride defaultAttributeOverride = getEntity().createAttributeOverride(0);
+ defaultAttributeOverride.setName(override);
+ getEntity().getDefaultAttributeOverrides().add(defaultAttributeOverride);
+ }
+
+ }
+ }
+
+ Collection<String> attributeNames = CollectionTools.collection(getEntity().allOverridableAttributeNames());
+
+ //remove any default mappings that are not included in the attributeNames collection
+ Collection<IAttributeOverride> overridesToRemove = new ArrayList<IAttributeOverride>();
+ for (IAttributeOverride attributeOverride : getEntity().getDefaultAttributeOverrides()) {
+ if (getEntity().containsSpecifiedAttributeOverride(attributeOverride.getName())) {
+ overridesToRemove.add(attributeOverride);
+ }
+ else if (!attributeNames.contains(attributeOverride.getName())) {
+ if (javaEntity != null
+ && !getXmlTypeMapping().isXmlMetadataComplete()
+ && !javaEntity.containsSpecifiedAttributeOverride(attributeOverride.getName())) {
+
+ overridesToRemove.add(attributeOverride);
+ }
+ }
+ }
+
+ getEntity().getDefaultAttributeOverrides().removeAll(overridesToRemove);
+ }
+
+ protected void refreshDefaultAssociationOverrides() {
+
+ JavaEntity javaEntity = getJavaEntity();
+ if (javaEntity != null && !getXmlTypeMapping().isXmlMetadataComplete()) {
+ for (IAssociationOverride associationOverride : javaEntity.getAssociationOverrides()) {
+ if (!getEntity().containsAssociationOverride(associationOverride.getName())) {
+ IAssociationOverride defaultAssociationOverride = getEntity().createAssociationOverride(0);
+ defaultAssociationOverride.setName(associationOverride.getName());
+ getEntity().getDefaultAssociationOverrides().add(defaultAssociationOverride);
+ }
+ }
+ }
+ else {
+ for (Iterator<String> i = getEntity().allOverridableAssociationNames(); i.hasNext(); ) {
+ String override = i.next();
+ if (!getEntity().containsAssociationOverride(override)) {
+ IAssociationOverride defaultAssociationOverride = getEntity().createAssociationOverride(0);
+ defaultAssociationOverride.setName(override);
+ getEntity().getDefaultAssociationOverrides().add(defaultAssociationOverride);
+ }
+
+ }
+ }
+
+ Collection<String> attributeNames = CollectionTools.collection(getEntity().allOverridableAssociationNames());
+
+ //remove any default mappings that are not included in the attributeNames collection
+ Collection<IAssociationOverride> overridesToRemove = new ArrayList<IAssociationOverride>();
+ for (IAssociationOverride attributeOverride : getEntity().getDefaultAssociationOverrides()) {
+ if (getEntity().containsSpecifiedAssociationOverride(attributeOverride.getName())) {
+ overridesToRemove.add(attributeOverride);
+ }
+ else if (!attributeNames.contains(attributeOverride.getName())) {
+ if (javaEntity != null
+ && !getXmlTypeMapping().isXmlMetadataComplete()
+ && !javaEntity.containsSpecifiedAssociationOverride(attributeOverride.getName())) {
+
+ overridesToRemove.add(attributeOverride);
+ }
+ }
+ }
+
+ getEntity().getDefaultAssociationOverrides().removeAll(overridesToRemove);
+ }
+
+ protected void refreshDefaultSecondaryTables() {
+ JavaEntity javaEntity = getJavaEntity();
+ if (javaEntity != null && !getXmlTypeMapping().isXmlMetadataComplete()) {
+ for (ISecondaryTable secondaryTable : javaEntity.getSecondaryTables()) {
+ if (!getEntity().containsSecondaryTable(secondaryTable.getName())) {
+ ISecondaryTable defaultSecondaryTable = getEntity().createSecondaryTable(0);
+ defaultSecondaryTable.setSpecifiedName(secondaryTable.getName());
+ getEntity().getDefaultSecondaryTables().add(defaultSecondaryTable);
+ }
+ }
+ }
+ Collection<ISecondaryTable> secondaryTablesToRemove = new ArrayList<ISecondaryTable>();
+
+ for (Iterator<ISecondaryTable> i = getEntity().getDefaultSecondaryTables().iterator(); i.hasNext(); ) {
+ ISecondaryTable secondaryTable = i.next();
+ if (getXmlTypeMapping().isXmlMetadataComplete()) {
+ secondaryTablesToRemove.add(secondaryTable);
+ continue;
+ }
+ if (javaEntity == null) {
+ secondaryTablesToRemove.add(secondaryTable);
+ }
+ else if (!javaEntity.containsSecondaryTable(secondaryTable.getName())) {
+ secondaryTablesToRemove.add(secondaryTable);
+ }
+ }
+ getEntity().getDefaultSecondaryTables().removeAll(secondaryTablesToRemove);
+
+ }
+
+ @Override
+ public DefaultsContext wrapDefaultsContext(DefaultsContext defaultsContext) {
+ return super.wrapDefaultsContext(this.tableContext.wrapDefaultsContext(defaultsContext));
+ }
+
+ @Override
+ protected Object getDefault(String key, DefaultsContext defaultsContext) {
+ if (key.equals(BaseJpaPlatform.DEFAULT_ENTITY_NAME_KEY)) {
+ String className = getPersistentType().getClass_();
+ if (className != null) {
+ return ClassTools.shortNameForClassNamed(className);
+ }
+ }
+
+ XmlTable xmlTable = getXmlTable();
+ if (javaTable != null) {
+ if (getXmlTypeMapping().isXmlMetadataComplete() || xmlTable.getNode() != null) {
+ if (key.equals(BaseJpaPlatform.DEFAULT_TABLE_SCHEMA_KEY)) {
+ return javaTable.getDefaultSchema();
+ }
+ if (key.equals(BaseJpaPlatform.DEFAULT_TABLE_CATALOG_KEY)) {
+ return javaTable.getDefaultCatalog();
+ }
+ if (key.equals(BaseJpaPlatform.DEFAULT_TABLE_NAME_KEY)) {
+ return javaTable.getDefaultName();
+ }
+ }
+ else {
+ if (key.equals(BaseJpaPlatform.DEFAULT_TABLE_SCHEMA_KEY)) {
+ return javaTable.getSchema();
+ }
+ if (key.equals(BaseJpaPlatform.DEFAULT_TABLE_CATALOG_KEY)) {
+ return javaTable.getCatalog();
+ }
+ if (key.equals(BaseJpaPlatform.DEFAULT_TABLE_NAME_KEY)) {
+ return javaTable.getName();
+ }
+ }
+ }
+ else if (key.equals(BaseJpaPlatform.DEFAULT_TABLE_NAME_KEY)) {
+ if (getEntity().rootEntity().getInheritanceStrategy().isSingleTable()) {
+ IEntity rootEntity = getEntity().rootEntity();
+ if (rootEntity == getEntity()) {
+ return rootEntity.getName();
+ }
+ return rootEntity.getTable().getName();
+ }
+ return getEntity().getName();
+ }
+ return super.getDefault(key, defaultsContext);
+ }
+
+ private XmlTable getXmlTable() {
+ return (XmlTable) ((XmlEntity) getXmlTypeMapping()).getTable();
+ }
+
+ @Override
+ public void addToMessages(List<IMessage> messages) {
+ super.addToMessages(messages);
+ tableContext.addToMessages(messages);
+ addIdMessages(messages);
+
+ for (AttributeOverrideContext aoContext : attributeOverrideContexts) {
+ aoContext.addToMessages(messages);
+ }
+
+ for (AssociationOverrideContext aoContext : associationOverrideContexts) {
+ aoContext.addToMessages(messages);
+ }
+ }
+
+ protected void addIdMessages(List<IMessage> messages) {
+ addNoIdMessage(messages);
+
+ }
+
+ protected void addNoIdMessage(List<IMessage> messages) {
+ IEntity entity = getEntity();
+ if (entityHasNoId()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.ENTITY_NO_ID,
+ new String[] {entity.getName()},
+ entity, entity.getTextRange())
+ );
+ }
+ }
+
+ private boolean entityHasNoId() {
+ for (Iterator<IPersistentAttribute> stream = getEntity().getPersistentType().allAttributes(); stream.hasNext(); ) {
+ IPersistentAttribute persistentAttribute = stream.next();
+ String mappingKey = persistentAttribute.getMappingKey();
+ if (mappingKey == IMappingKeys.ID_ATTRIBUTE_MAPPING_KEY
+ || mappingKey == IMappingKeys.EMBEDDED_ID_ATTRIBUTE_MAPPING_KEY) {
+ return false;
+ }
+ }
+ return true;
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlIdContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlIdContext.java
new file mode 100644
index 0000000000..30b9545f28
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlIdContext.java
@@ -0,0 +1,177 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.List;
+import org.eclipse.jpt.core.internal.IAttributeMapping;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaId;
+import org.eclipse.jpt.core.internal.content.orm.XmlId;
+import org.eclipse.jpt.core.internal.mappings.IColumn;
+import org.eclipse.jpt.core.internal.mappings.IGeneratedValue;
+import org.eclipse.jpt.core.internal.mappings.IGenerator;
+import org.eclipse.jpt.core.internal.mappings.ISequenceGenerator;
+import org.eclipse.jpt.core.internal.mappings.ITableGenerator;
+import org.eclipse.jpt.core.internal.validation.IJpaValidationMessages;
+import org.eclipse.jpt.core.internal.validation.JpaValidationMessages;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public class XmlIdContext extends XmlAttributeContext
+{
+
+ private ColumnContext columnContext;
+
+ public XmlIdContext(IContext parentContext, XmlId xmlId) {
+ super(parentContext, xmlId);
+ this.columnContext = new ColumnContext(this, xmlId.getColumn());
+ populateGeneratorRepository((GeneratorRepository) getPersistenceUnitContext().getGeneratorRepository());
+ }
+
+ protected PersistenceUnitContext getPersistenceUnitContext() {
+ return ((MappingFileContext) getParentContext().getParentContext()).getPersistenceUnitContext();
+ }
+
+ protected void populateGeneratorRepository(GeneratorRepository generatorRepository) {
+ ITableGenerator tableGenerator = getId().getTableGenerator();
+ if (tableGenerator != null) {
+ generatorRepository.addGenerator(tableGenerator);
+ }
+ ISequenceGenerator sequenceGenerator = getId().getSequenceGenerator();
+ if (sequenceGenerator != null) {
+ generatorRepository.addGenerator(sequenceGenerator);
+ }
+ }
+
+ @Override
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ super.refreshDefaults(defaultsContext);
+ this.columnContext.refreshDefaults(defaultsContext);
+ ITableGenerator tableGenerator = getId().getTableGenerator();
+ if (tableGenerator != null) {
+ tableGenerator.refreshDefaults(defaultsContext);
+ }
+ }
+
+ @Override
+ protected Object getDefault(String key, DefaultsContext defaultsContext) {
+ if (key.equals(BaseJpaPlatform.DEFAULT_COLUMN_NAME_KEY)) {
+ if (attributeMapping().getPersistentAttribute().isVirtual()) {
+ if (javaIdMapping() != null) {
+ if (!attributeMapping().getPersistentType().getMapping().isXmlMetadataComplete()) {
+ return javaIdMapping().getColumn().getName();
+ }
+ return javaIdMapping().getColumn().getDefaultName();
+ }
+ }
+ //doesn't matter what's in the java @Column annotation because it is completely
+ //overriden as soon as you specify the attribute in xml.
+ return attributeMapping().getPersistentAttribute().getName();
+ }
+
+ return super.getDefault(key, defaultsContext);
+ }
+
+ protected JavaId javaIdMapping() {
+ IAttributeMapping attributeMapping = javaAttributeMapping();
+ if (attributeMapping.getKey() == IMappingKeys.ID_ATTRIBUTE_MAPPING_KEY) {
+ return (JavaId) attributeMapping;
+ }
+ return null;
+ }
+
+ protected XmlId getId() {
+ return (XmlId) attributeMapping();
+ }
+
+ @Override
+ public void addToMessages(List<IMessage> messages) {
+ super.addToMessages(messages);
+
+ if (entityOwned()) {
+ addColumnMessages(messages);
+ }
+ }
+
+ protected void addColumnMessages(List<IMessage> messages) {
+ XmlId id = getId();
+ ITypeMapping typeMapping = id.typeMapping();
+ IColumn column = id.getColumn();
+ String table = column.getTable();
+ boolean doContinue = column.isConnected();
+
+ if (doContinue && typeMapping.tableNameIsInvalid(table)) {
+ if (id.isVirtual()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.VIRTUAL_ATTRIBUTE_COLUMN_UNRESOLVED_TABLE,
+ new String[] {id.getPersistentAttribute().getName(), table, column.getName()},
+ column, column.getTableTextRange())
+ );
+ }
+ else {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.COLUMN_UNRESOLVED_TABLE,
+ new String[] {table, column.getName()},
+ column, column.getTableTextRange())
+ );
+ }
+ doContinue = false;
+ }
+
+ if (doContinue && ! column.isResolved()) {
+ if (id.isVirtual()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.VIRTUAL_ATTRIBUTE_COLUMN_UNRESOLVED_NAME,
+ new String[] {id.getPersistentAttribute().getName(), column.getName()},
+ column, column.getNameTextRange())
+ );
+ }
+ else {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.COLUMN_UNRESOLVED_NAME,
+ new String[] {column.getName()},
+ column, column.getNameTextRange())
+ );
+ }
+ }
+ }
+
+ protected void addGeneratorMessages(List<IMessage> messages) {
+ XmlId id = getId();
+ IGeneratedValue generatedValue = id.getGeneratedValue();
+ if (generatedValue == null) {
+ return;
+ }
+ String generatorName = generatedValue.getGenerator();
+ if (generatorName == null) {
+ return;
+ }
+ IGeneratorRepository generatorRepository = getPersistenceUnitContext().getGeneratorRepository();
+ IGenerator generator = generatorRepository.generator(generatorName);
+
+ if (generator == null) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.GENERATED_VALUE_UNRESOLVED_GENERATOR,
+ new String[] {generatorName},
+ generatedValue, generatedValue.getTextRange())
+ );
+ }
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlManyToManyContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlManyToManyContext.java
new file mode 100644
index 0000000000..37fb8b51aa
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlManyToManyContext.java
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import org.eclipse.jpt.core.internal.content.orm.XmlManyToMany;
+
+public class XmlManyToManyContext extends XmlMultiRelationshipMappingContext
+{
+ public XmlManyToManyContext(IContext parentContext, XmlManyToMany mapping) {
+ super(parentContext, mapping);
+ }
+
+ protected XmlManyToMany getManyToMany() {
+ return (XmlManyToMany) attributeMapping();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlManyToOneContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlManyToOneContext.java
new file mode 100644
index 0000000000..5d3f00015b
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlManyToOneContext.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import org.eclipse.jpt.core.internal.content.orm.XmlManyToOne;
+
+public class XmlManyToOneContext
+ extends XmlSingleRelationshipMappingContext
+{
+ public XmlManyToOneContext(IContext parentContext, XmlManyToOne mapping) {
+ super(parentContext, mapping);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlMappedSuperclassContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlMappedSuperclassContext.java
new file mode 100644
index 0000000000..83e71b6e7a
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlMappedSuperclassContext.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import org.eclipse.jpt.core.internal.content.orm.XmlMappedSuperclass;
+
+public class XmlMappedSuperclassContext extends XmlTypeContext
+{
+ public XmlMappedSuperclassContext(MappingFileContext parentContext, XmlMappedSuperclass xmlMappedSuperclass) {
+ super(parentContext, xmlMappedSuperclass);
+ }
+
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlMultiRelationshipMappingContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlMultiRelationshipMappingContext.java
new file mode 100644
index 0000000000..b1f48120f7
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlMultiRelationshipMappingContext.java
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.List;
+import org.eclipse.jpt.core.internal.content.orm.XmlMultiRelationshipMappingInternal;
+import org.eclipse.jpt.core.internal.mappings.IEntity;
+import org.eclipse.jpt.core.internal.mappings.ITable;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public abstract class XmlMultiRelationshipMappingContext
+ extends XmlRelationshipMappingContext
+{
+ private JoinTableContext joinTableContext;
+
+ protected XmlMultiRelationshipMappingContext(
+ IContext parentContext, XmlMultiRelationshipMappingInternal mapping) {
+ super(parentContext, mapping);
+ this.joinTableContext = new JoinTableContext(this, mapping.getJoinTable());
+ }
+
+ @Override
+ public void refreshDefaults(final DefaultsContext defaultsContext) {
+ super.refreshDefaults(defaultsContext);
+ this.joinTableContext.refreshDefaults(defaultsContext);
+ multiRelationshipMapping().getOrderBy().refreshDefaults(defaultsContext);
+ }
+
+ @Override
+ protected Object getDefault(String key, DefaultsContext defaultsContext) {
+ if (key.equals(BaseJpaPlatform.DEFAULT_JOIN_TABLE_NAME_KEY)) {
+ return joinTableDefaultName(defaultsContext);
+ }
+ return super.getDefault(key, defaultsContext);
+ }
+
+ protected String joinTableDefaultName(DefaultsContext defaultsContext) {
+ ITable owningTable = multiRelationshipMapping().getEntity().getTable();
+ if (owningTable == null) {
+ return null;
+ }
+ IEntity targetEntity = targetEntity(defaultsContext);
+ if (targetEntity == null) {
+ return null;
+ }
+ ITable targetTable = targetEntity.getTable();
+ return (targetTable == null) ? null : owningTable.getName() + "_" + targetTable.getName();
+ }
+
+ protected XmlMultiRelationshipMappingInternal multiRelationshipMapping() {
+ return (XmlMultiRelationshipMappingInternal) relationshipMapping();
+ }
+
+ @Override
+ public void addToMessages(List<IMessage> messages) {
+ super.addToMessages(messages);
+
+ if (entityOwned()) {
+ addJoinTableMessages(messages);
+ }
+ }
+
+ protected void addJoinTableMessages(List<IMessage> messages) {
+ joinTableContext.addToMessages(messages);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlNullAttributeMappingContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlNullAttributeMappingContext.java
new file mode 100644
index 0000000000..6ee8dd748c
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlNullAttributeMappingContext.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import org.eclipse.jpt.core.internal.content.orm.XmlNullAttributeMapping;
+
+public class XmlNullAttributeMappingContext extends XmlAttributeContext
+{
+ public XmlNullAttributeMappingContext(
+ IContext parentContext, XmlNullAttributeMapping xmlNullAttributeMapping) {
+ super(parentContext, xmlNullAttributeMapping);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlOneToManyContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlOneToManyContext.java
new file mode 100644
index 0000000000..8a18f1d739
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlOneToManyContext.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.List;
+import org.eclipse.jpt.core.internal.content.orm.XmlOneToMany;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public class XmlOneToManyContext extends XmlMultiRelationshipMappingContext
+{
+ public XmlOneToManyContext(IContext parentContext, XmlOneToMany mapping) {
+ super(parentContext, mapping);
+ }
+
+ @Override
+ protected void addJoinTableMessages(List<IMessage> messages) {
+ // TODO
+ // a 1-M doesn't *have* to have a join table
+ return;
+
+ //super.addJoinTableMessages(messages);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlOneToOneContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlOneToOneContext.java
new file mode 100644
index 0000000000..693325376d
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlOneToOneContext.java
@@ -0,0 +1,20 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import org.eclipse.jpt.core.internal.content.orm.XmlOneToOne;
+
+public class XmlOneToOneContext
+ extends XmlSingleRelationshipMappingContext
+{
+ public XmlOneToOneContext(IContext parentContext, XmlOneToOne mapping) {
+ super(parentContext, mapping);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlRelationshipMappingContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlRelationshipMappingContext.java
new file mode 100644
index 0000000000..bc77028d1d
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlRelationshipMappingContext.java
@@ -0,0 +1,76 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import org.eclipse.jpt.core.internal.IAttributeMapping;
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaRelationshipMapping;
+import org.eclipse.jpt.core.internal.content.orm.XmlRelationshipMapping;
+import org.eclipse.jpt.core.internal.jdtutility.Attribute;
+import org.eclipse.jpt.core.internal.mappings.IEntity;
+import org.eclipse.jpt.core.internal.mappings.IRelationshipMapping;
+
+public abstract class XmlRelationshipMappingContext extends XmlAttributeContext
+{
+ protected XmlRelationshipMappingContext(IContext parentContext, XmlRelationshipMapping mapping) {
+ super(parentContext, mapping);
+ }
+
+ protected IEntity targetEntity(DefaultsContext defaultsContext) {
+ String targetEntity = relationshipMapping().fullyQualifiedTargetEntity();
+ if (targetEntity == null) {
+ return null;
+ }
+ IPersistentType persistentType = defaultsContext.persistentType(targetEntity);
+ if (persistentType == null) {
+ return null;
+ }
+ ITypeMapping typeMapping = persistentType.getMapping();
+ if (typeMapping instanceof IEntity) {
+ return (IEntity) typeMapping;
+ }
+ return null;
+ }
+
+ protected XmlRelationshipMapping relationshipMapping() {
+ return (XmlRelationshipMapping) attributeMapping();
+ }
+
+ @Override
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ super.refreshDefaults(defaultsContext);
+ relationshipMapping().refreshDefaults(defaultsContext);
+ }
+
+ protected IRelationshipMapping javaRelationshipMapping() {
+ IAttributeMapping javaAttributeMapping = javaAttributeMapping();
+ if (javaAttributeMapping instanceof IRelationshipMapping) {
+ return ((IRelationshipMapping) javaAttributeMapping);
+ }
+ return null;
+ }
+
+ protected Object getDefault(String key, DefaultsContext defaultsContext) {
+ if (key.equals(BaseJpaPlatform.DEFAULT_TARGET_ENTITY_KEY)) {
+ IRelationshipMapping javaMapping = javaRelationshipMapping();
+ if (javaMapping != null) {
+ if (!relationshipMapping().isVirtual() && relationshipMapping().getPersistentType().getMapping().isXmlMetadataComplete()) {
+ return javaMapping.getDefaultTargetEntity();
+ }
+ return javaMapping.getTargetEntity();
+ }
+ Attribute attribute = relationshipMapping().getPersistentAttribute().getAttribute();
+ if (attribute != null) {
+ return JavaRelationshipMapping.buildReferenceEntityTypeName(attribute.typeSignature(), relationshipMapping().getPersistentType().findJdtType());
+ }
+ }
+ return super.getDefault(key, defaultsContext);
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlSingleRelationshipMappingContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlSingleRelationshipMappingContext.java
new file mode 100644
index 0000000000..d728005a94
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlSingleRelationshipMappingContext.java
@@ -0,0 +1,145 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.content.orm.XmlSingleRelationshipMapping;
+import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
+import org.eclipse.jpt.core.internal.validation.IJpaValidationMessages;
+import org.eclipse.jpt.core.internal.validation.JpaValidationMessages;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public abstract class XmlSingleRelationshipMappingContext
+ extends XmlRelationshipMappingContext
+{
+ private Collection<JoinColumnContext> joinColumnContexts;
+
+ protected XmlSingleRelationshipMappingContext(
+ IContext parentContext, XmlSingleRelationshipMapping mapping) {
+ super(parentContext, mapping);
+ this.joinColumnContexts = buildJoinColumnContexts();
+ }
+
+ protected Collection<JoinColumnContext> buildJoinColumnContexts() {
+ Collection<JoinColumnContext> contexts = new ArrayList<JoinColumnContext>();
+ for (Iterator<IJoinColumn> i = singleRelationshipMapping().getJoinColumns().iterator(); i.hasNext(); ) {
+ contexts.add(new JoinColumnContext(this, i.next()));
+ }
+ return contexts;
+ }
+
+ protected XmlSingleRelationshipMapping singleRelationshipMapping() {
+ return (XmlSingleRelationshipMapping) relationshipMapping();
+ }
+
+
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ super.refreshDefaults(defaultsContext);
+ for (JoinColumnContext context : this.joinColumnContexts) {
+ context.refreshDefaults(defaultsContext);
+ }
+ }
+
+ @Override
+ protected Object getDefault(String key, DefaultsContext defaultsContext) {
+ /**
+ * by default, the join column is in the type mapping's primary table
+ */
+ if (key.equals(BaseJpaPlatform.DEFAULT_JOIN_COLUMN_TABLE_KEY)) {
+ return singleRelationshipMapping().typeMapping().getTableName();
+ }
+ return super.getDefault(key, defaultsContext);
+ }
+
+ @Override
+ public void addToMessages(List<IMessage> messages) {
+ super.addToMessages(messages);
+
+ addJoinColumnMessages(messages);
+ }
+
+ protected void addJoinColumnMessages(List<IMessage> messages) {
+ XmlSingleRelationshipMapping mapping = singleRelationshipMapping();
+ ITypeMapping typeMapping = mapping.typeMapping();
+
+ for (IJoinColumn joinColumn : mapping.getJoinColumns()) {
+ String table = joinColumn.getTable();
+ boolean doContinue = joinColumn.isConnected();
+
+ if (doContinue && typeMapping.tableNameIsInvalid(table)) {
+ if (mapping.isVirtual()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.VIRTUAL_ATTRIBUTE_JOIN_COLUMN_UNRESOLVED_TABLE,
+ new String[] {mapping.getPersistentAttribute().getName(), table, joinColumn.getName()},
+ joinColumn, joinColumn.getTableTextRange())
+ );
+ }
+ else {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.JOIN_COLUMN_UNRESOLVED_TABLE,
+ new String[] {table, joinColumn.getName()},
+ joinColumn, joinColumn.getTableTextRange())
+ );
+ }
+ doContinue = false;
+ }
+
+ if (doContinue && ! joinColumn.isResolved()) {
+ if (mapping.isVirtual()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.VIRTUAL_ATTRIBUTE_JOIN_COLUMN_UNRESOLVED_NAME,
+ new String[] {mapping.getPersistentAttribute().getName(), joinColumn.getName()},
+ joinColumn, joinColumn.getNameTextRange())
+ );
+ }
+ else {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.JOIN_COLUMN_UNRESOLVED_NAME,
+ new String[] {joinColumn.getName()},
+ joinColumn, joinColumn.getNameTextRange())
+ );
+ }
+ }
+
+ if (doContinue && ! joinColumn.isReferencedColumnResolved()) {
+ if (mapping.isVirtual()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.VIRTUAL_ATTRIBUTE_JOIN_COLUMN_REFERENCED_COLUMN_UNRESOLVED_NAME,
+ new String[] {mapping.getPersistentAttribute().getName(), joinColumn.getReferencedColumnName(), joinColumn.getName()},
+ joinColumn, joinColumn.getReferencedColumnNameTextRange())
+ );
+ }
+ else {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.JOIN_COLUMN_REFERENCED_COLUMN_UNRESOLVED_NAME,
+ new String[] {joinColumn.getReferencedColumnName(), joinColumn.getName()},
+ joinColumn, joinColumn.getReferencedColumnNameTextRange())
+ );
+ }
+ }
+ }
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlTransientContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlTransientContext.java
new file mode 100644
index 0000000000..c5b824ca27
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlTransientContext.java
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import org.eclipse.jpt.core.internal.content.orm.XmlTransient;
+
+public class XmlTransientContext
+ extends XmlAttributeContext
+{
+ public XmlTransientContext(
+ IContext parentContext, XmlTransient mapping) {
+ super(parentContext, mapping);
+ }
+
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlTypeContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlTypeContext.java
new file mode 100644
index 0000000000..08a00cdbf4
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlTypeContext.java
@@ -0,0 +1,368 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.IPersistentAttribute;
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.content.java.IJavaTypeMapping;
+import org.eclipse.jpt.core.internal.content.java.JavaPersistentType;
+import org.eclipse.jpt.core.internal.content.orm.OrmFactory;
+import org.eclipse.jpt.core.internal.content.orm.XmlAttributeMapping;
+import org.eclipse.jpt.core.internal.content.orm.XmlBasic;
+import org.eclipse.jpt.core.internal.content.orm.XmlEmbedded;
+import org.eclipse.jpt.core.internal.content.orm.XmlEmbeddedId;
+import org.eclipse.jpt.core.internal.content.orm.XmlId;
+import org.eclipse.jpt.core.internal.content.orm.XmlManyToMany;
+import org.eclipse.jpt.core.internal.content.orm.XmlManyToOne;
+import org.eclipse.jpt.core.internal.content.orm.XmlNullAttributeMapping;
+import org.eclipse.jpt.core.internal.content.orm.XmlOneToMany;
+import org.eclipse.jpt.core.internal.content.orm.XmlOneToOne;
+import org.eclipse.jpt.core.internal.content.orm.XmlPersistentAttribute;
+import org.eclipse.jpt.core.internal.content.orm.XmlPersistentType;
+import org.eclipse.jpt.core.internal.content.orm.XmlTransient;
+import org.eclipse.jpt.core.internal.content.orm.XmlTypeMapping;
+import org.eclipse.jpt.core.internal.content.orm.XmlVersion;
+import org.eclipse.jpt.core.internal.validation.IJpaValidationMessages;
+import org.eclipse.jpt.core.internal.validation.JpaValidationMessages;
+import org.eclipse.jpt.utility.internal.StringTools;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public abstract class XmlTypeContext extends BaseContext
+ implements TypeContext
+{
+ private XmlTypeMapping xmlTypeMapping;
+
+ private JavaTypeContext javaTypeContext;
+
+ private Collection<XmlAttributeContext> attributeMappingContexts;
+
+ private Collection<XmlAttributeContext> virtualAttributeMappingContexts;
+
+ private boolean refreshed;
+
+ public XmlTypeContext(MappingFileContext parentContext, XmlTypeMapping xmlTypeMapping) {
+ super(parentContext);
+ this.xmlTypeMapping = xmlTypeMapping;
+ this.attributeMappingContexts = new ArrayList<XmlAttributeContext>();
+ this.virtualAttributeMappingContexts = new ArrayList<XmlAttributeContext>();
+ }
+
+ public void initialize() {
+ JavaPersistentType javaPersistentType = javaPersistentType();
+ PersistenceUnitContext puContext = getMappingFileContext().getPersistenceUnitContext();
+ if (javaPersistentType != null) {
+ if (puContext.containsDuplicateJavaPersistentType(javaPersistentType)) {
+ return;
+ }
+ JavaTypeContext javaContext =
+ (JavaTypeContext) getPlatform().buildJavaTypeContext(this, javaPersistentType.getMapping());
+ XmlTypeContext duplicate = puContext.xmlTypeMappingContextFor(javaPersistentType.getMapping());
+ if (duplicate != null) {
+ duplicate.setDuplicateJavaTypeMapping();
+ puContext.addDuplicateJpaFile(javaContext);
+ return;
+ }
+ this.javaTypeContext = javaContext;
+ }
+
+ initializeAttributeMappingContexts();
+ }
+
+ protected void initializeAttributeMappingContexts() {
+ for (XmlAttributeMapping xmlAttributeMapping: this.xmlTypeMapping.getPersistentType().getSpecifiedAttributeMappings()) {
+ this.attributeMappingContexts.add(buildContext(xmlAttributeMapping));
+ }
+ }
+
+ protected XmlAttributeContext buildContext(XmlAttributeMapping attributeMapping) {
+ String key = attributeMapping.getKey();
+ if (key == IMappingKeys.ID_ATTRIBUTE_MAPPING_KEY) {
+ return new XmlIdContext(this, (XmlId) attributeMapping);
+ }
+ else if (key == IMappingKeys.BASIC_ATTRIBUTE_MAPPING_KEY) {
+ return new XmlBasicContext(this, (XmlBasic) attributeMapping);
+ }
+ else if (key == IMappingKeys.ONE_TO_MANY_ATTRIBUTE_MAPPING_KEY) {
+ return new XmlOneToManyContext(this, (XmlOneToMany) attributeMapping);
+ }
+ else if (key == IMappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY) {
+ return new XmlManyToOneContext(this, (XmlManyToOne) attributeMapping);
+ }
+ else if (key == IMappingKeys.MANY_TO_MANY_ATTRIBUTE_MAPPING_KEY) {
+ return new XmlManyToManyContext(this, (XmlManyToMany) attributeMapping);
+ }
+ else if (key == IMappingKeys.TRANSIENT_ATTRIBUTE_MAPPING_KEY) {
+ return new XmlTransientContext(this, (XmlTransient) attributeMapping);
+ }
+ else if (key == IMappingKeys.EMBEDDED_ATTRIBUTE_MAPPING_KEY) {
+ return new XmlEmbeddedContext(this, (XmlEmbedded) attributeMapping);
+ }
+ else if (key == IMappingKeys.EMBEDDED_ID_ATTRIBUTE_MAPPING_KEY) {
+ return new XmlEmbeddedIdContext(this, (XmlEmbeddedId) attributeMapping);
+ }
+ else if (key == IMappingKeys.VERSION_ATTRIBUTE_MAPPING_KEY) {
+ return new XmlVersionContext(this, (XmlVersion) attributeMapping);
+ }
+ else if (key == IMappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY) {
+ return new XmlOneToOneContext(this, (XmlOneToOne) attributeMapping);
+ }
+ else if (key == null) {
+ return new XmlNullAttributeMappingContext(this, (XmlNullAttributeMapping) attributeMapping);
+ }
+ else {
+ throw new IllegalArgumentException(attributeMapping.toString());
+ }
+ }
+
+ protected void populateGeneratorRepository(GeneratorRepository generatorRepository) {
+ //override as necessary
+ }
+
+ protected Collection<XmlAttributeContext> getXmlAttributeContexts() {
+ return this.attributeMappingContexts;
+ }
+
+ protected MappingFileContext getMappingFileContext() {
+ return (MappingFileContext) getParentContext();
+ }
+
+ protected XmlTypeMapping getXmlTypeMapping() {
+ return this.xmlTypeMapping;
+ }
+
+ protected JavaTypeContext getJavaPersistentTypeContext() {
+ return this.javaTypeContext;
+ }
+
+ protected IJavaTypeMapping getJavaTypeMapping() {
+ if (this.javaTypeContext != null) {
+ return this.javaTypeContext.getPersistentType().getMapping();
+ }
+ return null;
+ }
+
+ protected JavaPersistentType javaPersistentType() {
+ return this.xmlTypeMapping.getPersistentType().findJavaPersistentType();
+ }
+
+ protected IJavaTypeMapping javaTypeMapping() {
+ JavaPersistentType javaPersistentType = javaPersistentType();
+ if (javaPersistentType != null) {
+ return javaPersistentType.getMapping();
+ }
+ return null;
+ }
+ /**
+ * A java class is specified to be mapped in to orm.xml files in the same persistence unit.
+ * Null out the javaTypeMapping for this case, so that the context is no longer a particular
+ * orm.xml file.
+ */
+ public void setDuplicateJavaTypeMapping() {
+ this.javaTypeContext = null;
+ }
+
+ public DefaultsContext wrapDefaultsContext(final DefaultsContext defaultsContext) {
+ return new DefaultsContext() {
+ public Object getDefault(String key) {
+ return XmlTypeContext.this.getDefault(key, defaultsContext);
+ }
+
+ public IPersistentType persistentType(String fullyQualifiedTypeName) {
+ return defaultsContext.persistentType(fullyQualifiedTypeName);
+ }
+ };
+ }
+
+
+ protected Object getDefault(String key, DefaultsContext defaultsContext) {
+ return defaultsContext.getDefault(key);
+ }
+
+ public XmlPersistentType getPersistentType() {
+ return getXmlTypeMapping().getPersistentType();
+ }
+
+ public boolean isRefreshed() {
+ return this.refreshed;
+ }
+
+ public void refreshDefaults(DefaultsContext parentDefaults) {
+ super.refreshDefaults(parentDefaults);
+ this.refreshed = true;
+ if (this.javaTypeContext != null) {
+ this.javaTypeContext.refreshDefaults(parentDefaults);
+ }
+ refreshPersistentType(parentDefaults);
+ DefaultsContext wrappedDefaultsContext = wrapDefaultsContext(parentDefaults);
+ refreshTableContext(wrappedDefaultsContext);
+ this.xmlTypeMapping.refreshDefaults(wrappedDefaultsContext);
+
+ refreshAttributeMappingContextDefaults(wrappedDefaultsContext);
+ }
+
+ protected void refreshTableContext(DefaultsContext defaultsContext) {
+ }
+
+ public void refreshAttributeMappingContextDefaults(DefaultsContext defaultsContext) {
+ for (XmlAttributeContext context : this.attributeMappingContexts) {
+ context.refreshDefaults(context.wrapDefaultsContext(defaultsContext));
+ }
+ for (XmlAttributeContext context : this.virtualAttributeMappingContexts) {
+ context.refreshDefaults(context.wrapDefaultsContext(defaultsContext));
+ }
+ }
+
+
+ protected void refreshPersistentType(DefaultsContext defaultsContext) {
+ XmlPersistentType xmlPersistentType = this.getXmlTypeMapping().getPersistentType();
+ xmlPersistentType.refreshDefaults(defaultsContext);
+ //get the java attribute names
+ //check the specified xml attributes (those with an element in the xml), add
+ //a xmlAttribute mapping for any java attribute name with default = true
+ //if we already have an xml attribute mapping, then do nothing,
+ //the defaults refresh will get forwarded on the attribute mappings later.
+ Collection<IPersistentAttribute> javaAttributes = javaAttributes();
+ Collection<String> javaAttributeNames = new ArrayList<String>();
+ for (IPersistentAttribute javaAttribute : javaAttributes) {
+ String javaAttributeName = javaAttribute.getName();
+ javaAttributeNames.add(javaAttributeName);
+ XmlPersistentAttribute xmlAttribute = xmlPersistentType.attributeNamed(javaAttributeName);
+ if (xmlAttribute == null) {
+ createAndAddXmlAttributeFrom(javaAttribute, xmlPersistentType);
+ }
+ }
+
+ //remove any default mappings that are not included in the javaAttributeNames collection
+ Collection<XmlAttributeMapping> mappingsToRemove = new ArrayList<XmlAttributeMapping>();
+ for (XmlAttributeMapping mapping : xmlPersistentType.getVirtualAttributeMappings()) {
+ if (!javaAttributeNames.contains(mapping.getPersistentAttribute().getName())) {
+ mappingsToRemove.add(mapping);
+ }
+ }
+
+ xmlPersistentType.getVirtualAttributeMappings().removeAll(mappingsToRemove);
+
+ for (XmlAttributeMapping xmlAttributeMapping : this.xmlTypeMapping.getPersistentType().getVirtualAttributeMappings()) {
+ this.virtualAttributeMappingContexts.add(buildContext(xmlAttributeMapping));
+ }
+}
+
+ private void createAndAddXmlAttributeFrom(IPersistentAttribute javaAttribute, XmlPersistentType persistentType) {
+ //TODO also need to check xml mapping meta data complete flags and
+ //probably move all of this code to the context classes
+ XmlAttributeMapping xmlAttributeMapping = null;
+ String mappingKey;
+ if (persistentType.getMapping().isXmlMetadataComplete()) {
+ mappingKey = javaAttribute.defaultKey();
+ }
+ else {
+ mappingKey = javaAttribute.getMapping().getKey();
+ }
+ if (mappingKey == IMappingKeys.BASIC_ATTRIBUTE_MAPPING_KEY) {
+ xmlAttributeMapping = OrmFactory.eINSTANCE.createXmlBasic();
+ }
+ else if (mappingKey == IMappingKeys.ID_ATTRIBUTE_MAPPING_KEY) {
+ xmlAttributeMapping = OrmFactory.eINSTANCE.createXmlId();
+ }
+ else if (mappingKey == IMappingKeys.MANY_TO_MANY_ATTRIBUTE_MAPPING_KEY) {
+ xmlAttributeMapping = OrmFactory.eINSTANCE.createXmlManyToMany();
+ }
+ else if (mappingKey == IMappingKeys.MANY_TO_ONE_ATTRIBUTE_MAPPING_KEY) {
+ xmlAttributeMapping = OrmFactory.eINSTANCE.createXmlManyToOne();
+ }
+ else if (mappingKey == IMappingKeys.ONE_TO_MANY_ATTRIBUTE_MAPPING_KEY) {
+ xmlAttributeMapping = OrmFactory.eINSTANCE.createXmlOneToMany();
+ }
+ else if (mappingKey == IMappingKeys.TRANSIENT_ATTRIBUTE_MAPPING_KEY) {
+ xmlAttributeMapping = OrmFactory.eINSTANCE.createXmlTransient();
+ }
+ else if (mappingKey == IMappingKeys.EMBEDDED_ATTRIBUTE_MAPPING_KEY) {
+ xmlAttributeMapping = OrmFactory.eINSTANCE.createXmlEmbedded();
+ }
+ else if (mappingKey == IMappingKeys.EMBEDDED_ID_ATTRIBUTE_MAPPING_KEY) {
+ xmlAttributeMapping = OrmFactory.eINSTANCE.createXmlEmbeddedId();
+ }
+ else if (mappingKey == IMappingKeys.VERSION_ATTRIBUTE_MAPPING_KEY) {
+ xmlAttributeMapping = OrmFactory.eINSTANCE.createXmlVersion();
+ }
+ else if (mappingKey == IMappingKeys.ONE_TO_ONE_ATTRIBUTE_MAPPING_KEY) {
+ xmlAttributeMapping = OrmFactory.eINSTANCE.createXmlOneToOne();
+ }
+ else if (mappingKey == null) {
+ xmlAttributeMapping = OrmFactory.eINSTANCE.createXmlNullAttributeMapping();
+ }
+ //TODO this isn't the way to do it, should update all the settings on the default mapping
+ // during the refresh defaults of attribute mappings
+ //xmlAttributeMapping.initializeFromAttributeMapping(javaAttribute.getMapping());
+ persistentType.getVirtualAttributeMappings().add(xmlAttributeMapping);
+ xmlAttributeMapping.getPersistentAttribute().setName(javaAttribute.getName());
+ }
+
+ protected Collection<IPersistentAttribute> javaAttributes() {
+ Collection<IPersistentAttribute> javaAttributes = new ArrayList<IPersistentAttribute>();
+ JavaPersistentType javaPersistentType = javaPersistentType();
+ if (javaPersistentType != null) {
+ for (Iterator<IPersistentAttribute> i = javaPersistentType.attributes(); i.hasNext(); ) {
+ IPersistentAttribute persistentAttribute = i.next();
+ javaAttributes.add(persistentAttribute);
+ }
+ }
+ return javaAttributes;
+ }
+
+ @Override
+ public void addToMessages(List<IMessage> messages) {
+ super.addToMessages(messages);
+ addClassMessages(messages);
+
+ for (XmlAttributeContext context : this.attributeMappingContexts) {
+ context.addToMessages(messages);
+ }
+ for (XmlAttributeContext context : this.virtualAttributeMappingContexts) {
+ context.addToMessages(messages);
+ }
+ }
+
+ protected void addClassMessages(List<IMessage> messages) {
+ addUnspecifiedClassMessage(messages);
+ addUnresolvedClassMessage(messages);
+ }
+
+ protected void addUnspecifiedClassMessage(List<IMessage> messages) {
+ XmlPersistentType persistentType = xmlTypeMapping.getPersistentType();
+ if (StringTools.stringIsEmpty(persistentType.getClass_())) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.PERSISTENT_TYPE_UNSPECIFIED_CLASS,
+ persistentType, persistentType.getClassTextRange())
+ );
+ }
+ }
+
+ protected void addUnresolvedClassMessage(List<IMessage> messages) {
+ XmlPersistentType persistentType = xmlTypeMapping.getPersistentType();
+ if (! StringTools.stringIsEmpty(persistentType.getClass_())
+ && persistentType.findJdtType() == null) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.PERSISTENT_TYPE_UNRESOLVED_CLASS,
+ new String[] {persistentType.getClass_()},
+ persistentType, persistentType.getClassTextRange())
+ );
+ }
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlVersionContext.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlVersionContext.java
new file mode 100644
index 0000000000..d1e9bbd293
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/XmlVersionContext.java
@@ -0,0 +1,129 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0, which accompanies this distribution
+ * and is available at http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.platform;
+
+import java.util.List;
+import org.eclipse.jpt.core.internal.IAttributeMapping;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.content.java.mappings.JavaVersion;
+import org.eclipse.jpt.core.internal.content.orm.XmlVersion;
+import org.eclipse.jpt.core.internal.mappings.IColumn;
+import org.eclipse.jpt.core.internal.validation.IJpaValidationMessages;
+import org.eclipse.jpt.core.internal.validation.JpaValidationMessages;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public class XmlVersionContext
+ extends XmlAttributeContext
+{
+ private ColumnContext columnContext;
+
+ public XmlVersionContext(
+ IContext parentContext, XmlVersion xmlVersion) {
+ super(parentContext, xmlVersion);
+ this.columnContext = new ColumnContext(this, xmlVersion.getColumn());
+ }
+
+ @Override
+ public void refreshDefaults(DefaultsContext defaultsContext) {
+ super.refreshDefaults(defaultsContext);
+ this.columnContext.refreshDefaults(defaultsContext);
+ }
+
+ @Override
+ protected Object getDefault(String key, DefaultsContext defaultsContext) {
+ if (key.equals(BaseJpaPlatform.DEFAULT_COLUMN_NAME_KEY)) {
+ if (attributeMapping().getPersistentAttribute().isVirtual()) {
+ if (javaVersionMapping() != null) {
+ if (!attributeMapping().getPersistentType().getMapping().isXmlMetadataComplete()) {
+ return javaVersionMapping().getColumn().getName();
+ }
+ return javaVersionMapping().getColumn().getDefaultName();
+ }
+ }
+ //doesn't matter what's in the java @Column annotation because it is completely
+ //overriden as soon as you specify the attribute in xml.
+ return attributeMapping().getPersistentAttribute().getName();
+ }
+
+ return super.getDefault(key, defaultsContext);
+ }
+
+ protected JavaVersion javaVersionMapping() {
+ IAttributeMapping attributeMapping = javaAttributeMapping();
+ if (attributeMapping.getKey() == IMappingKeys.VERSION_ATTRIBUTE_MAPPING_KEY) {
+ return (JavaVersion) attributeMapping;
+ }
+ return null;
+ }
+
+ protected XmlVersion getVersion() {
+ return (XmlVersion) attributeMapping();
+ }
+
+ public void addToMessages(List<IMessage> messages) {
+ super.addToMessages(messages);
+
+ if (entityOwned()) {
+ addColumnMessages(messages);
+ }
+ }
+
+ protected void addColumnMessages(List<IMessage> messages) {
+ XmlVersion version = getVersion();
+ ITypeMapping typeMapping = version.typeMapping();
+ IColumn column = version.getColumn();
+ String table = column.getTable();
+ boolean doContinue = entityOwned() && column.isConnected();
+
+ if (doContinue && typeMapping.tableNameIsInvalid(table)) {
+ if (version.isVirtual()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.VIRTUAL_ATTRIBUTE_COLUMN_UNRESOLVED_TABLE,
+ new String[] {version.getPersistentAttribute().getName(), table, column.getName()},
+ column, column.getTableTextRange())
+ );
+ }
+ else {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.COLUMN_UNRESOLVED_TABLE,
+ new String[] {table, column.getName()},
+ column, column.getTableTextRange())
+ );
+ }
+ doContinue = false;
+ }
+
+ if (doContinue && ! column.isResolved()) {
+ if (version.isVirtual()) {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.VIRTUAL_ATTRIBUTE_COLUMN_UNRESOLVED_NAME,
+ new String[] {version.getPersistentAttribute().getName(), column.getName()},
+ column, column.getNameTextRange())
+ );
+ }
+ else {
+ messages.add(
+ JpaValidationMessages.buildMessage(
+ IMessage.HIGH_SEVERITY,
+ IJpaValidationMessages.COLUMN_UNRESOLVED_NAME,
+ new String[] {column.getName()},
+ column, column.getNameTextRange())
+ );
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/generic/GenericPlatform.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/generic/GenericPlatform.java
new file mode 100644
index 0000000000..5776081cf2
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/generic/GenericPlatform.java
@@ -0,0 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.platform.generic;
+
+import org.eclipse.jpt.core.internal.platform.BaseJpaPlatform;
+
+public class GenericPlatform
+ extends BaseJpaPlatform
+{
+ public final static String ID = "generic";
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/prefs/JpaPreferenceConstants.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/prefs/JpaPreferenceConstants.java
new file mode 100644
index 0000000000..ef701b6bb7
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/prefs/JpaPreferenceConstants.java
@@ -0,0 +1,17 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.prefs;
+
+/**
+ * Constant definitions for plug-in preferences
+ */
+public class JpaPreferenceConstants
+{
+ public static final String PREF_DEFAULT_JPA_LIB = "defaultJpaLib";
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/prefs/JpaPreferenceInitializer.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/prefs/JpaPreferenceInitializer.java
new file mode 100644
index 0000000000..10babb8982
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/prefs/JpaPreferenceInitializer.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.prefs;
+
+import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
+import org.eclipse.core.runtime.preferences.DefaultScope;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.jpt.core.internal.JpaCorePlugin;
+
+/**
+ * Class used to initialize default preference values.
+ */
+public class JpaPreferenceInitializer extends AbstractPreferenceInitializer
+{
+ /**
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer#initializeDefaultPreferences()
+ */
+ public void initializeDefaultPreferences() {
+ IEclipsePreferences node = new DefaultScope().getNode(JpaCorePlugin.getPlugin().getBundle().getSymbolicName());
+
+ // default JPA library
+ node.put(JpaPreferenceConstants.PREF_DEFAULT_JPA_LIB, "");
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/synch/SynchronizeClassesJob.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/synch/SynchronizeClassesJob.java
new file mode 100644
index 0000000000..285597e929
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/synch/SynchronizeClassesJob.java
@@ -0,0 +1,194 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved. This
+ * program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors: Oracle. - initial API and implementation
+ *
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.synch;
+
+import java.io.IOException;
+import java.util.Iterator;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jem.java.JavaClass;
+import org.eclipse.jem.java.JavaRefFactory;
+import org.eclipse.jpt.core.internal.IJpaFile;
+import org.eclipse.jpt.core.internal.IJpaProject;
+import org.eclipse.jpt.core.internal.IMappingKeys;
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.JpaCoreMessages;
+import org.eclipse.jpt.core.internal.JpaCorePlugin;
+import org.eclipse.jpt.core.internal.content.java.JpaCompilationUnit;
+import org.eclipse.jpt.core.internal.content.orm.EntityMappingsInternal;
+import org.eclipse.jpt.core.internal.content.orm.XmlRootContentNode;
+import org.eclipse.jpt.core.internal.content.persistence.JavaClassRef;
+import org.eclipse.jpt.core.internal.content.persistence.MappingFileRef;
+import org.eclipse.jpt.core.internal.content.persistence.Persistence;
+import org.eclipse.jpt.core.internal.content.persistence.PersistenceFactory;
+import org.eclipse.jpt.core.internal.content.persistence.PersistenceUnit;
+import org.eclipse.jpt.core.internal.content.persistence.PersistenceXmlRootContentNode;
+import org.eclipse.jpt.core.internal.content.persistence.resource.PersistenceResource;
+import org.eclipse.jpt.utility.internal.CollectionTools;
+import org.eclipse.jpt.utility.internal.Filter;
+import org.eclipse.jpt.utility.internal.iterators.FilteringIterator;
+import org.eclipse.jpt.utility.internal.iterators.TransformationIterator;
+
+/**
+ * Synchronizes the lists of persistent classes in a persistence unit and a
+ * persistence project.
+ */
+public class SynchronizeClassesJob extends Job
+{
+ private IFile persistenceXmlFile;
+
+
+ public SynchronizeClassesJob(IFile file) {
+ super(JpaCoreMessages.SYNCHRONIZE_CLASSES_JOB);
+ persistenceXmlFile = file;
+ }
+
+ protected IStatus run(IProgressMonitor monitor) {
+ IProject project = persistenceXmlFile.getProject();
+
+ monitor.beginTask(JpaCoreMessages.SYNCHRONIZING_CLASSES_TASK, 150);
+
+ if (monitor.isCanceled()) {
+ return Status.CANCEL_STATUS;
+ }
+
+ IJpaFile jpaFile = JpaCorePlugin.getJpaFile(persistenceXmlFile);
+ PersistenceXmlRootContentNode root;
+ try {
+ root = (PersistenceXmlRootContentNode) jpaFile.getContent();
+ }
+ catch (ClassCastException cce) {
+ return new Status(Status.ERROR, JpaCorePlugin.PLUGIN_ID, JpaCoreMessages.INVALID_PERSISTENCE_XML_CONTENT);
+ }
+
+ Persistence persistence = root.getPersistence();
+
+ if (persistence == null) {
+ persistence = PersistenceFactory.eINSTANCE.createPersistence();
+ root.setPersistence(persistence);
+ }
+
+ PersistenceUnit persistenceUnit;
+
+ if (persistence.getPersistenceUnits().size() > 0) {
+ persistenceUnit = persistence.getPersistenceUnits().get(0);
+ }
+ else {
+ persistenceUnit = PersistenceFactory.eINSTANCE.createPersistenceUnit();
+ persistenceUnit.setName(persistenceXmlFile.getProject().getName());
+ persistence.getPersistenceUnits().add(persistenceUnit);
+ }
+
+ PersistenceResource resource = (PersistenceResource) persistenceUnit.eResource();
+
+ persistenceUnit.getClasses().clear();
+ for (Iterator<String> stream = mappedTypeNames(persistenceUnit); stream.hasNext(); ) {
+ String typeName = stream.next();
+ JavaClassRef classRef = PersistenceFactory.eINSTANCE.createJavaClassRef();
+ JavaClass javaClass = (JavaClass) JavaRefFactory.eINSTANCE.reflectType(typeName, resource.getResourceSet());
+ classRef.setJavaClass(javaClass);
+ persistenceUnit.getClasses().add(classRef);
+ }
+
+ monitor.worked(50);
+
+ try {
+ resource.save(null);
+ }
+ catch (IOException ioe) {
+ return new Status(Status.ERROR, JpaCorePlugin.PLUGIN_ID, JpaCoreMessages.ERROR_WRITING_FILE, ioe);
+ }
+
+ return Status.OK_STATUS;
+ }
+
+ private Iterator<String> mappedTypeNames(PersistenceUnit persistenceUnit) {
+ return CollectionTools.sort(
+ new TransformationIterator<IPersistentType, String>(mappedTypes(persistenceUnit)) {
+ @Override
+ protected String transform(IPersistentType next) {
+ return next.findJdtType().getFullyQualifiedName();
+ }
+ }
+ );
+ }
+
+ private Iterator<IPersistentType> mappedTypes(PersistenceUnit persistenceUnit) {
+ return new FilteringIterator<IPersistentType>(allJavaTypes(persistenceUnit.getJpaProject()), filter(persistenceUnit));
+ }
+
+ private Iterator<IPersistentType> allJavaTypes(IJpaProject jpaProject) {
+ return new TransformationIterator<IJpaFile, IPersistentType>(jpaProject.jpaFiles(JpaCorePlugin.JAVA_CONTENT_TYPE).iterator()) {
+ @Override
+ protected IPersistentType transform(IJpaFile next) {
+ JpaCompilationUnit jcu = (JpaCompilationUnit) next.getContent();
+ return (jcu.getTypes().isEmpty()) ? null : jcu.getTypes().get(0);
+ }
+ };
+ }
+
+ private Filter<IPersistentType> filter(final PersistenceUnit persistenceUnit) {
+ return new Filter<IPersistentType>() {
+ public boolean accept(IPersistentType o) {
+ if (o == null) {
+ return false;
+ }
+ if (o.getMappingKey() == IMappingKeys.NULL_TYPE_MAPPING_KEY) {
+ return false;
+ }
+ IType jdtType = o.findJdtType();
+ if (jdtType == null) {
+ return false;
+ }
+ for (MappingFileRef mappingFileRef : persistenceUnit.getMappingFiles()) {
+ if (containsType(mappingFileRef, jdtType)) {
+ return false;
+ }
+ }
+ return true;
+ }
+ };
+ }
+
+ private boolean containsType(MappingFileRef mappingFileRef, IType jdtType) {
+ IJpaFile mappingFile = mappingFileRef.getMappingFile();
+ if (mappingFile == null) {
+ return false;
+ }
+
+ XmlRootContentNode root;
+ try {
+ root = (XmlRootContentNode) mappingFile.getContent();
+ }
+ catch (ClassCastException cce) {
+ return false;
+ }
+
+ EntityMappingsInternal entityMappings = root.getEntityMappings();
+
+ if (entityMappings == null) {
+ return false;
+ }
+
+ for (IPersistentType persistentType : entityMappings.getPersistentTypes()) {
+ IType otherJdtType = persistentType.findJdtType();
+ if (otherJdtType != null && otherJdtType.equals(jdtType)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/util/JpaCoreAdapterFactory.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/util/JpaCoreAdapterFactory.java
new file mode 100644
index 0000000000..5d9b3353ee
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/util/JpaCoreAdapterFactory.java
@@ -0,0 +1,524 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.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.jpt.core.internal.IAttributeMapping;
+import org.eclipse.jpt.core.internal.IJpaContentNode;
+import org.eclipse.jpt.core.internal.IJpaDataSource;
+import org.eclipse.jpt.core.internal.IJpaEObject;
+import org.eclipse.jpt.core.internal.IJpaFile;
+import org.eclipse.jpt.core.internal.IJpaModel;
+import org.eclipse.jpt.core.internal.IJpaPlatform;
+import org.eclipse.jpt.core.internal.IJpaProject;
+import org.eclipse.jpt.core.internal.IJpaRootContentNode;
+import org.eclipse.jpt.core.internal.IJpaSourceObject;
+import org.eclipse.jpt.core.internal.IPersistentAttribute;
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.IXmlEObject;
+import org.eclipse.jpt.core.internal.JpaCorePackage;
+import org.eclipse.jpt.core.internal.JpaDataSource;
+import org.eclipse.jpt.core.internal.JpaEObject;
+import org.eclipse.jpt.core.internal.JpaFile;
+import org.eclipse.jpt.core.internal.JpaModel;
+import org.eclipse.jpt.core.internal.JpaProject;
+import org.eclipse.jpt.core.internal.NullTypeMapping;
+import org.eclipse.jpt.core.internal.XmlEObject;
+
+/**
+ * <!-- 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.jpt.core.internal.JpaCorePackage
+ * @generated
+ */
+public class JpaCoreAdapterFactory extends AdapterFactoryImpl
+{
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static JpaCorePackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JpaCoreAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = JpaCorePackage.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 JpaCoreSwitch<Adapter> modelSwitch = new JpaCoreSwitch<Adapter>() {
+ @Override
+ public Adapter caseIJpaModel(IJpaModel object) {
+ return createIJpaModelAdapter();
+ }
+
+ @Override
+ public Adapter caseJpaModel(JpaModel object) {
+ return createJpaModelAdapter();
+ }
+
+ @Override
+ public Adapter caseIJpaEObject(IJpaEObject object) {
+ return createIJpaEObjectAdapter();
+ }
+
+ @Override
+ public Adapter caseJpaEObject(JpaEObject object) {
+ return createJpaEObjectAdapter();
+ }
+
+ @Override
+ public Adapter caseIJpaProject(IJpaProject object) {
+ return createIJpaProjectAdapter();
+ }
+
+ @Override
+ public Adapter caseJpaProject(JpaProject object) {
+ return createJpaProjectAdapter();
+ }
+
+ @Override
+ public Adapter caseIJpaPlatform(IJpaPlatform object) {
+ return createIJpaPlatformAdapter();
+ }
+
+ @Override
+ public Adapter caseIJpaDataSource(IJpaDataSource object) {
+ return createIJpaDataSourceAdapter();
+ }
+
+ @Override
+ public Adapter caseJpaDataSource(JpaDataSource object) {
+ return createJpaDataSourceAdapter();
+ }
+
+ @Override
+ public Adapter caseIJpaFile(IJpaFile object) {
+ return createIJpaFileAdapter();
+ }
+
+ @Override
+ public Adapter caseJpaFile(JpaFile object) {
+ return createJpaFileAdapter();
+ }
+
+ @Override
+ public Adapter caseIJpaSourceObject(IJpaSourceObject object) {
+ return createIJpaSourceObjectAdapter();
+ }
+
+ @Override
+ public Adapter caseIXmlEObject(IXmlEObject object) {
+ return createIXmlEObjectAdapter();
+ }
+
+ @Override
+ public Adapter caseXmlEObject(XmlEObject object) {
+ return createXmlEObjectAdapter();
+ }
+
+ @Override
+ public Adapter caseIJpaContentNode(IJpaContentNode object) {
+ return createIJpaContentNodeAdapter();
+ }
+
+ @Override
+ public Adapter caseIJpaRootContentNode(IJpaRootContentNode object) {
+ return createIJpaRootContentNodeAdapter();
+ }
+
+ @Override
+ public Adapter caseIPersistentType(IPersistentType object) {
+ return createIPersistentTypeAdapter();
+ }
+
+ @Override
+ public Adapter caseITypeMapping(ITypeMapping object) {
+ return createITypeMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseNullTypeMapping(NullTypeMapping object) {
+ return createNullTypeMappingAdapter();
+ }
+
+ @Override
+ public Adapter caseIPersistentAttribute(IPersistentAttribute object) {
+ return createIPersistentAttributeAdapter();
+ }
+
+ @Override
+ public Adapter caseIAttributeMapping(IAttributeMapping object) {
+ return createIAttributeMappingAdapter();
+ }
+
+ @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.jpt.core.internal.IJpaModel <em>IJpa 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.jpt.core.internal.IJpaModel
+ * @generated
+ */
+ public Adapter createIJpaModelAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.JpaModel <em>Jpa 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.jpt.core.internal.JpaModel
+ * @generated
+ */
+ public Adapter createJpaModelAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IJpaEObject <em>IJpa EObject</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.jpt.core.internal.IJpaEObject
+ * @generated
+ */
+ public Adapter createIJpaEObjectAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.JpaEObject <em>Jpa EObject</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.jpt.core.internal.JpaEObject
+ * @generated
+ */
+ public Adapter createJpaEObjectAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IJpaProject <em>IJpa Project</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.jpt.core.internal.IJpaProject
+ * @generated
+ */
+ public Adapter createIJpaProjectAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.JpaProject <em>Jpa Project</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.jpt.core.internal.JpaProject
+ * @generated
+ */
+ public Adapter createJpaProjectAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IJpaFile <em>IJpa File</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.jpt.core.internal.IJpaFile
+ * @generated
+ */
+ public Adapter createIJpaFileAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.JpaFile <em>Jpa File</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.jpt.core.internal.JpaFile
+ * @generated
+ */
+ public Adapter createJpaFileAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IJpaSourceObject <em>IJpa Source Object</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.jpt.core.internal.IJpaSourceObject
+ * @generated
+ */
+ public Adapter createIJpaSourceObjectAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IXmlEObject <em>IXml EObject</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.jpt.core.internal.IXmlEObject
+ * @generated
+ */
+ public Adapter createIXmlEObjectAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IJpaContentNode <em>IJpa Content 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.jpt.core.internal.IJpaContentNode
+ * @generated
+ */
+ public Adapter createIJpaContentNodeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IJpaRootContentNode <em>IJpa Root Content 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.jpt.core.internal.IJpaRootContentNode
+ * @generated
+ */
+ public Adapter createIJpaRootContentNodeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IPersistentType <em>IPersistent Type</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.jpt.core.internal.IPersistentType
+ * @generated
+ */
+ public Adapter createIPersistentTypeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.ITypeMapping <em>IType Mapping</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.jpt.core.internal.ITypeMapping
+ * @generated
+ */
+ public Adapter createITypeMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.NullTypeMapping <em>Null Type Mapping</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.jpt.core.internal.NullTypeMapping
+ * @generated
+ */
+ public Adapter createNullTypeMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IPersistentAttribute <em>IPersistent Attribute</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.jpt.core.internal.IPersistentAttribute
+ * @generated
+ */
+ public Adapter createIPersistentAttributeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IAttributeMapping <em>IAttribute Mapping</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.jpt.core.internal.IAttributeMapping
+ * @generated
+ */
+ public Adapter createIAttributeMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.XmlEObject <em>Xml EObject</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.jpt.core.internal.XmlEObject
+ * @generated
+ */
+ public Adapter createXmlEObjectAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IJpaDataSource <em>IJpa Data Source</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.jpt.core.internal.IJpaDataSource
+ * @generated
+ */
+ public Adapter createIJpaDataSourceAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.JpaDataSource <em>Jpa Data Source</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.jpt.core.internal.JpaDataSource
+ * @generated
+ */
+ public Adapter createJpaDataSourceAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.jpt.core.internal.IJpaPlatform <em>IJpa Platform</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.jpt.core.internal.IJpaPlatform
+ * @generated
+ */
+ public Adapter createIJpaPlatformAdapter() {
+ 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;
+ }
+} //JpaCoreAdapterFactory
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/util/JpaCoreSwitch.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/util/JpaCoreSwitch.java
new file mode 100644
index 0000000000..119b101da6
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/util/JpaCoreSwitch.java
@@ -0,0 +1,675 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.util;
+
+import java.util.List;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jpt.core.internal.IAttributeMapping;
+import org.eclipse.jpt.core.internal.IJpaContentNode;
+import org.eclipse.jpt.core.internal.IJpaDataSource;
+import org.eclipse.jpt.core.internal.IJpaEObject;
+import org.eclipse.jpt.core.internal.IJpaFile;
+import org.eclipse.jpt.core.internal.IJpaModel;
+import org.eclipse.jpt.core.internal.IJpaPlatform;
+import org.eclipse.jpt.core.internal.IJpaProject;
+import org.eclipse.jpt.core.internal.IJpaRootContentNode;
+import org.eclipse.jpt.core.internal.IJpaSourceObject;
+import org.eclipse.jpt.core.internal.IPersistentAttribute;
+import org.eclipse.jpt.core.internal.IPersistentType;
+import org.eclipse.jpt.core.internal.ITypeMapping;
+import org.eclipse.jpt.core.internal.IXmlEObject;
+import org.eclipse.jpt.core.internal.JpaCorePackage;
+import org.eclipse.jpt.core.internal.JpaDataSource;
+import org.eclipse.jpt.core.internal.JpaEObject;
+import org.eclipse.jpt.core.internal.JpaFile;
+import org.eclipse.jpt.core.internal.JpaModel;
+import org.eclipse.jpt.core.internal.JpaProject;
+import org.eclipse.jpt.core.internal.NullTypeMapping;
+import org.eclipse.jpt.core.internal.XmlEObject;
+
+/**
+ * <!-- 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.jpt.core.internal.JpaCorePackage
+ * @generated
+ */
+public class JpaCoreSwitch<T>
+{
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static JpaCorePackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JpaCoreSwitch() {
+ if (modelPackage == null) {
+ modelPackage = JpaCorePackage.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 T 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 T 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 T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case JpaCorePackage.IJPA_MODEL : {
+ IJpaModel iJpaModel = (IJpaModel) theEObject;
+ T result = caseIJpaModel(iJpaModel);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCorePackage.JPA_MODEL : {
+ JpaModel jpaModel = (JpaModel) theEObject;
+ T result = caseJpaModel(jpaModel);
+ if (result == null)
+ result = caseJpaEObject(jpaModel);
+ if (result == null)
+ result = caseIJpaModel(jpaModel);
+ if (result == null)
+ result = caseIJpaEObject(jpaModel);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCorePackage.IJPA_EOBJECT : {
+ IJpaEObject iJpaEObject = (IJpaEObject) theEObject;
+ T result = caseIJpaEObject(iJpaEObject);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCorePackage.JPA_EOBJECT : {
+ JpaEObject jpaEObject = (JpaEObject) theEObject;
+ T result = caseJpaEObject(jpaEObject);
+ if (result == null)
+ result = caseIJpaEObject(jpaEObject);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCorePackage.IJPA_PROJECT : {
+ IJpaProject iJpaProject = (IJpaProject) theEObject;
+ T result = caseIJpaProject(iJpaProject);
+ if (result == null)
+ result = caseIJpaEObject(iJpaProject);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCorePackage.JPA_PROJECT : {
+ JpaProject jpaProject = (JpaProject) theEObject;
+ T result = caseJpaProject(jpaProject);
+ if (result == null)
+ result = caseJpaEObject(jpaProject);
+ if (result == null)
+ result = caseIJpaProject(jpaProject);
+ if (result == null)
+ result = caseIJpaEObject(jpaProject);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCorePackage.IJPA_PLATFORM : {
+ IJpaPlatform iJpaPlatform = (IJpaPlatform) theEObject;
+ T result = caseIJpaPlatform(iJpaPlatform);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCorePackage.IJPA_DATA_SOURCE : {
+ IJpaDataSource iJpaDataSource = (IJpaDataSource) theEObject;
+ T result = caseIJpaDataSource(iJpaDataSource);
+ if (result == null)
+ result = caseIJpaEObject(iJpaDataSource);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCorePackage.JPA_DATA_SOURCE : {
+ JpaDataSource jpaDataSource = (JpaDataSource) theEObject;
+ T result = caseJpaDataSource(jpaDataSource);
+ if (result == null)
+ result = caseJpaEObject(jpaDataSource);
+ if (result == null)
+ result = caseIJpaDataSource(jpaDataSource);
+ if (result == null)
+ result = caseIJpaEObject(jpaDataSource);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCorePackage.IJPA_FILE : {
+ IJpaFile iJpaFile = (IJpaFile) theEObject;
+ T result = caseIJpaFile(iJpaFile);
+ if (result == null)
+ result = caseIJpaEObject(iJpaFile);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCorePackage.JPA_FILE : {
+ JpaFile jpaFile = (JpaFile) theEObject;
+ T result = caseJpaFile(jpaFile);
+ if (result == null)
+ result = caseJpaEObject(jpaFile);
+ if (result == null)
+ result = caseIJpaFile(jpaFile);
+ if (result == null)
+ result = caseIJpaEObject(jpaFile);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCorePackage.IJPA_SOURCE_OBJECT : {
+ IJpaSourceObject iJpaSourceObject = (IJpaSourceObject) theEObject;
+ T result = caseIJpaSourceObject(iJpaSourceObject);
+ if (result == null)
+ result = caseIJpaEObject(iJpaSourceObject);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCorePackage.IXML_EOBJECT : {
+ IXmlEObject iXmlEObject = (IXmlEObject) theEObject;
+ T result = caseIXmlEObject(iXmlEObject);
+ if (result == null)
+ result = caseIJpaEObject(iXmlEObject);
+ if (result == null)
+ result = caseIJpaSourceObject(iXmlEObject);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCorePackage.XML_EOBJECT : {
+ XmlEObject xmlEObject = (XmlEObject) theEObject;
+ T result = caseXmlEObject(xmlEObject);
+ if (result == null)
+ result = caseJpaEObject(xmlEObject);
+ if (result == null)
+ result = caseIXmlEObject(xmlEObject);
+ if (result == null)
+ result = caseIJpaEObject(xmlEObject);
+ if (result == null)
+ result = caseIJpaSourceObject(xmlEObject);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCorePackage.IJPA_CONTENT_NODE : {
+ IJpaContentNode iJpaContentNode = (IJpaContentNode) theEObject;
+ T result = caseIJpaContentNode(iJpaContentNode);
+ if (result == null)
+ result = caseIJpaSourceObject(iJpaContentNode);
+ if (result == null)
+ result = caseIJpaEObject(iJpaContentNode);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCorePackage.IJPA_ROOT_CONTENT_NODE : {
+ IJpaRootContentNode iJpaRootContentNode = (IJpaRootContentNode) theEObject;
+ T result = caseIJpaRootContentNode(iJpaRootContentNode);
+ if (result == null)
+ result = caseIJpaContentNode(iJpaRootContentNode);
+ if (result == null)
+ result = caseIJpaSourceObject(iJpaRootContentNode);
+ if (result == null)
+ result = caseIJpaEObject(iJpaRootContentNode);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCorePackage.IPERSISTENT_TYPE : {
+ IPersistentType iPersistentType = (IPersistentType) theEObject;
+ T result = caseIPersistentType(iPersistentType);
+ if (result == null)
+ result = caseIJpaContentNode(iPersistentType);
+ if (result == null)
+ result = caseIJpaSourceObject(iPersistentType);
+ if (result == null)
+ result = caseIJpaEObject(iPersistentType);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCorePackage.ITYPE_MAPPING : {
+ ITypeMapping iTypeMapping = (ITypeMapping) theEObject;
+ T result = caseITypeMapping(iTypeMapping);
+ if (result == null)
+ result = caseIJpaSourceObject(iTypeMapping);
+ if (result == null)
+ result = caseIJpaEObject(iTypeMapping);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCorePackage.NULL_TYPE_MAPPING : {
+ NullTypeMapping nullTypeMapping = (NullTypeMapping) theEObject;
+ T result = caseNullTypeMapping(nullTypeMapping);
+ if (result == null)
+ result = caseJpaEObject(nullTypeMapping);
+ if (result == null)
+ result = caseITypeMapping(nullTypeMapping);
+ if (result == null)
+ result = caseIJpaSourceObject(nullTypeMapping);
+ if (result == null)
+ result = caseIJpaEObject(nullTypeMapping);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCorePackage.IPERSISTENT_ATTRIBUTE : {
+ IPersistentAttribute iPersistentAttribute = (IPersistentAttribute) theEObject;
+ T result = caseIPersistentAttribute(iPersistentAttribute);
+ if (result == null)
+ result = caseIJpaContentNode(iPersistentAttribute);
+ if (result == null)
+ result = caseIJpaSourceObject(iPersistentAttribute);
+ if (result == null)
+ result = caseIJpaEObject(iPersistentAttribute);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case JpaCorePackage.IATTRIBUTE_MAPPING : {
+ IAttributeMapping iAttributeMapping = (IAttributeMapping) theEObject;
+ T result = caseIAttributeMapping(iAttributeMapping);
+ if (result == null)
+ result = caseIJpaSourceObject(iAttributeMapping);
+ if (result == null)
+ result = caseIJpaEObject(iAttributeMapping);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ default :
+ return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IJpa 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 interpretting the object as an instance of '<em>IJpa Model</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIJpaModel(IJpaModel object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Jpa 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 interpretting the object as an instance of '<em>Jpa Model</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJpaModel(JpaModel object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IJpa EObject</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 interpretting the object as an instance of '<em>IJpa EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIJpaEObject(IJpaEObject object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Jpa EObject</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 interpretting the object as an instance of '<em>Jpa EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJpaEObject(JpaEObject object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IJpa Project</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 interpretting the object as an instance of '<em>IJpa Project</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIJpaProject(IJpaProject object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Jpa Project</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 interpretting the object as an instance of '<em>Jpa Project</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJpaProject(JpaProject object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IJpa File</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 interpretting the object as an instance of '<em>IJpa File</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIJpaFile(IJpaFile object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Jpa File</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 interpretting the object as an instance of '<em>Jpa File</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJpaFile(JpaFile object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IJpa Source Object</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 interpretting the object as an instance of '<em>IJpa Source Object</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIJpaSourceObject(IJpaSourceObject object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IXml EObject</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 interpretting the object as an instance of '<em>IXml EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIXmlEObject(IXmlEObject object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IJpa Content 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 interpretting the object as an instance of '<em>IJpa Content Node</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIJpaContentNode(IJpaContentNode object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IJpa Root Content 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 interpretting the object as an instance of '<em>IJpa Root Content Node</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIJpaRootContentNode(IJpaRootContentNode object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IPersistent Type</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 interpretting the object as an instance of '<em>IPersistent Type</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIPersistentType(IPersistentType object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IType Mapping</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 interpretting the object as an instance of '<em>IType Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseITypeMapping(ITypeMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Null Type Mapping</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 interpretting the object as an instance of '<em>Null Type Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseNullTypeMapping(NullTypeMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IPersistent Attribute</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 interpretting the object as an instance of '<em>IPersistent Attribute</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIPersistentAttribute(IPersistentAttribute object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IAttribute Mapping</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 interpretting the object as an instance of '<em>IAttribute Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIAttributeMapping(IAttributeMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Xml EObject</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 interpretting the object as an instance of '<em>Xml EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseXmlEObject(XmlEObject object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IJpa Data Source</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 interpretting the object as an instance of '<em>IJpa Data Source</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIJpaDataSource(IJpaDataSource object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>Jpa Data Source</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 interpretting the object as an instance of '<em>Jpa Data Source</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJpaDataSource(JpaDataSource object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting the object as an instance of '<em>IJpa Platform</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 interpretting the object as an instance of '<em>IJpa Platform</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseIJpaPlatform(IJpaPlatform object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpretting 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 interpretting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ public T defaultCase(EObject object) {
+ return null;
+ }
+} //JpaCoreSwitch
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/IJpaValidationMessages.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/IJpaValidationMessages.java
new file mode 100644
index 0000000000..7f3158dcc0
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/IJpaValidationMessages.java
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2007 Oracle. All rights reserved. This program and
+ * the accompanying materials are made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.validation;
+
+public interface IJpaValidationMessages
+{
+ public static final String BUNDLE = "jpa_validation";
+
+
+ public static final String PROJECT_NO_CONNECTION = "PROJECT_NO_CONNECTION";
+
+ public static final String PROJECT_INACTIVE_CONNECTION = "PROJECT_INACTIVE_CONNECTION";
+
+ public static final String PROJECT_NO_PERSISTENCE_XML = "PROJECT_NO_PERSISTENCE_XML";
+
+ public static final String PROJECT_MULTIPLE_PERSISTENCE_XML = "PROJECT_MULTIPLE_PERSISTENCE_XML";
+
+ public static final String PERSISTENCE_XML_INVALID_CONTENT = "PERSISTENCE_XML_INVALID_CONTENT";
+
+ public static final String PERSISTENCE_NO_PERSISTENCE_UNIT = "PERSISTENCE_NO_PERSISTENCE_UNIT";
+
+ public static final String PERSISTENCE_MULTIPLE_PERSISTENCE_UNITS = "PERSISTENCE_MULTIPLE_PERSISTENCE_UNITS";
+
+ public static final String PERSISTENCE_UNIT_UNSPECIFIED_MAPPING_FILE = "PERSISTENCE_UNIT_UNSPECIFIED_MAPPING_FILE";
+
+ public static final String PERSISTENCE_UNIT_NONEXISTENT_MAPPING_FILE = "PERSISTENCE_UNIT_NONEXISTENT_MAPPING_FILE";
+
+ public static final String PERSISTENCE_UNIT_INVALID_MAPPING_FILE = "PERSISTENCE_UNIT_INVALID_MAPPING_FILE";
+
+ public static final String PERSISTENCE_UNIT_DUPLICATE_MAPPING_FILE = "PERSISTENCE_UNIT_DUPLICATE_MAPPING_FILE";
+
+ public static final String PERSISTENCE_UNIT_UNSPECIFIED_CLASS = "PERSISTENCE_UNIT_UNSPECIFIED_CLASS";
+
+ public static final String PERSISTENCE_UNIT_NONEXISTENT_CLASS = "PERSISTENCE_UNIT_NONEXISTENT_CLASS";
+
+ public static final String PERSISTENCE_UNIT_INVALID_CLASS = "PERSISTENCE_UNIT_INVALID_CLASS";
+
+ public static final String PERSISTENCE_UNIT_DUPLICATE_CLASS = "PERSISTENCE_UNIT_DUPLICATE_CLASS";
+
+ public static final String ENTITY_MAPPINGS_MULTIPLE_METADATA = "ENTITY_MAPPINGS_MULTIPLE_METADATA";
+
+ public static final String PERSISTENT_TYPE_UNSPECIFIED_CLASS = "PERSISTENT_TYPE_UNSPECIFIED_CLASS";
+
+ public static final String PERSISTENT_TYPE_UNRESOLVED_CLASS = "PERSISTENT_TYPE_UNRESOLVED_CLASS";
+
+ public static final String ENTITY_NO_ID = "ENTITY_NO_ID";
+
+ public static final String PERSISTENT_ATTRIBUTE_UNSPECIFIED_NAME = "PERSISTENT_ATTRIBUTE_UNSPECIFIED_NAME";
+
+ public static final String PERSISTENT_ATTRIBUTE_UNRESOLVED_NAME = "PERSISTENT_ATTRIBUTE_UNRESOLVED_NAME";
+
+ public static final String PERSISTENT_ATTRIBUTE_INVALID_MAPPING = "PERSISTENT_ATTRIBUTE_INVALID_MAPPING";
+
+ public static final String TABLE_UNRESOLVED_SCHEMA = "TABLE_UNRESOLVED_SCHEMA";
+
+ public static final String TABLE_UNRESOLVED_NAME = "TABLE_UNRESOLVED_NAME";
+
+ public static final String JOIN_TABLE_UNRESOLVED_SCHEMA = "JOIN_TABLE_UNRESOLVED_SCHEMA";
+
+ public static final String VIRTUAL_ATTRIBUTE_JOIN_TABLE_UNRESOLVED_SCHEMA = "VIRTUAL_ATTRIBUTE_JOIN_TABLE_UNRESOLVED_SCHEMA";
+
+ public static final String JOIN_TABLE_UNRESOLVED_NAME = "JOIN_TABLE_UNRESOLVED_NAME";
+
+ public static final String VIRTUAL_ATTRIBUTE_JOIN_TABLE_UNRESOLVED_NAME = "VIRTUAL_ATTRIBUTE_JOIN_TABLE_UNRESOLVED_NAME";
+
+ public static final String COLUMN_UNRESOLVED_TABLE = "COLUMN_UNRESOLVED_TABLE";
+
+ public static final String VIRTUAL_ATTRIBUTE_COLUMN_UNRESOLVED_TABLE = "VIRTUAL_ATTRIBUTE_COLUMN_UNRESOLVED_TABLE";
+
+ public static final String VIRTUAL_ATTRIBUTE_OVERRIDE_COLUMN_UNRESOLVED_TABLE = "VIRTUAL_ATTRIBUTE_OVERRIDE_COLUMN_UNRESOLVED_TABLE";
+
+ public static final String COLUMN_UNRESOLVED_NAME = "COLUMN_UNRESOLVED_NAME";
+
+ public static final String VIRTUAL_ATTRIBUTE_COLUMN_UNRESOLVED_NAME = "VIRTUAL_ATTRIBUTE_COLUMN_UNRESOLVED_NAME";
+
+ public static final String VIRTUAL_ATTRIBUTE_OVERRIDE_COLUMN_UNRESOLVED_NAME = "VIRTUAL_ATTRIBUTE_OVERRIDE_COLUMN_UNRESOLVED_NAME";
+
+ public static final String JOIN_COLUMN_UNRESOLVED_TABLE = "JOIN_COLUMN_UNRESOLVED_TABLE";
+
+ public static final String VIRTUAL_ATTRIBUTE_JOIN_COLUMN_UNRESOLVED_TABLE = "VIRTUAL_ATTRIBUTE_JOIN_COLUMN_UNRESOLVED_TABLE";
+
+ public static final String VIRTUAL_ASSOCIATION_OVERRIDE_JOIN_COLUMN_UNRESOLVED_TABLE = "VIRTUAL_ASSOCIATION_OVERRIDE_JOIN_COLUMN_UNRESOLVED_TABLE";
+
+ public static final String JOIN_COLUMN_UNRESOLVED_NAME = "JOIN_COLUMN_UNRESOLVED_NAME";
+
+ public static final String VIRTUAL_ATTRIBUTE_JOIN_COLUMN_UNRESOLVED_NAME = "VIRTUAL_ATTRIBUTE_JOIN_COLUMN_UNRESOLVED_NAME";
+
+ public static final String VIRTUAL_ASSOCIATION_OVERRIDE_JOIN_COLUMN_UNRESOLVED_NAME = "VIRTUAL_ASSOCIATION_OVERRIDE_JOIN_COLUMN_UNRESOLVED_NAME";
+
+ public static final String JOIN_COLUMN_REFERENCED_COLUMN_UNRESOLVED_NAME = "JOIN_COLUMN_REFERENCED_COLUMN_UNRESOLVED_NAME";
+
+ public static final String VIRTUAL_ATTRIBUTE_JOIN_COLUMN_REFERENCED_COLUMN_UNRESOLVED_NAME = "VIRTUAL_ATTRIBUTE_JOIN_COLUMN_REFERENCED_COLUMN_UNRESOLVED_NAME";
+
+ public static final String VIRTUAL_ASSOCIATION_OVERRIDE_JOIN_COLUMN_REFERENCED_COLUMN_UNRESOLVED_NAME = "VIRTUAL_ASSOCIATION_OVERRIDE_JOIN_COLUMN_REFERENCED_COLUMN_UNRESOLVED_NAME";
+
+ public static final String GENERATED_VALUE_UNRESOLVED_GENERATOR = "GENERATED_VALUE_UNRESOLVED_GENERATOR";
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/JpaHelper.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/JpaHelper.java
new file mode 100644
index 0000000000..98f704f49e
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/JpaHelper.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.validation;
+
+import org.eclipse.core.resources.IResource;
+import org.eclipse.jpt.core.internal.IJpaEObject;
+import org.eclipse.jpt.core.internal.IJpaProject;
+import org.eclipse.jpt.core.internal.JpaCorePlugin;
+import org.eclipse.wst.validation.internal.operations.WorkbenchContext;
+
+public class JpaHelper extends WorkbenchContext
+{
+ IJpaProject getJpaProject() {
+ return JpaCorePlugin.getJpaProject(getProject());
+ }
+
+ @Override
+ public IResource getResource(Object obj) {
+ return ((IJpaEObject) obj).getResource();
+ }
+
+ /*
+ * This is used when no line number is set. We generally use line numbers.
+ * Therefore, when this is called, we will use the default location, i.e.
+ * null.
+ */
+ @Override
+ public String getLocation(Object object) {
+ return null;
+ }
+} \ No newline at end of file
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/JpaValidationMessages.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/JpaValidationMessages.java
new file mode 100644
index 0000000000..f3cf3de1d6
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/JpaValidationMessages.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2007 Oracle. All rights reserved. This program and
+ * the accompanying materials are made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution, and is
+ * available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jpt.core.internal.validation;
+
+import org.eclipse.jpt.core.internal.ITextRange;
+import org.eclipse.wst.validation.internal.core.Message;
+import org.eclipse.wst.validation.internal.provisional.core.IMessage;
+
+public class JpaValidationMessages
+ implements IJpaValidationMessages
+{
+ private static String[] DEFAULT_PARAMS = new String[0];
+
+ private static ITextRange DEFAULT_TEXT_RANGE =
+ new ITextRange() {
+ public int getLength() {
+ return 0;
+ }
+
+ public int getLineNumber() {
+ return 0;
+ }
+
+ public int getOffset() {
+ return 0;
+ }
+ };
+
+ public static IMessage buildMessage(
+ int severity, String messageId, Object targetObject) {
+ return buildMessage(severity, messageId, DEFAULT_PARAMS, targetObject);
+ }
+
+ public static IMessage buildMessage(
+ int severity, String messageId, String[] params, Object targetObject) {
+ return buildMessage(severity, messageId, params, targetObject, DEFAULT_TEXT_RANGE);
+ }
+
+ public static IMessage buildMessage(
+ int severity, String messageId, Object targetObject, ITextRange textRange) {
+ return buildMessage(severity, messageId, DEFAULT_PARAMS, targetObject, textRange);
+ }
+
+ public static IMessage buildMessage(
+ int severity, String messageId, String[] params, Object targetObject, ITextRange textRange) {
+ IMessage message = new Message(BUNDLE, severity, messageId, params, targetObject);
+ message.setLineNo(textRange.getLineNumber());
+ message.setOffset(textRange.getOffset());
+ message.setLength(textRange.getLength());
+ return message;
+ }
+
+
+ private JpaValidationMessages() {
+ super();
+ }
+}
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/JpaValidator.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/JpaValidator.java
new file mode 100644
index 0000000000..4f5b65a735
--- /dev/null
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/JpaValidator.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the terms of
+ * the Eclipse Public License v1.0, which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html.
+ *
+ * Contributors:
+ * Oracle - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.jpt.core.internal.validation;
+
+import java.util.Iterator;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.jobs.ISchedulingRule;
+import org.eclipse.jpt.core.internal.IJpaProject;
+import org.eclipse.wst.validation.internal.core.Message;
+import org.eclipse.wst.validation.internal.core.ValidationException;
+import org.eclipse.wst.validation.internal.operations.IWorkbenchContext;
+import org.eclipse.wst.validation.internal.provisional.core.IReporter;
+import org.eclipse.wst.validation.internal.provisional.core.IValidationContext;
+import org.eclipse.wst.validation.internal.provisional.core.IValidatorJob;
+
+public class JpaValidator implements IValidatorJob
+{
+ public ISchedulingRule getSchedulingRule(IValidationContext helper) {
+ // don't know what to return here. my guess is that we want to return
+ // the resource that is possibly being changed during our validation,
+ // and since many resources in the project may be changed during this
+ // validation, returning the project makes the most sense.
+ return ((IWorkbenchContext) helper).getProject();
+ }
+
+ public IStatus validateInJob(IValidationContext helper, IReporter reporter) throws ValidationException {
+ JpaHelper jpaHelper = (JpaHelper) helper;
+ IJpaProject jpaProject = jpaHelper.getJpaProject();
+
+ reporter.removeAllMessages(this);
+
+ for (Iterator stream = jpaProject.validationMessages(); stream.hasNext(); ) {
+ reporter.addMessage(this, (Message) stream.next());
+ }
+
+ return OK_STATUS;
+ }
+
+ public void cleanup(IReporter reporter) {
+ // TODO Auto-generated method stub
+ return;
+ }
+
+ public void validate(IValidationContext helper, IReporter reporter) throws ValidationException {
+ validateInJob(helper, reporter);
+ }
+}

Back to the top